본문 바로가기
IT/프로그래밍

문제풀이 중심의 c언어 연습 6장 문제 풀이 해설

by nutrient 2021. 5. 1.
728x90
728x170

 

c언어 연습 (문제풀이 중심의) 6장 해설 및 답지, 문제풀이

6-1. 주어진 코드를 while문 do while문을 사용해서 나타내도록 수정
//while문 사용
#include <stdio.h>
 
int main(void) {
 
	int i = 0;
 
	do {
		printf("%d\n", i);
		i++;
	} while (i < 10);
 
	return 0;
}
//do while문 사용
#include <stdio.h>
 
int main(void) {
 
	int i = 0;
 
	while (i < 10) {
		printf("%d\n", i);
		i++;
	}
 
	return 0;
}

 

 

 

딱 2년 안에 무조건 돈 버는 부동산 투자 시크릿 PREVIEW

책 "딱 2년 안에 무조건 돈 버는 부동산 투자 시크릿"을 미리 보기로 조금 읽어보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 책 딱 2년 안에 무조건 돈 버는 부동산 투자 시크릿을 구매

tistorysolution.tistory.com

6-2. 주어진 코드를 break문을 사용하지 않도록 수정
#include <stdio.h>
 
int main(void) {
 
	int count = 0;
	char ch = 'a';
 
	while ((ch = getchar()) && (ch != 'Q')) {
		count++;
		putchar(ch);
	}
 
	return 0;
}

 

6-3. 주어진 코드를 continue문을 사용하지 않도록 수정
#include <stdio.h>
 
int main(void) {
	
	int i = -10;
	int n = 20;
	int total = 0;
 
	while (i < n) {
		++i;
		if (i != 0) {
			total += i;
			printf("%d %d\n", i, total);
		}
	}
 
	return 0;
}

6-4

6-5. 1에서 100까지 합 구하기(for문 사용)
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
	
	for (int i = 0; i <= 100; i++) {
		total += i;
	}
	printf("합: %d", total);
 
	return 0;
}

 

 

 

 

6-6. 1부터 10까지의 합 구하기(for문 사용)
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
 
	for (int i = 0; i <= 10; i++) {
		total += i;
		printf("%2d  %2d\n", i, total);
	}
 
	return 0;
}
6-7. 1 부터 100까지의 홀수의 합 구하기 (while문 사용)
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
	int i = 0;
 
	while (1) {
		i++;
		if (i > 100)
			break;
		if (i % 2 == 0)
			continue;
		total += i;
	}
	printf("홀수의 합: %d", total);
 
	return 0;
}
6-8. 0에서 360도까지 10도 간격으로 라디안 출력
#include <stdio.h>
#define PI 3.14159
 
int main(void) {
 
	int degree;
	double radian;
 
	printf(" 도   라디안\n");
	printf("--------------\n");
	for (int degree = 0; degree <= 360; degree += 10) {
		radian = ((double)degree / 180) * PI;
		printf("%3d   %.3f\n", degree, radian);
	}
 
	return 0;
}
6-9. 1부터 100 사이의 자연수 n을 입력받아서 1부터 n까지의 합 구하기 (do while문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
	int i = 0;
	int n; //입력받은 값
 
	printf("10 이상의 자연수를 입력하세요: ");
	scanf("%d", &n);
	if ((n > 100) || (n < 0)) {
		printf("잘못된 값 입력");
		return 0;
	}
	if ((n >= 1) && (n <= 10))
		return 0;
 
	do {
		i++;
		total += i;
	} while (i < n);
    
	printf("%d까지의 합: %d", n, total);
 
	return 0;
}

 

 

 

 

6-10.  50에서 100까지의 홀수의 개수와 홀수의 합 구하기 (do while문 사용)
#include <stdio.h>
 
int main(void) {
 
	int i = 50;
	int count = 0; //개수
	int total = 0; //합
 
	do {
		if (i % 2 == 1) {
			total += i;
			count++;
		}
		i++;
	} while (i <= 100);
 
	printf("홀수의 개수: %d\n", count);
	printf("홀수의 합: %d", total);
 
	return 0;
}
6-11. 2에서 10 사이의 임의의 정수(n)과, 배수의 합(sum)을 입력받아서 1에서 100 사이의 n의 배수의 합이 sum보다 작을 때의 배수와 합 구하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int n;
	int sum;
	int n1 = 0;
	int sum1 = 0;
 
	printf("정수 입력: ");
	scanf(" %d", &n);
	printf("배수의 합: ");
	scanf(" %d", &sum);
 
	while (sum1 + n1 < sum) {
		n1 += n;
		sum1 += n1;
	}
 
	printf("배수: %d,  합: %d", n1, sum1);
 
	return 0;
}
6-12. 1에서 10사이의 양의 정수(n)를 입력받아서 n! 구하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int n;
	int result = 1;
	
	printf("구하고자 하는 factorial 값: ");
	scanf(" %d", &n);
	if ((n < 1) || (n > 10)) {
		printf("잘못된 값 입력");
		return 0;
	}
 
	printf("%d! = ", n);
	for (int i = n; i > 1; i--) {
		printf("%d * ", i);
		result *= i;
	}
	printf("1 = %d", result);
 
	return 0;
}

 

 

 

 

6-13. 임의의 문자를 입력받아서 입력한 문자를 반복 출력. Q가 입력되면 프로그램 종료.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	char ch;
 
	while (1) {
		printf("한 문자 입력: ");
		scanf(" %c", &ch);
		if (ch == 'Q')
			return 0;
		printf("입력한 문자: %c\n", ch);
	}
 
	return 0;
}
6-14. 0이 입력될 때까지 입력한 정수들의 합과 평균 구하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int count = 0;
	int total = 0;
	int num;
	int avg;
 
	while (1) {
		printf("숫자 입력: ");
		scanf(" %d", &num);
		if (num == 0)
			break;
		total += num;
		count++;
	}
	
	avg = total / count;
 
	printf("합: %d,  평균: %d", total, avg);
 
	return 0;
}
6-15. 개행 문자('\n') 입력 전까지 입력한 문자의 개수와 공백 문자의 개수 구하기
#include <stdio.h>
 
int main(void) {
 
	char ch;
	int countChr = 0;
	int countBlank = 0;
	
 
	printf("입력문자열: ");
	while (1) {
		ch = getchar();
		if (ch == '\n')
			break;
		if (ch == ' ')
			countBlank++;
		countChr++;
	}
 
	printf("입력받은 문자의 개수: %d\n", countChr);
	printf("공백문자의 개수: %d", countBlank);
 
	return 0;
}

 

 

 

 

6-16. 개행문자('\n') 입력 전까지 입력한 문자의 개수와 모음 문자의 개수 구하기
#include <stdio.h>
 
int main(void) {
 
	char ch;
	int countChr = 0;
	int countBla = 0;
	int countA = 0;
	int countE = 0;
	int countI = 0;
	int countO = 0;
	int countU = 0;
 
	printf("입력문자열: ");
	while (1) {
		ch = getchar();
		if (ch == '\n')
			break;
		countChr++;
 
		switch (ch) {
		case 'a':
		case 'A':
			countA++;
			break;
		case 'e':
		case 'E':
			countE++;
			break;
		case 'i':
		case 'I':
			countI++;
			break;
		case 'o':
		case 'O':
			countO++;
			break;
		case 'u':
		case 'U':
			countE++;
			break;
		}
	}
 
	printf("입력받은 문자의 개수: %d\n", countChr);
	printf("모음 (a): %d\n", countA);
	printf("모음 (e): %d\n", countE);
	printf("모음 (i): %d\n", countI);
	printf("모음 (o): %d\n", countO);
	printf("모음 (u): %d\n", countU);
 
	return 0;
}

 

6-17. 입력받은 높이에서 떨어지는 물체의 높이를 초당 출력
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define G 9.80665
 
int main(void) {
 
	double height;
	double time = 0;
 
	printf("탑의 높이: ");
	scanf(" %lf", &height);
 
	printf("시간    높이\n");
	printf("---------------\n");
	do {
		printf("%3.2f    %4.2f\n", time, height);
		time++;
		height -= 0.5 * G * time * time;
	} while (height >= 0);
 
	return 0;
}

 

 

 

 

6-18. 1 - 2 + 3 - 4 + ... + 99 - 100 구하기
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
 
	for (int i = 1; i <= 100; i++) {
		if (i % 2 == 0)
			total -= i;
		else
			total += i;
	}
 
	printf("합 (1 - 2 + 3 - 4 + ... + 99 - 100) : %d", total);
 
	return 0;
}

 

6-19. 1 - 2 + 3 - 4 + ... + 99 - 100의 중간 과정과 결과 출력(while문 사용)
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
	int count = 1;
 
	while (count <= 100) {
		printf("1 ");
		for (int i = 2; i <= count; i++) {
			if (i % 2 == 0) {
				printf("- %d ", i);
			}
			else {
				printf("+ %d ", i);
			}
		}
 
		if (count % 2 == 0)
			total -= count;
		else
			total += count;
 
		printf("= %d\n", total);
		count++;
	}
 
	printf("합 (1 - 2 + 3 - 4 + ... + 99 - 100) : %d", total);
 
	return 0;
}
6-20. 1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + 9 + 10)를 구해라
#include <stdio.h>
 
int main(void) {
 
	int total = 0;
 
	for (int i = 1; i <= 10; i++) {
		for (int j = 1; j <= i; j++) {
			total += j;
		}
	}
 
	printf("1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + 9 + 10) = %d", total);
 
	return 0;
}

 

 

 

도쿄에서 태어나는 것은 특권이자 스펙이다

인터넷에서 화제인 도쿄에서 태어나는 것은 특권이자 스펙이다에 대해 알아보도록 하겠습니다. 이 글을 처음부터 끝까지 읽다 보면 도쿄에서 태어나는 것은 특권이자 스펙이다에 대해 아는

tistorysolution.tistory.com

 

 

728x90
그리드형

댓글