6주차 과제

* 양의 정수를 인수로 넘겨 받아서 팩토리얼 값을 계산하고 그 결과값을 return 해 주는 함수를 작성하세요. (함수의 입력값과 출력값이 모두 정수)
* 위의 팩토리얼 함수를 이용하여 다음과 같은 프로그램을 작성하세요. 단, 반드시 무한루프와 continue 문장, break 문장을 모두 포함해야 합니다.
  1. 양의 정수를 입력하라는 안내문을 출력하고, 정수를 입력 받음
  2. 입력한 수가 음수이면 잘못 입력했다는 안내문을 출력하고 1번으로 돌아가서 다시 입력 받음
  3. 입력한 수가 양수이면 팩토리얼 함수를 이용하여 팩토리얼 계산 결과를 출력하고 앞의 1번부터 다시 반복함 (무한루프)
  4. 입력한 수가 0이면 반복을 멈추고 프로그램을 끝냄

* 모든 입출력은 팩토리얼 함수가 아닌 main 함수에서 이루어지도록 하세요.




#include <stdio.h>

factorial(int a)       //팩토리얼 연산을 하는 함수 

  
  int b=1;
  int n;
  
  for(n=1;n<=a;n++)    //팩토리얼 함수에 입력된 수 a이하의 숫자 1~n   
  {b*=n;}              //b에 모든 n 의 값을 곱한다. 
  a=b;                 //b의 값은 n!이 되고 그 값을 a에 대입한다. 
  return  a;           //함수 결과를 반환한다. 
  
}


main()                 //입출력이 포함된 main 함수 
{   
    int c;
    int d;


while(1)          //조건식의 값이 0이 아님으로 무한루프이다. 
    {
   
printf("양의 정수를 입력해 주세요:\n");                  //안내문 
    scanf("%d",&c);                                          //정수를 입력받음 
    
    //입력 받은 수가 음수일 때 
if(c<0)
{printf("양의 정수가 아닙니다 다시 입력해주세요!\n");    
     continue;}                                              //안내문을 출력 후 다시 반목문을 실행 
    
//입력 받은 수가 양수일 때 
if(c>0)
{d=factorial(c);                                         //양의 정수 인수 c를 넘겨받아 팩토리얼을 계산 
printf("팩토리얼값은 %d입니다.\n",d);
continue;}                                               //안내문을 출력 후 다시 반목문을 실행 

//입력 받은 수가 0일 때 
if(c==0)
{printf("0을 입력하셨습니다. 프로그램이 종료됩니다.\n");
break;}    //반복문을 빠져나간다. 

}
 
    
   
}

No comments: