문제 07-1 [while문의 활용]
- 프로그램 사용자로부터 양의 정수를 하나 입력 받아서, 그 수만큼 "Hello world!"를 출력하는 프로그램 작성


- 프로그램 사용자로부터 양의 정수를 하나 입력 받은 다음, 그 수만큼 3의 배수를 출력하는 프로그램을 작성
예를 들어서 5를 입력받았다면, 3 6 9 12 15를 출력


내가 작성한 코드는 원하는 출력의 역순으로 나온다.
#include <stdio.h>
int main()
{
int num=0, cnt=0;
printf("배수의 갯수: ");
scanf("%d", &num);
while(cnt<num)
{
cnt++;
printf("%d ", 3*cnt);
}
return 0;
}
순차적으로 출력하려면 변수를 하나 더 설정하여 증가하는 형태로 만들면 된다.
0을 곱하면 0이 나와버리니 비교연산 후에 cnt값을 증가시키고 곱 연산을 진행해야한다.
- 프로그램 사용자로부터 계속해서 정수를 입력 받고, 그 값을 계속해서 더해 나가는 프로그램 작성
이러한 작업은 프로그램 사용자가 0을 입력할 때까지 계속되어야 하며, 0이 입력되면 입력된 모든 정수의 합을 출력하고 프로그램 종료


- 프로그램 사용자로부터 입력 받은 숫자에 해당하는 구구단을 출력하되, 역순으로 출력하는 프로그램 작성


- 프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족
먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수만큼 정수를 입력 받는다.
평균 값은 소수점 이하까지 계산해서 출력한다.


while문에서 cnt 변수의 값을 전부 감소시키고 나면 0이 되어 평균을 구할 수 없는 문제가 발생해서, cnt값을 저장시킬 수 있는 변수를 하나 더 선언(cnt2)하여 문제를 해결했다.
#include <stdio.h>
int main(void)
{
int total=0, i=0;
int num, input;
printf("정수 몇 개를 입력하실건가요? ");
scanf("%d", &num);
while(i<num)
{
i++;
printf("정수 입력: ");
scanf("%d", &input);
total += input;
}
printf("평균: %f \n", (double)total/num);
return 0;
}
i라는 변수를 선언하여, i의 값을 증가시키는게 오히려 간결한 코드가 된다.
반복문에서는 감소연산을 지양하는 건가 싶기도 하고...
형변환을 시켜줌으로써 double형으로 선언하지 않아도 되는 방법도 있다.
문제 07-2 [while문의 중첩]
- 프로그램 사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성
정수는 반드시 1이상이어야 하며, 만약 1미만의 수가 입력되는 경우에는 이를 입력으로 인정하지 않고 재 입력을 요구
그래서 결국 1이상의 정수 5개를 모두 입력 받을 수 있도록 프로그램을 완성


문제에서 1미만의 수라 했으니 num==0이 아닌 num<=0으로 했어야한다.
- 아래의 출력을 보이는 프로그램 작성
a
b a
b b a
b b b a
b b b b a
참고로 총 5행에 걸쳐서 출력이 이루어지고, 행이 더해질 때마다 b문자의 수가 증가한다는 특징을 기반으로 while문의 중첩을 구성


문제 07-4 [for문의 활용]
- 프로그램 사용자로부터 두 개의 정수를 입력 받아서, 두 정수를 포함하여 그 사이에 존재하는 정수들의 합을 계산해서 출력하는 프로그램을 작성
예를 들어서 3과 5가 입력되면, 3+4+5의 결과를 출력
문제를 간단히 하기 위해서, 첫 번째 입력되는 정수보다 두 번째 입력되는 정수가 더 커야 한다는 조건 추가


- 다음 수식인 계승을 계산하는 프로그램을 작성
n! = 1×2×3×4×...×n
프로그램 사용자로부터 n에 해당하는 정수를 입력

