C언어/참고서: C언어 콘서트

C언어 21차시 조건문 연습문제 4

Olivia-BlackCherry 2023. 3. 24. 13:06

목차

    1. 신호등색깔(r:빨강 g:초록 y:노랑)에 따라 상황을 출력하기

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	char x;
    	printf("신호등 색깔을 입력하세요(r:빨강, g:초록, y:노랑입니다.____\b\b\b\b");
    	x = getchar();
    	printf("%c를 입력하셨습니다.\n", x);
    	printf("참고로 입력하신 문자의 아스키코드 값은 %d 입니다\n", x);
    
    	if (x == 'r') {
    		printf("멈추세요\n");
    	}
    	else if (x == 'g') {
    		printf("보행하세요\n");
    	}
    	else if (x == 'y') {
    		printf("조금만 기다리세요\n");
    	}
    	else {
    		printf("입력값이 바르지 않습니다. 종료합니다\n");
    	}
    	return 0;
    }

     

     

    2. 삼각형 세 변의 길이에 따라 정삼각형, 이등변 삼각형 구분하기

    (삼각형이 성립할 조건 고려하지 않음)

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	double x, y, z, largest;
    	printf("세 변의 길이를 입력하세요.____\b\b\b\b");
    	scanf("%lf%lf%lf", &x, &y, &z);
    	printf("%세 변의 길이는 %lf %lf %lf입니다.\n", x,y,z);
    
    	if (x ==y&& y==z) {
    		printf("정삼각형입니다\n");
    	}
    	else if (x == y||y==z ||z==x) {
    		printf("이등변삼각형입니다\n");
    	}
    	else {
    		printf("삼각형입니다\n");
    	}
    	return 0;
    }

     

     

    3. 과세 표준에 따라 근로 소득세 계산하기

     

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	double income, tax_rate, total_tax;
    	printf("2022년도 소득액은 얼마입니까?(만원단위로 입력)____\b\b\b\b");
    	scanf("%lf", &income);
    	printf("당신의 연간 소득은 %lf입니다.\n", income);
    
    	if (income<=1200) {
    		tax_rate=0.06;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else if (income<=4600) {
    		tax_rate = 0.15;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else if (income <= 8800) {
    		tax_rate = 0.24;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else if (income <= 15000) {
    		tax_rate = 0.35;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else if (income <= 30000) {
    		tax_rate = 0.38;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else if (income <= 50000) {
    		tax_rate = 0.40;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	else {
    		tax_rate = 0.42;
    		printf("세율은 %lf입니다.\n", tax_rate * 100);
    	}
    	total_tax = income * tax_rate;
    	printf("당신이 지불해야 할 세금은 %.3lf입니다\n\n", total_tax);
    
    	return 0;
    }

    -세액 구간에 따라 구간별 계산. 예) 2200만원이라면 1000만원까지는 세율  6프로, 나머지 금액에 대해서 15프로) 

     

     

     

    4. switch문으로 계산기 작성하기 

    ♣ 결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	double x, z, result;
    	char op;
    	
    	scanf("%lf %c %lf", &x, &op, &z);
    
    	switch(op)
    	{
    	case '*':
    		result = x * z;
    		printf("정답: %lf", result);
    		break;
    	case '+':
    		result = x + z;
    		printf("정답: %lf", result);
    		break;
    	case '-' :
    		result = x - z;
    		printf("정답: %lf", result);
    		break;
    	case '/':
    		result = x / z;
    		printf("정답: %lf", result);
    		break;
    	default:
    		printf("입력값이 바르지 않습니다. 다시 입력해주세요\n");
    	}
    
    	return 0;
    }

     

    - 아스키코드로 변환하는 방법 연습하기

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	double x, z, result;
    	char y;
    	printf("첫 번째 숫자를 입력하세요___\b\b");
    	scanf("%lf", &x);
    
    	printf("연산자를 입력하세요___\b\b");
    	getchar();
    	y = getchar();
    	printf("(아스키코드 값은 %d)\n", y);
    	printf("(실제 문자의 모습은 %c)\n", y);
    
    	printf("세 번째 숫자를 입력하세요___\b\b");
    	scanf("%lf", &z);
    
    	switch(y)
    	{
    	case 42:
    		result = x * z;
    		printf("정답: %lf", result);
    		break;
    	case 43:
    		result = x + z;
    		printf("정답: %lf", result);
    		break;
    	case 45:
    		result = x - z;
    		printf("정답: %lf", result);
    		break;
    	case 47:
    		result = x / z;
    		printf("정답: %lf", result);
    		break;
    	default:
    		printf("입력값이 바르지 않습니다. 다시 입력해주세요\n");
    	}
    
    	return 0;
    }

     

    4-1 입력 버퍼에 남아 있는 줄바꿈 문자 유의

    scanf() 실행 후, getchar()을 입력받으면 에러가 나는 것은 아니지만, 이상하게 작동한다.

    scanf() 실행 후, getchar함수가 실행되서 문자를 입력받아야 하는데

    입력하기도 전에 실행이 끝나버리는 이상한 현상이다.

    scanf("%lf", &x);
    printf("연산자를 입력하세요___\b\b");
    y = getchar();

    그 이유는 scanf 함수가 실행된 후에 줄바꿈\n 문자가 남아있기 때문이다.

     

    줄바꿈 문자를 없애주려면 

    getchar()를 한번 더 불러주면 된다. 

    scanf("%lf", &x);
    printf("연산자를 입력하세요___\b\b");
    getchar()
    y = getchar();

    출처: C언어 콘서트

     

     

    5. 학점 코멘트 출력하기

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	char grade;
    
    	printf("학점을 입력하세요 ex) A \n");
    	scanf("%c", &grade);
    
    	switch (grade)
    	{
    	case 'A':
    		printf("아주아주아주아주 훌륭하세요\n");
    		break;
    	case 'B':
    		printf("아주아주아주 훌륭하세요\n"); 
    		break;
    	case 'C':
    		printf("아주아주 훌륭하세요\n");
    		break;
    
    	case 'D':
    		printf("아주 훌륭하세요\n");
    		break;
    
    	case 'F':
    		printf("훌륭하세요\n");
    		break;
    
    	default:
    		printf("입력값이 바르지 않습니다. 다시 입력해주세요\n");
    	}
    
    	return 0;
    }