본문 바로가기

Algorithm 문제 풀이/C

윤성우의 열혈 C 프로그래밍 chapter 7 문제 07 - 1

While문의 활용

문제 1)
프로그램 사용자로부터 양의 정수를 하나 입력 받아서, 그 수만큼 "Hello world!"를 출력하는 프로그램을 작성해보자. 
#include <stdio.h>

int main(void) {
	int n, i = 0;
	printf("양의 정수를 입력하세요 : ");
	scanf_s("%d", &n);
	while (i < n) {
		printf("Hello world!\n");
		i++;
	}
	return 0;
}

 

문제 2)
프로그램 사용자로부터 양의 정수를 하나 입력 받은 다음, 그 수만큼 3의 배수를 출력하는 프로그램을 작성해보자. 예를 들어서 5를 입력 받았다면, 3, 6, 9, 12, 15를 출력해야 한다.
#include <stdio.h>

int main(void) {
	int n, i = 1;
	scanf_s("%d", &n);
	while (i <= n) {
		printf("%d ", i * 3);
		i++;
	}
	return 0;
}

< 책 답안 - 후위증가를 이용하여 >

#include <stdio.h>

int main(void) {
	int num = 0, cnt = 0;
	printf("배수의 개수 : ");
	scanf_s("%d", &num);
	while (cnt++ < num)
		printf("%d ", 3 * cnt);
	return 0;
}

 

문제 3)
프로그램 사용자로부터 계속해서 정수를 입력 받는다. 그리고 그 값을 계속해서 더해 나간다. 이러한 작업은 프로그램 사용자가 0을 입력할 때까지 계속되어야 하며, 0이 입력되면 입력된 모든 정수의 합을 출력하고 프로그램을 종료시킨다.
#include <stdio.h>

int main(void) {
	int sum = 0;
	while (1) {
		int n;
		scanf_s("%d", &n);
		sum += n;
		if (n == 0)
			break;
	}
	printf("%d", sum);
	return 0;
}

 

< 책 답안 >

#include <stdio.h>

int main(void) {
	int total = 0;
	int num = 1;
	while (num != 0) {
		printf("정수 입력(0 to quit) : ");
		scanf_s("%d", &num);
		total += num;
	}
	printf("입력된 정수의 총 합 : %d \n", total);
	return 0;
}

※ 참고

n을 사용자로부터 입력 받고 'n이 0이 아니라면'이라는 반복문을 쓸 때는 n을 1로 초기화시키면 된다. 

 

문제 4)
프로그램 사용자로부터 입력 받은 숫자에 해당하는 구구단을 출력하되, 역순으로 출력하는 프로그램을 작성해보자.
#include <stdio.h>

int main(void) {
	int n, i = 9;
	scanf_s("%d", &n);
	while (i >= 1) {
		printf("%d * %d = %d\n", n, i, n * i);
		i--;
	}
	return 0;
}

 

문제 5)
프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족시켜야 한다.
"먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수만큼 정수를 입력 받는다."
"평균 값은 소수점 이하까지 출력한다."
#include <stdio.h>

int main(void) {
	int n;
	int i = 0;
	int num;
	double sum = 0, avg = 0;
	printf("몇 개의 정수를 입력하실건가요? : ");
	scanf_s("%d", &n);
	printf("%d개의 정수를 입력해주세요. : ", n);
	while (i < n) {
		scanf_s("%d", &num);
		i++;
		sum += num;
	}
	avg = (double)sum / n;
	printf("\n이 값들의 평균은 %f입니다.", avg);
	return 0;
}