본문 바로가기

프로그래밍/C언어

쉽게 풀어쓴 C언어 Express 7장 Programming

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.2100사이에 있는 모든 소수를 찾는 프로그램을 작성하라. 정수가 소수가 되려면 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");
     }
}