본문 바로가기

Coding/문제풀이 중심의 C언어 연습

문제풀이 중심의 C언어 연습 5장 실습문제

문제 5-1

/*

(1) (number > 1) || (number < 10)
(2) (ch != 'q') && (ch != 'z')
(3) (no > 1) && (no < 10) && (no != 5)
(4) !((no > 1) && (no < 10))
(5) (ch == ' ') || (ch == '\n')

*/

 

문제 5-2

#include <stdio.h>

int main(){
	int score;
	char grade;
	scanf("%d", &score);
	if (score >= 90)
		grade = 'A';
	else if (score >= 80)
		grade = 'B';
	else if (score >= 70)
		grade = 'C';
	else if (score < 70)
		grade = 'F';
	printf("%c\n", grade);
}

 

문제 5-3

#include <stdio.h>

int main(){
	int no;
	scanf("%d", &no);
	if ((no >= 1) && (no <= 10))
		printf("%d\n", no * 2);
	else
		printf("%d", no);
}

 

문제 5-4

#include <stdio.h>
int main(){
	int score = 85;
	char grade;
	switch(score / 10){
	case 10:
	case 9:
		grade = 'A';
		break;
	case 8:
		grade = 'B';
		break;
	case 7:
		grade = 'C';
		break;
	case 6:
		grade = 'D';
		break;
	default:
		grade = 'F';
		break;
	}
	printf("%c\n", grade);
}

 

문제 5-5

#include <stdio.h>

int main(){
	int val;
	scanf("%d", &val);
	if (val > 0)
		printf("%d는 양의 값입니다.\n", val);
	else if (val < 0)
		printf("%d는 음의 값입니다.\n", val);
	else
		printf("%d는 0입니다.\n", val);
}

 

문제 5-6

#include <stdio.h>

int main(){
	char ch;
	scanf("%c", &ch);
	if ((ch >= 65) && (ch <= 90))			// ('A' <= ch) && (ch <= 'Z')
		printf("대문자 %c입니다.", ch);
	else if ((ch >= 97) && (ch <= 122))
		printf("소문자 %c입니다.", ch);
}

 

문제 5-7

#include <stdio.h>

int main(){
	int no1, no2, diff;
	printf("두 수 입력 : ");
	scanf("%d %d", &no1, &no2);
	if (no1 < no2)
		diff = no2 - no1;
	else if (no1 > no2)
		diff = no1 - no2;
	printf("두 수의 차: %d", diff);
}

 

문제 5-8

#include <stdio.h>

int main(){
	int time;
	scanf("%d", &time);
	if (time <= 12)
		printf("오전 %d시", time);
	else
		printf("오후 %d시", time - 12);
}

 

문제 5-9

#include <stdio.h>

int main(){
	char ch;
	printf("영문자를 입력하세요: ");
	scanf("%c", &ch);
	if (('a' <= ch) && (ch <= 'z'))
		ch -= 32;
	printf("결과: %c", ch);
}

 

문제 5-10

#include <stdio.h>

int main(){
	int a, b;
	printf("두 수를 입력하세요: ");
	scanf("%d %d", &a, &b);
	if (a < 0)
		a = a * (-1);
	else if (b < 0)
		b = b * (-1);
	printf("결과: %d", a + b);
}

 

문제 5-11

#include <stdio.h>

int main(){
	int n;
	printf("정수를 입력하세요: ");
	scanf("%d", &n);
	if (n % 2 == 0)
		printf("%d는 짝수입니다.", n);
	else
		printf("%d는 홀수입니다.", n);
}

 

문제 5-12

#include <stdio.h>

int main(){
	char ch1, ch2, ch3;
	printf("영문자를 입력하세요: ");
	scanf("%c %c %c", &ch1, &ch2, &ch3);
	char min = ch1;
	if (ch2 < ch3){
		if (ch1 < ch2)
			min = ch1;
		else if (ch1 > ch2)
			min = ch2;
	}
	else if (ch2 > ch3){
		if (ch1 < ch3)
			min = ch1;
		else if (ch1 > ch3)
			min = ch3;
	}
	printf("결과: %c", min);
}
// 가장 먼저 오는 영문자. ASCII 코드 값이 가장 작은 값.

 

문제 5-13

#include <stdio.h>

int main(){
	int rank;
	scanf("%d", &rank);
	if (rank == 1 || rank == 2)
		printf("아주 잘했어요");
	else if (rank == 3 || rank == 4)
		printf("잘했어요");
	else if (rank == 5 || rank == 6)
		printf("노력해야겠어요");
	else if (rank == 7 || rank == 8)
		printf("아주 많이 노력해야겠어요");
}

 

문제 5-14

#include <stdio.h>

int main(){
	int score;
	scanf("%d", &score):
	if ((90 <= score) && (score <= 100))
		printf("A");
	else if ((80 <= score) && (score <= 89))
		printf("B");
	else if ((70 <= score) && (score <= 79))
		printf("C");
	else if ((60 <= score) && (score <= 69))
		printf("D");
	else
		printf("F");
}

 

문제 5-15

#include <stdio.h>

int main(){
	int rank;
	scanf("%d"< &rank);
	switch(rank){
	case 1:
		printf("아주 잘했어요");
		break;
	case 2:
	case 3:
		printf("잘했어요");
		break;
	case 4:
	case 5:
		printf("노력해야겠어요");
		break;
	case 6:
	case 7:
		printf("아주 많이 노력해야겠어요");
		break;
	}
}

 

문제 5-16

#include <stdio.h>

int main(){
	char ch;
	printf("임의의 영문자를 받아들여 첫 영문자로 시작하는 프로그램 언어명을 출력합니다.\n");
	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");
		break;
    }
}

문제 5-17

 

미해결

 

문제 5-18

 

#include <stdio.h>

int main(){
	int score;
	printf("성적을 입력하면 등급을 산출합니다.\n>> ");
	scanf("%d", &score);
	score /= 10;
	switch(score){
	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;
	}
}

 

문제 5-19

 

#include <stdio.h>

int main(){
	char op.
	int a, b;

	printf("입력(연산기호, 숫자, 숫자) : ");
	scanf("%c %d %d", &op, &a, &b);
	printf("연산 결과: ");
	switch(op){
	case '+':
		printf("%d", a + b);
		break;
	case '-':
		printf("%d", a - b);
		break;
	case '*':
		printf("%d"< a * b);
		break;
	case '/':
		if (b != 0)
			printf("%d", a / b);
		else
			printf("0으로 나눌 수 없습니다.");
		break;
	}
}

 

문제 5-20

 

#include <stdio.h>

int main(){
	int price, count, ans;
	printf("물건값: ");
	scanf("%d"< &price);
	printf("개  수: ");
	scanf("%d", &count);
	ans = price * count;
	if (ans > 5000)
		ans *= 0.9;
	printf("금  액: %d", ans);
}

 

문제 5-21

#include <stdio.h>

int main(){
	int put, price, change, count_500, count_100, count_50, count_10;
	printf("입금액: ");
	scanf("%d", &put);
	printf("물건값: ");
	scanf("%d", &price);
	change = put - price;
	printf("잔  금: %d원 { ", change);

	// 복합 if-else 문을 사용하여 잔금이 50보다 작을 때까지 수행한다.

	if (change >= 500) {
		count_500 = change / 500;
		change = change - count_500 * 500;
		printf("500원 (%d) ", count_500);
	}
	
	if (100 <= change && change < 500){
		count_100 = change / 100;
		change = change - count_100 * 100;
		printf("100원(%d) ", count_100);
	}
    
	if (50 <= change && change < 100){
		count_50 = change / 50;
		change = change - count_50 * 50;
		printf("50원 (%d) ", count_50);
	}
    
	if (change < 50){
		count_10 = change / 10;
		change = change - count_10 * 10;
		if (count_10 != 0)
			printf("10원 (%d) ", count_10);
    }
	printf(" }");
}