" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: 책 알려주는 남자

8장 Summary


square() 함수 앞에 적어주는 int는 square() 함수가 int 형의 데이터를 반환한다는 의미이다.

square() 함수를 호출할 때 전달하는 데이터를 함수의 반환형 이라고 한다.

square() 함수에서 외부로 전달되는 데이터를 받는 변수를 매개변수 라고 한다.

함수를 크게 분류하면 프로그래머가 작성하는 사용자 정의 함수와 컴파일러에서 지원되는 라이브러리 함수로 나눌 수 있다.

함수 몸체는 중괄호 기호로 시작하고 중괄호 기호로 종료한다. 

함수가 반환할 수 있는 값의 개수는 매개변수의 개수 이다.

함수가 값을 반환하지 않는다면 반환형은 void 반환형 으로 정의되어야 한다.


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

7장 Programming


1.

(a)

#include <stdio.h> //while 


int main()

{

int i=1, sum=0;

while(i<=100)

{

if(i%3==0)

sum = sum + i;

i++;

}

printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.", sum);

return 0;

}


(b)

#include <stdio.h> // for


int main()

{

int i, sum=0;

for(i=1; i<=100; i++)

{

if(i%3==0)

sum = sum + i;

}

printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.", sum);

return 0;

}


(c)

#include <stdio.h> // do..while

int main()

{

int i=1, sum=0;

do

{

if(i%3==0)

sum = sum + i;

i++;

} while(i<=100);

printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.", sum);

return 0;

}


2.

#include <stdio.h>


int main()

{

int x, sum;

while ( scanf("%d", &x) !=EOF)

{

sum = sum + x;

}

printf("정수의 합은 %d입니다.", sum);

return 0;

}


3.

#include <stdio.h>


int main()

{

int x, y, z;

for (x=1; x<8; x++)

{

for (y=0; y<8-x; y++)

printf(" ");

for (z=0; z<x; z++)

printf("*");

printf("\n");

}

return 0;

}


4.

#include <stdio.h>


int main()

{

int x,y,z;

printf("정수를 입력하시오: ");

scanf("%d", &x);

for(y=1; y<=x; y++)

{

for (z=1; z<=y; z++)

printf("%d", z);

printf("\n");

}

return 0; 

}


5.

#include <stdio.h>


int main()

{

int x, y;

printf("카운터의 초기값을 입력하시오 :");

scanf("%d", &x);

for (y=x; y>=1; y--)

printf("%2d", y);

printf("(경고 벨소리)%c", '\a'); 

}


6.

#include <stdio.h>


int main()

{

int x, y, z;

char c;

printf("**************\n");

printf("A---- Add\n");

printf("S---- Subtract\n");

printf("M---- Multiply\n");

printf("D---- Divide\n");

printf("Q---- Quit\n");

printf("**************\n");

do

{

printf("연산을 선택하시오 : ");

scanf("%c", &c);

if(c=='Q')

break;

printf("두수를 공백으로 분리하여 입력하시오: ");

scanf("%d %d", &x, &y);

fflush(stdin);

switch(c)

{

case 'A': 

z=x+y;

printf("연산의 결과는 %d입니다\n", z); break;

case 'S':

z=x-y;

printf("연산의 결과는 %d입니다\n", z); break;

case 'M':

z=x*y;

printf("연산의 결과는 %d입니다\n", z); break;

case 'D':

z=x/y;

printf("연산의 결과는 %d입니다\n", z); break;

}

} while(1);

return 0;


7.

#include <stdio.h>


int main()

{

int x, y;

for(x=2; x<100; x++)

{

for (y=2; x>y; y++)

{

if(x%y == 0)

break;

}

if (x==y)

{

printf("%d ", x);

}

}

return 0;

}

<참고 : is_prime 함수이용한 소수판별기>

#include <stdio.h>


int is_prime(int);

int get_integer(void);


main()

{

int n, result;

n = get_integer();

result = is_prime(n);

if (result == 1)

printf("%d은 소수입니다.\n", n);

else

printf("%d은 소수가 아닙니다.\n", n);

return 0;

}


int get_integer(void)

{

int n;

printf("정수를 입력하시오: ");

scanf("%d", &n);

return n;

}


int is_prime(int n)

{

int divisors = 0, i;

for (i=1; i<=n; i++)

{

if (n%i == 0)

divisors++;

}

return (divisors == 2);

}

 

8.

#include <stdio.h>

int main()
{
 int x,y;
 
 while(1)
 {
  printf("막대의 높이 (종료: -1): ");
  scanf("%d", &x);
  
  if(x==-1)
   break;
  for(y=1; y<=x; y++)
  { 
   printf("*");
  }
  printf("\n");
 }  
 return 0;
}

9.

#include <stdio.h> //선if 후계산

int main()
{
 int x, sum=0;
 
 for(x=1; ; x++)
 {
  if(sum>10000)
   break; 
  else
   sum = sum + x;
 }
 printf("1부터 %d까지의 합은 %d입니다.", x-1-1, sum-(x-1));
}

또는

#include <stdio.h> // 선계산 후if, 가장 나은 방법

int main()
{
 int x, sum=0;
 
 for(x=1; ; x++)
 {
  sum = sum + x;
  
  if(sum>10000)
   break; 
 }
 printf("1부터 %d까지의 합은 %d입니다.", x-1, sum-x);
}

또는

#include <stdio.h>

int main()
{
 int x=0, sum=0;
 
 while(1)
 {
  sum = sum + x;
  
  if(sum>10000)
   break; 
   x++;
 }
 printf("1부터 %d까지의 합은 %d입니다.", x-1, sum-x);
}

 

10.

#include <stdio.h>

int main()
{
 int r, n, i, result=1;
 
 printf("실수의 값을 입력하시오: ");
 scanf("%d", &r);
 printf("거듭제곱횟수를 입력하시오: ");
 scanf("%d", &n);
 
 for(i=1; i<=n; i++)
  result = result *r;
 
 printf("결과값은 %d", result);
}

 

11.

#include <stdio.h>

int main()
{
 int i, n, result=0;
 
 printf("n의 값을 입력하시오: ");
 scanf("%d", &n);
 
 for (i=1; i<=n; i++)
  result = result + i*i;
  
 printf("계산값은 %d입니다.", result);
}

 

12.

#include <stdio.h> // a 출력방법

int main()
{
 int a=0, b=1, c, i, n;
 
 printf("몇 번째 항까지 구할까요? ");
 scanf("%d", &n);
 
 for(i=0; i<=n; i++)
 {
  printf("%d ", a);
  c=a+b;
  a=b;
  b=c;
 }
}

또는

#include <stdio.h> // c 출력방법

int main()
{
 int a=0, b=1, c, i, n;
 
 printf("몇 번째 항까지 구할까요? ");
 scanf("%d", &n);
 
 printf("%d %d ", a, b);
 for(i=1; i<n; i++)
 {
  c=a+b;
  printf("%d ", c);
  a=b;
  b=c;
 }
}

 

13.

#include <stdio.h>

int main()
{
 int n, r, i, result=1;
 
 printf("n의 값: ");
 scanf("%d", &n);
 printf("r의 값: ");
 scanf("%d", &r);
 
 for(i=n; i>=n-r-1; i--)
  result = result*i;
  
 printf("순열의 값은 %d입니다.", result);
}

 

14.

 #include <stdio.h>


int main()

{

int i=1, n, x;

printf("정수를 입력하시오: ");

scanf("%d", &n);

do

{

x = n/i%10;

printf("%d", x);

i = i*10;

} while(i<n);

return 0;

}

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

7장 Exercise


1.
①조건식의 값이 1일 때만 참으로 간주한다.
    -> 조건식이 0이 아닌 양의 정수는 모두 참이다.
②반복루프가 중첩된 경우, break는 하나의 반복루프만 벗어날 수 있다(O)
③do..while문에서 조건식의 값이 거짓이면 한 번도 수행되지 않는다.
    -> 무조건 한 번은 실행하고 조건을 검사한다.
④for 문에서 초기식, 조건식, 증감식이 전부 비어 있으면 안 된다.
    -> 있을 수는 있으나 무한루프가 발생된다.
⑤for 문 안에 다른 for 문이 들어갈 수 있다(O)


2. ①, ③, ④


3. 0번
break문이 printf문보다 앞서기 때문에 출력하기 전에 루프에서 빠져나와서 한 번도 출력되지 않는다. 만약 printf문이 break문보다 앞선다면 x=5일 때, 한 번 출력되고 루프에서 빠져나온다.


4.

(a)     (b)    (c)     (d)    (e) *********    (f) 54321
0       0      0      10
3       3      2       9
6       6      4       8
9       9      6       ...
                8       2
                         1
                         0


5.

(a)

int i=10;
while(i>=0)
{
printf("%d\n", i);
i--;
}

(b)

int i;
for(i=10; i>=0; i-=3)
{
printf("%d\n", i);
}


6.    (a)11    (b)10


7.

(a) 기초식, 조건식, 증감식 중 증감식이 빠져있다. 증감식이 빠지면 무한루프가 발생한다. %d를 추가해야한다.

(b) 조건식과 증감식이 합쳐져 있다. 합쳐진 증감식은 조건식과 합쳐도 되고 그렇지 않아도 괜찮다. %d를 추가해야한다. while 구문에 ;를 삭제해야한다.

(c) i-- 를 i++ 로 바꾸어야 한다.

(d) 없음

(e) 기초식을 지정해주어야 무한루프가 발생하지 않는다.


8.

(a)

#include <stdio.h>


int main()

{

int i, sum;

for(i=1; i<=30; i++)

sum = sum + i*i +1;

printf("%d\n", sum);

return 0;

}


(b)

#include <stdio.h>


int main()

{

int i, j, sum;

for(i=10; i<=30; i++)

{

for(j=0; j<=5; j++)

sum = sum + i*j;

}

printf("%d\n", sum);

return 0;

}



블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,

 6장 Programming

1.

#include <stdio.h>


int main(void)

{

char ch;

printf("문자를 입력하시오: ");

scanf("%c", &ch);

switch(ch)

{

case 'a': 

case 'e': 

case 'o': 

case 'i': 

case 'u': printf("모음입니다\n"); break;

default: printf("자음입니다\n"); break; 

}

return 0;

}

2.

#include <stdio.h>


int main(void)

{

int x,y;

printf("정수를 입력하시오: ");

scanf("%d", &x);

printf("정수를 입력하시오: ");

scanf("%d", &y); 

if( x%y==0)

printf("약수입니다");

else

printf("약수가 아닙니다");

 

return 0;

}

3.

#include <stdio.h>


int main(void)

{

int x, y, z;

printf("3개의 정수를 입력하시오:");

scanf("%d %d %d", &x, &y, &z);

if(x>y)

if(x>z)

printf("%d", x);

else 

printf("%d", z);

else if (y>z)

printf("%d", y);

else 

printf("%d", z);

return 0;

}

4.

#include <stdio.h>
#include <time.h>
int main(void)
{
int user, com;
srand((int)time(NULL));
printf("선택하시오 (1:가위 2: 바위 3: 보)");
scanf("%d", &user);
com = rand() % 3 + 1;
if(user == 1)
{
if (com == 1)
printf("비겼음");
else if (com ==2)
printf("컴퓨터는 바위를 선택함. 컴퓨터 승");
else 
printf("컴퓨터는 보를 선택함. 사용자 승");
}
if(user == 2)
{
if (com == 1)
printf("컴퓨터는 바위를 선택함. 사용자 승");
else if (com ==2)
printf("비겼음");
else 
printf("컴퓨터는 보를 선택함. 컴퓨터 승");
}
if(user == 3)
{
if (com == 1)
printf("컴퓨터는 가위를 선택함. 컴퓨터 승");
else if (com ==2)
printf("컴퓨터는 바위를 선택함. 사용자 승");
else 
printf("비겼음");
}
return 0;
}

5.

#include <stdio.h>

int main(void)
{
int x, y;
printf("키를 입력하시오: ");
scanf("%d", &x);
printf("나이를 입력하시오: ");
scanf("%d", &y);
if (x>=140 && y>=10)
printf("타도 좋습니다");
else
printf("죄송합니다");
 
return 0;
}

6.

#include <stdio.h>

int main(void)
{
int x;
printf("월 번호를 입력하시오(1-12): ");
scanf("%d", &x);
switch(x)
{
case 1: printf("Jan"); break;
case 2: printf("Feb"); break;
case 3: printf("Mar"); break;
case 4: printf("Apr"); break;
case 5: printf("May"); break;
case 6: printf("Jun"); break;
case 7: printf("Jul"); break;
case 8: printf("Aug"); break;
case 9: printf("Sep"); break;
case 10: printf("Oct"); break;
case 11: printf("Nov"); break;
case 12: printf("Dec"); break;
}
return 0;
}

7.

#include <stdio.h>

int main(void)
{
int h, w, x;
printf("체중과 키를 입력하시오(키, 체중): ");
scanf("%d %d", &h, &w);
x = (h-100)*0.9;
if(w>x)
printf("과체중입니다");
else if (w=x)
printf("평균입니다");
else
printf("저체중입니다");
 
return 0;
}

8.

#include <stdio.h>

int main(void)
{
int x, y;
printf("현재 시간과 나이를 입력하시오(시간, 나이): ");
scanf("%d %d", &x, &y);
if (x < 17)
{
if (y > 12 && y < 65)
printf("요금은 34000원입니다.");
else
printf("요금은 25000원입니다.");
}
else
printf("요금은 10000원입니다.");
return 0;

}

9.

#include <stdio.h>

int main(void)
{
double x, y;
printf("x의 값을 입력하시오: ");
scanf("%lf", &x);
if (x <= 0)
{
y=x*x*x*-9*x+2;
printf("f(x)의 값은 %lf", y);
}
else if (x>0)
{
y=7*x+2;
printf("f(x)의 값은 %lf", y);
}
else
printf("잘못 입력하셨습니다."); 

return 0;

}

10.

#include <stdio.h>

int main(void)
{
double x,y;
printf("x,y의 값을 입력하시오: ");
scanf("%lf %lf", &x, &y);
if (x>0 && y>0)
printf("1사분면");
else if (x>0 && y<0)
printf("2사분면");
else if (x<0 && y<0)
printf("3사분면");
else if (x<0 && y>0)
printf("4사분면");
else if (x==0 && y!=0)
printf("y좌표");
else if (x!=0 && y==0)
printf("x좌표");
else if (x==0 && y==0)
printf("원점");
else
printf("잘못 입력하셨습니다.");
return 0;

}

11.

#include <stdio.h>

int main(void)
{
char x;
printf("문자를 입력하시오 : ");
scanf("%c", &x);
if (x=='R')
printf("Rectangle");
else if (x=='T')
printf("Triangle");
else if (x=='C')
printf("Circle");
else
printf("Unknown");
return 0;

}


또는

#include <stdio.h>

int main(void)
{
char x;
printf("문자를 입력하시오 : ");
scanf("%c", &x);
switch(x)
{
case 'R': printf("Rectangle"); break;
case 'T': printf("Triangle"); break;
case 'C': printf("Circle"); break;
defalut: printf("Unknown"); break;
}

  return 0;

}


블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,