프로그래밍/C언어

C언어콘서트 6장 프로그래밍 답/c언어콘서트 솔루션 6장

이번주에 2015. 4. 18. 13:56
반응형

1. 1부터 100까지의 자연수 중에서 3의 배수를 출력하여보자.

 

#include <stdio.h>  int main(void){  	int i;  	for(i=1; i<=100; i++) 	{ 		if(i%3==0) 		{ 		printf("%d", i); 		printf("\n"); 		}  	return 0; 	} }

2. 1부터 100까지의 자연수 중에서 3의 배수이면서 동시에 5의 배수인 숫자를 출력하여보자.

#include <stdio.h>  int main(void){  	int i;  	for(i=1; i<=100; i++) 	{ 		if(i%3==0 && i%5==0) 		{ 		printf("%d", i); 		printf("\n"); 		} 	} 	return 0; }
 

 

 

3. 반복문을 이용하여 화씨온도 0도부터 100도까지의 구간에 대하여 10도 간격으로 섭씨온도를 환산하는 표를 작성하여 보자.

#include <stdio.h>  int main(void){  	int i, c;  	for(i=1; i<=100; i++) 	{ 		if(i%10==0) 		{ 			c = (i - 32) / 1.8; 			printf("%d", c); 			printf("\n"); 		} 	}  	return 0; }

4. 1000만원을 연이율 7%로 저금하였을 경우에 몇 년만에 2배가 되는지를 계산하여보자. 단, 이자는 연말에 계산되며 복리식으로 계산한다. 즉 이자가 매년 연금에 합쳐진다.

#include <stdio.h>  int main(void){  	int i, money, num;  	money = 1000; 	num = 0; 	do 	{ 	money = money * 1.07; 		num++; 	}  	while(money <= 2000); 		printf("%d년 만에 2배가 됩니다\n", num);  	return 0; }

5. 중첩반복문을 사용하여서 다음과 같이 출력하는 프로그램을 작성하여보자.

#include <stdio.h>  int main(void){          int x, y, num;          printf("정수를 입력하시오: ");     scanf("%d", &num);              for(x=1; x<=num; x++)     {         for(y=1; y<=x; y++)        		printf("%d", y);       		printf("\n", x);     }      return 0;  }

 

 

6. 사용자로부터 일련의 데이터를 받아서 최솟값을 찾아보자. 일반적으로 최솟값은 반복을 이용하여 찾는다. 각 반복에서 현재의 최솟값과 사용자로부터 읽은 값을 비교한다. 만약 새로운 값이 현재의 최솟값보다 작으면 새로운 수가 최솟값이 된다. 여기서 데이터의 값은 음수가 될 수 없다고 가정한다. 만약 사용자가 음수를 입력하면 데이터의 입력을 끝내고 그때까지의 최솟값을 출력한다. 데이터는 10000을 넘을 수 없다고 가정한다.

#include <stdio.h>  int main(){       int num=0, min = 10001;      while(1) 	{ 		printf("데이터를 입력하시오(음수를 입력하면 종료): "); 		scanf("%d", &num);             		if(num=0) 		{ 		  			min = num;          }             else if(num < 0) break;       }       printf("최소값은 %d입니다\n", min);        	 return 0;  }  

7. 컴퓨터는 막대그래프를 그리는 데도 사용된다. 사용자로부터 1부터 50 사이의 숫자 10개를 입력받아서 숫자만큼의 별표를 출력하는 프로그램을 작성하여보자. 막대는 세로로 그려지게 된다.

#include <stdio.h>  int main(){     int  i, j, num;     i=1;     while(i <= 10)     {        printf("막대 #%d의 높이 : ",i);        scanf("%d",&num);         if (num >= 1 && num <= 50)        {           for(j=0; j < num; j++)           {              printf("*");           }            printf("\n");           i++;        }     }     return 0;  } 

8. 피타고라스의 정리는 직각삼각형에서 직각을 낀 두 변의 길이를 a, b라고 하고 빗변의 길이를 c라고 하면, a^2+b^2=c^2의 수식이 성립한다는 것이다. 각 변이 길이가 100보다 작은 삼각형 중에서 피타고라스의 정리가 성립하는 직각삼각형은 몇 개나 있을까? 3중 반복문을 이용하여 피타고라스의 정리를 만족하는 3개의 정수를 찾도록 한다.

#include <stdio.h>  int main(void){  	int a, b, c, cnt; 	cnt = 0;  	for(a=1; a<=100; a++) 	{ 		for(b=1; b<=100; b++) 		{ 			for(c=1; c<a+b && c<=100; c++) 			{ 				if(a*a+b*b==c*c); 				{ 					printf("a= %d, b=%d, c=%d\n", a, b, c); 					cnt++; 				} 			} 		} 	} 	printf("피타고라스의 정리를 만족하는 직각삼각형은 %d개\n", cnt);     return 0;  } 

9. 앞장에서 간단한 정수 계산기를 만들어본 적이 있다. 이 계산기 프로그램에서 메뉴를 추가하도록 한다. 다음과 같은 메뉴를 화면에 출력하고 사용자가 메뉴 중에서 하나를 선택할 때까지 반복을 계속한다. do...while 문을 사용하여 사용자가 적절한 선택을 했는지를 검사하도록 하여보자.

#include <stdio.h>   int main(void){  	int num, x, y;  	printf("************\n"); 	printf("1--Add\n"); 	printf("2--Substract\n"); 	printf("3--Multiply\n"); 	printf("4--Divide\n"); 	printf("5--Quit\n"); 	printf("************\n"); 	do 	{ 		printf(""); 		printf("연산을 선택하시오: "); 		scanf("%d", &num); 		 		switch(num){  		case 1: 			printf("두 수를 공백으로 분리하여 입력하시요: ");             scanf("%d %d", &x, &y);             printf("%d\n", x+y); 			break; 					 		case 2: 			printf("두 수를 공백으로 분리하여 입력하시요: ");             scanf("%d %d", &x, &y);             printf("%d\n", x-y); 			break;  		case 3: 			printf("두 수를 공백으로 분리하여 입력하시요: ");             scanf("%d %d", &x, &y);             printf("%d\n", x*y); 			break;  		case 4: 			printf("두 수를 공백으로 분리하여 입력하시요: ");             scanf("%d %d", &x, &y);             printf("%d\n", x/y); 			break;  		case 5: 			break; 		} 	} 	while(num!=1 && num!=2 && num!=3 && num!=4 && num!=5 );  	return 0; }

10. 2와 100 사이에 있는 모든 소수(prime number)를 찾는 프로그램을 작성하여보자. 소수는 1과 자기 자신 이외에는 약수를 가지지 않아야 한다. 즉, 2부터 시작하여 자기 자신 사이에 자기 자신을 제외하고 다른 약수가 하나라도 있으면 소수가 아니다. 약수는 % 연산자를 이용하여 검사할 수 있다. 즉, I가 5의 약수라면 I%5가 0이 된다.

#include <stdio.h>  int main(void){  	int i,j, k; 	k=0;  	for(i=1; i<=100; i++) 	{ 		for(j=2; j<=i; j++) 		{ 			if(i % j == 0) 			{ 				if(i>j) 					break; 				else 				printf("%d\n", i);							} 		}  	} 	return 0; }

 

반응형