1.1부터 100사이의 모든 3의 배수의 합을 계산하여 출력하는 프로그램을 다음의 3가지 반복구조를 사용하여 작성하라.
1-1.while
#include <stdio.h>
void main()
{
int i=1,sum=0;
while(i<=100)
{
if(i%3==0)
sum=sum+i;
i++;
}
printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.\n",sum);
}
1-2.for
#include <stdio.h>
void main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
if(i%3==0)
sum=sum+i;
}
printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.\n",sum);
}
1-3.do...while
#include <stdio.h>
void main()
{
int i=1,sum=0;
do
{
if(i%3==0)
sum=sum+i;
i++;
}while(i<=100);
printf("1부터 100사이의 모든 3의 배수의 합은 %d입니다.\n",sum);
}
2.반복 루프는 파일의 끝을 만날 때까지 자료를 처리하는 데 많이 사용한다. 표준 입력에서는 사용자가 ctrl+z를 입력하면 파일의 끝으로 간주한다. scanf()가 ctrl+z를 만나며 EOF를 반환한다. 사용자가 ctrl+z를 누르기 전까지 입력한 정수의 합을 계산하여 출력하는 프로그램을 작성하여 테스트하라.
#include <stdio.h>
void main()
{
int sum=0,num,count=0;
printf("정수를 입력하시오:");
while(scanf("%d",&num)!=EOF)
{
sum=sum+num;
count=count+1;
}
printf("정수 %d개의 합은 %d입니다.\n",count,sum);
printf("정수 %d개의 평균은 %.2f입니다.\n",count,(double)sum/count);
}
3.반복 루프를 사용하여 다음과 같은 패턴을 출력하는 프로그램을 작성하라.
#include <stdio.h>
void main()
{
int x,y,z;
for(x=0;x<7;x++)
{
for(y=0;y<7-x;y++)
printf(" ");
for(z=0;z<=x;z++)
printf("*");
printf("\n");
}
}
4.중첩 반복문을 사용하여서 다음과 같이 출력하는 프로그램을 작성하여 보자.
#include <stdio.h>
void main()
{
int x,y,input;
printf("정수를 입력하시오:");
scanf("%d",&input);
for(x=1;x<=input;x++)
{
for(y=1;y<=x;y++)
printf("%d",y);
printf("\n");
}
}
5.가끔은 일정한 시간 동안 아무 일도 하지 않으면서 시간을 지연시킬 목적으로 반복문을 사용하기도 한다. 사용자에게서 하나의 수를 입력받아서 변수에 저장한다. 반복문을 사용하여 이 변수의 값을 1씩 감소시키면서 이 변수의 값이 0이 될 때까지 반복한다. 반복이 끝나면 벨소리를 낸다.
#include <stdio.h>
void main()
{
int x,input;
char beep='\a';
printf("카운터의 초기 값을 입력하시오:");
scanf("%d",&input);
for(x=input;x>0;x--)
printf("%2d",x);
printf("(경고 벨소리)%c\n",beep);
}
6.앞장에서 간단한 정수 계산기를 만들어본 적이 있다. 이 계산기 프로그램에 메뉴를 추가하도록 한다. 다음과 같은 메뉴를 화면에 출력하고 사용자가 메뉴 중에서 하나를 선택할 때까지 반복을 계속한다.
#include <stdio.h>
void main()
{
int num1,num2,result;
char ch;
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",&ch);
fflush(stdin);
if(ch=='Q')
break;
printf("두수를 공백으로 분리하여 입력하시오:");
scanf("%d %d",&num1,&num2);
fflush(stdin);
switch(ch)
{
case 'A':
result=num1+num2;
printf("연산의 결과는 %d입니다.\n",result);break;
case 'S':
result=num1-num2;
printf("연산의 결과는 %d입니다.\n",result);break;
case 'M':
result=num1*num2;
printf("연산의 결과는 %d입니다.\n",result);break;
case 'D':
result=num1/num2;
printf("연산의 결과는 %d입니다.\n",result);break;
}
}while(1);
}
7.2와 100사이에 있는 모든 소수를 찾는 프로그램을 작성하라. 정수가 소수가 되려면 1과 자기 자신만을 약수로 가져야 한다.
#include <stdio.h>
void main()
{
int i,num,count=0;
int prime=1;
for(num=2;num<100;num++)
{
prime=1;
for(i=2;i<num;i++)
{
if(num%i==0)
prime=0;
}
if(prime)
{
printf("%5d",num);
count++;
if(count%5==0)
printf("\n");
}
}
}
8.컴퓨터는 막대 그래프를 그리는 데도 사용된다. 사용자로부터 1부터 50사이의 숫자를 입력받아서 숫자만큼의 별표를 출력하는 프로그램을 작성하라. 막대는 세로로 그려지게 된다.
#include <stdio.h>
void main()
{
int i,input;
while(1)
{
printf("막대의 길이(종료:-1):");
scanf("%d",&input);
if(input==-1)
break;
for(i=0;i<input;i++)
{
printf("*");
}
printf("\n");
}
}
'프로그래밍 > C언어' 카테고리의 다른 글
시간을 지연시켜 화면에 출력하는 명령어 (0) | 2017.09.20 |
---|---|
화면을 지우는 DOS명령어 (0) | 2017.09.20 |
난수중 홀수만 출력하기 (0) | 2017.09.20 |
최소값 구하기 (0) | 2017.09.20 |
값을 무한입력받다 특정값이 나오면 멈추는 코드 (0) | 2017.09.20 |