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

C언어 연습문제 풀이 CH4 (1~3)

라이피 (Lypi) 2018. 5. 7. 23:27
반응형

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


1. 정수 n을 scanf_s()를 통해 읽어 들여 n이 음수가 아니면 0부터 n까지의 정수를 합산하고, n이 음수이면 n부터 0까지를 합산하는 프로그램.

#include <stdio.h>

int main() {

	int n, sum = 0;

	printf("하나의 정수를 입력하세요.: "); scanf_s("%d", &n);

	if (n >= 0) {
		for (int i = 0; i <= n; i++) {
			sum += i;
		}
		printf("0부터 %d까지의 합은 %d입니다. \n", n, sum);
	}
	else {
		for (int i = n; i <= 0; i++) {
			sum += i;
		}
		printf("%d부터 0까지의 합은 %d입니다. \n", n, sum);
	}
}


2.  두 수를 입력받아 그 사잇값의 합을 출력하고, 합이 천 미만이 될 때까지의 수들과 그 결과를 출력하는 프로그램을 작성하라. 

#include <stdio.h>

int main() {
	int input1, input2, sum = 0, m_sum = 0, line = 0;
	char ch = 'y';

	do {
		printf("첫번째 정수를 입력하세요. :"); scanf_s("%d", &input1);
		printf("두번째 정수를 입력하세요. :"); scanf_s("%d", &input2);

		if (input1 > input2) {
			input1 ^= input2;
			input2 ^= input1;
			input1 ^= input2;
		}

		for (int i = input1; i <= input2; i++) {
			sum += i;
			m_sum += i;

			printf("%d",i);
			if (m_sum + i + 1 > 1000) {
				printf(" = %d \n", m_sum);
				m_sum = 0;
				line = 0;
			} else {
				printf(" + ");
			}

			if (line == 5) {
				line = 0;
				printf("\n");
			}
		}


		printf("\n%d부터 %d 사이의 정수의 총합은 %d입니다. \n", input1, input2, sum);

		while (getchar() != '\n') {}

		printf("계속 하시려면 y나 Y를 입력하세요. \n"); scanf_s("%c", &ch, sizeof(char));
	} while (ch == 'y' || ch == 'Y');
}


3. 두 개의 정수를 입력받아 최대공약수를 출력하는 프로그램을 while문을 이용하여 작성하라.

#include <stdio.h>

int main() {
	int a, b, divide = 1, gcd = 1;

	printf("첫번째 정수를 입력하세요."); scanf_s("%d", &a);
	printf("두번째 정수를 입력하세요."); scanf_s("%d", &b);

	while (1) {
		if (a%divide == 0 && b%divide == 0) {
			gcd = divide;
		}

		if (divide >= a || divide >= b) {
			break;
		}

		divide++;
	}

	printf("%d와 %d의 최대공약수는 %d입니다. \n", a, b, gcd);

}


반응형