연재 완료/C Lang 예제코드 모음

C언어 실습문제 풀이 CH4 (1~8)

라이피 (Lypi) 2018. 5. 5. 18:44
반응형

문제 출처 : YES C (정보공학연구소/생능출판사)



1. 사용자에게 나이를 입력받아 18세 미만이면 "you are a minor.", 이상이면 "you are not a minor."를 출력하는 프로그램.

#include <stdio.h>

int main()
{
	int age;
	
	printf("나이를 입력하세요 : "); scanf_s("%d", &age);

	printf("(age = %d) : %s \n", age, age >= 18 ? "You are not a minor" : "you are a minor");
}


2. 입력받은 숫자가 홀수인지 짝수인지 출력하는 프로그램.

#include <stdio.h>

int main()
{
	int num;
	
	printf("숫자를 입력하세요 : "); scanf_s("%d", &num);
	printf("입력하신 %d는 %s입니다. \n", num, num%2 == 0 ? "짝수" : "홀수");
}


3. 입력받은 수가 10이면 1~10, 20이면 11~20, 30이면 21~30까지의 합을 출력하는 프로그램을 switch-case문을 이용해서 작성하라.

#include <stdio.h>

int main()
{
	int input, sum = 0;

	do {
		printf("10,20,30 중 하나를 입력하세요. : "); scanf_s("%d", &input);
		if (input % 10 != 0) { printf("잘못 입력하셨습니다. 다시 입력해주세요. \n"); }
		while (getchar() != '\n');
	} while (input % 10 != 0);

	switch (input) {
		case 10:
			for (int i = 1; i <= input; i++) { sum += i; } 
			printf("1부터 10까지의 합은 %d 입니다.", sum);
			break;
		case 20:
			for (int i = 11; i <= input; i++) { sum += i; } 
			printf("11부터 20까지의 합은 %d 입니다.", sum);
			break;
		case 30:
			for (int i = 21; i <= input; i++) { sum += i; } 
			printf("21부터 30까지의 합은 %d 입니다.", sum);
			break;
	}

	return 0;

}


4. while문을 이용하여 2의 20승을 구하는 프로그램을 작성하라.

#include <stdio.h>

int main()
{
	int n = 1, result = 1;

	while (n <= 20)
	{
		result *= 2;	
		n++;
	}

	printf("2의 20승은 %d입니다.", result);
}


5. 임의 개의 수를 읽어 들여 최대값과 최소값 및 최대값과 최소값의 차를 구하는 프로그램을 while문을 포함하여 작성하라. (순서도 작성해볼것)

#include <stdio.h>

int main()
{
	// ※변수 선언
	int num = 1, input, max, min;
	char conti = 'y';

	do
	{	// ※입력받기
		printf("%d번째 수를 입력하세요:", num); scanf_s("%d", &input);

		// ※첫번째로 입력받은 수 일 때
		if (num == 1) { 
			max = input; min = input;
		} else if (num >= 2) { // ※첫번째로 입력받은 수가 아닐 때
			input > max ? max = input : 0;
			input < min ? min = input : 0; 

			do {
				while (getchar() != '\n');
				//계속 입력받을지 확인
				printf("계속 입력하시겠습니까? (y,n)"); scanf_s("%c", &conti, sizeof(char));
				if (conti != 'Y' && conti != 'y' && conti != 'N' && conti != 'n') {
					printf("잘못 입력하셨습니다. \n");
				}
			} while (conti != 'Y' && conti != 'y' && conti != 'N' && conti != 'n');
		}
		
		num++;

	} while (conti == 'y' || conti == 'Y');

	printf("입력하신 수 중 가장 큰 수는 %d, 가장 작은 수는 %d, 두 수의 차이는 %d 입니다. \n", max, min, max - min);

	return 0;
}

6. -1^2+2^2-3^2+... + 100^2의 합을 구하는 프로그램을 while문을 이용하여 작성하라. (순서도 작성해볼것)
#include <stdio.h>

int main()
{
	int i = 1, line = 0, sum = 0;

	while (i <= 100)
	{
		if(i%2 == 0) {
			sum += i*i; printf(" +%5d", i*i);
		} else {
			sum -= i * i; printf(" -%5d", i*i);
		}

		i++; line++;

		if (line == 10) { 
			line = 0; printf("\n"); 
		}
	}
	
	printf(" = %d 입니다. \n", sum);
}


7. while문을 이용하여 -50에서 1까지의 수를 출력하는 프로그램을 작성하라. 

(한줄에 5개씩 표시하고 수와 수 사이는 탭만큼 띄워라)

#include <stdio.h>

int main()
{
	int i = -50, line = 0;

	while (i <= 1)
	{
		printf("%d\t",i);
		line++;
		
		if (line == 5) {
			line = 0;
			printf("\n");
		}
		i++;
	}
}

8. 100부터 1까지의 수 중에서 짝수만을 출력하는 프로그램을 for문을 이용해 작성하라.

#include <stdio.h>

int main()
{
	int line = 0;

	for (int i = 100; i > 0; i--) {
		if (i % 2 == 0) { 
			printf("%3d\t", i);
			line++;
		}
		if (line == 10) {
			line = 0;
			printf("\n");
		}
	}
}


반응형