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

c언어 연습 (문제풀이 중심의) 5장 문제풀이 해설

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

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

5-1. 여러 가지 수식 작성 (if문 사용)
(1) if((number > 1) || (number < 10)) 

(2) if((ch != 'q') && (ch != 'z')) 

(3) if((no >= 1) && (no <= 10) && (no != 5)) 

(4) if((no < 1) && (no > 10)) 

(5) if((ch == ' ') || (ch == '\n'))
5-2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int score;
	char grade; 
 
	scanf(" %d", &score);
	if (score >= 90)
		grade = 'A';
	else if (score >= 80) //여기서부터 if앞에 else가 있어야함
		grade = 'B';
	else if (score >= 70)
		grade = 'C';
	else if (score < 70)
		grade = 'F';
	printf("%c\n", grade);
 
	return 0;
}

 

5-3. 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int no;
	scanf(" %d", &no);	//no앞에 &가 없음
	if ((no >= 1) || (no <= 10))	//나눠서 작성
		printf("%d\n", no * 2);
 
	return 0;
}
5-4. 틀린 부분 고치기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int score;
	char grade;
 
	score = 85;
	switch (score / 10) {
	case 10:
	case 9: 
		'A';
		break;
	case 8:
		grade = 'B';
		break;
	case 7:
		grade = 'C';
		break;
	case 6:
		grade = 'D';
		break;
	default:
		grade = 'F';
	}
	printf("%c\n", grade);
 
	return 0;
}

 

5-5.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int num;
 
	scanf(" %d", &num);
	if (num >= 0)
		printf("%d는 양의 값입니다.", num);
	else
		printf("%d는 음의 값입니다.", num);
 
	return 0;
}
5-6.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	char ch;
 
	scanf(" %c", &ch);
	if ((ch >= 'A') && (ch <= 'Z'))
		printf("대문자 %c입니다.", ch);
	else if ((ch >= 'a') && (ch <= 'z'))
		printf("소문자 %c입니다.", ch);
 
	return 0;
}

5-7. 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int no1, no2, diff;
	printf("두 수 입력: ");
	scanf(" %d %d", &no1, &no2);
	if (no1 > no2)
		diff = no1 - no2;
	else
		diff = no2 - no1;
	printf("두 수의 차 : %d", diff);
 
	return 0;
}
5-8. 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int time;
 
	printf("시간(1~24): ");
	scanf(" %d", &time);
	
	if (time <= 12)
		printf("오전 %d시", time);
	else
		printf("오후 %d시", time - 12);
 
	return 0;
}

 

5-9. 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	char ch;
 
	printf("영문자를 입력하세요: ");
	scanf(" %c", &ch);
	if ((ch >= 'a') && (ch <= 'z'))
		printf("결과: %c", ch - 'a' + 'A');
	else
		printf("결과: %c", ch);
 
	return 0;
}
5-10.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int num1, num2;
 
	printf("두 수를 입력하세요: ");
	scanf(" %d %d", &num1, &num2);
	if (num1 * num2 >= 0)
		printf("결과: %d", num1 * num2);
	else
		printf("결과: %d", num1 * num2 * -1);
 
	return 0;
}

 

5-11.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int num;
	printf("정수를 입력하세요: ");
	scanf(" %d", &num);
	
	switch (num % 2) {
	case 0:
		printf("%d는 짝수입니다.", num);
		break;
	case 1:
		printf("%d는 홀수입니다.", num);	
		break;
	}
 
	return 0;
}
5-12.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	char ch1, ch2, ch3;
	
	printf("영문자를 입력하세요: ");
	scanf(" %c %c %c", &ch1, &ch2, &ch3);
 
	if (ch1 < ch2) {
		if (ch3 < ch1)
			printf("결과: %c", ch3);
		else
			printf("결과: %c", ch1);
	}
	else {
		if(ch3 < ch2)
			printf("결과: %c", ch3);
		else
			printf("결과: %c", ch2);
	}
 
	return 0;
}

 

5-13. 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int grade;
	printf("등급 입력(1~8): ");
	scanf(" %d", &grade);
 
	if ((grade == 8) || (grade == 7))
		printf("아주 많이 노력해야 겠어요.");
	else if ((grade == 6) || (grade == 5))
		printf("노력해야 겠어요.");
	else if ((grade == 4) || (grade == 3))
		printf("잘했어요");
	else if ((grade == 2) || (grade == 1))
		printf("아주 잘했어요.");
 
	return 0;
}
5-14. 입력받은 성적에 대응하는 등급 출력 (if문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
	
	int grade;
 
	printf("성적 입력: ");
	scanf(" %d", &grade);
 
	if (grade > 100 || grade < 0)
		printf("잘못된 입력");
	else if (grade >= 90)
		printf("A");
	else if (grade >= 80)
		printf("B");
	else if (grade >= 70)
		printf("C");
	else if (grade >= 60)
		printf("D");
	else
		printf("F");
 
	return 0;
}
5-15. 입력받은 등급에 대응하는 조언 및 칭찬 출력 (switch문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int grade;
 
	printf("등급: ");
	scanf(" %d", &grade);
 
	switch (grade) {
	case 1:
		printf("아주 잘했어요");
		break;
	case 2:
	case 3:
		printf("잘했어요");
		break;
	case 4:
	case 5:
		printf("노력해야겠어요");
		break;
	case 6:
	case 7:
		printf("아주 많이 노력해야 겠어요");
		break;
	default:
		printf("잘못된 입력");
	}
 
	return 0;
}
5-16. 입력받은 영문자로 시작하는 프로그래밍 언어명 출력 (switch문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	char ch;
 
	printf("영문자 입력: ");
	scanf(" %c", &ch);
 
	switch (ch) {
	case 'b':
	case 'B':
		printf("BASIC");
		break;
	case 'c':
	case 'C':
		printf("COBOL");
		break;
	case 'f':
	case 'F':
		printf("FORTRAN");
		break;
	case 'l':
	case 'L':
		printf("LISP");
		break;
	case 'p':
	case 'P':
		printf("PASCAL"); //Pascal만 소문자로 나와서 대문자로 고침
		break;
	default:
		printf("잘못된 입력");
	}
 
	return 0;
}

 

5-17. 입력받은 등수에 대응하는 상품 출력 (switch문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int rank;
 
	printf("등수: ");
	scanf(" %d", &rank);
 
	printf("상품: \n");
	switch (rank) {
	case 1:
		printf("  프린터\n");
	case 2:
		printf("  컴퓨터\n");
	case 3:
		printf("  상금\n");
	case 4:
		printf("  상패\n");
		break;
	default:
		printf("잘못된 입력");
	}
 
	return 0;
}


5-18. 입력받은 성적에 대응하는 등급 출력 (switch문 사용)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int grade;
	
	printf("성적: ");
	scanf(" %d", &grade);
	if (grade > 100 || grade < 0) {
		printf("잘못된 입력");
		return 0;
	}
 
	switch(grade / 10) {
	case 10:
	case 9:
		printf("등급 : A");
		break;
	case 8:
		printf("등급 : B");
		break;
	case 7:
		printf("등급 : C");
		break;
	case 6:
		printf("등급 : D");
		break;
	default:
		printf("등급: F");
		break;
	}
 
	return 0;
}
5-19. 두 숫자와 연산기호를 입력받아서 연산 결과 출력
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int num1, num2;
	char oper; //연산자
 
	printf("입력(연산기호, 숫자, 숫자): ");
	scanf(" %c %d %d", &oper, &num1, &num2);
 
	printf("연산 결과: ");
	switch (oper) {
	case '+':
		printf("%d", num1 + num2);
		break;
	case '-':
		printf("%d", num1 - num2);
		break;
	case '*':
		printf("%d", num1 * num2);
		break;
	case '/':
		printf("%d", num1 / num2);
		break;
	default:
		printf("ERROR");
		break;
	}
 
	return 0;
}

5-20. 지불금액 출력
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int price;
	int num; //개수
 
	printf("물건값: ");
	scanf(" %d", &price);
	printf("개  수: ");
	scanf(" %d", &num);
	printf("금  액: ");
	if (price * num <= 5000)
		printf("%d", price * num);
	else
		printf("%d", price * num - (int)(price * num * 0.1));
 
	return 0;
}

 

5-21. 잔금의 동전별 개수 출력
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
 
	int deposit; //입금액
	int price; //물건값
	int change; //잔금
 
	printf("입금액: ");
	scanf(" %d", &deposit);
	printf("물건값: ");
	scanf(" %d", &price);
 
	change = deposit - price;
	printf("잔  금: %d원 {", change);
	if (change >= 500) {
		printf(" 500원(%d)", change / 500);
		change = change - 500 * (change / 500);
	}
	if (change >= 100) {
		printf(" 100원(%d)", change / 100);
		change = change - 100 * (change / 100);
	}
	if (change >= 50) {
		printf(" 50원(%d)", change / 50);
		change = change - 50 * (change / 50);
	}
	if (change >= 10) {
		printf(" 10원(%d)", change / 10);
		change = change - 10 * (change / 10);
	}
	printf(" }");
 
	return 0;
}

 

 

 

#c언어 express #c언어 공부법 #c언어 공부방법 #c언어 기초 #c언어 해킹

728x90
그리드형

댓글