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

C언어 19차시 조건문 연습문제 2

Olivia-BlackCherry 2023. 3. 23. 10:14

목차

    1. 세 변의 길이로 유효한 삼각형인지 검사하기

    -삼각형이 성립할 조건

    두 변의 길이의 합이 나머지 한 변의 길이보다 커야 한다.

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
    	int a,b,c;
    	printf("유효한 삼각형인지 확인하겠습니다.\nA, B, C 세 변의 길이를 입력해주세요\n");
    	scanf("%d%d%d", &a,&b,&c);
    
    	if (a +b>c && a+c>b && b+c>a) {
    		printf("삼각형의 조건이 맞습니다\n");
    	}
    	else {
    		printf("삼각형이 성립하지 않습니다.\n\n)");
    	}
    	return 0;
    	
    }

     

     

    2. 세 내각의 크기로 유효한 삼각형인지 검사하기

    -삼각형이 성립할 조건

    세 내각의 합이 180도이다. 

    세 내각은 0보다 크다.

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	int a,b,c;
    	printf("유효한 삼각형인지 확인하겠습니다.\nA, B, C 세 각의 크기를 입력해주세요\n");
    	scanf("%d%d%d", &a,&b,&c);
    
    	if (a > 0 && b > 0 && c > 0) {
    		if (a + b + c == 180) {
    			printf("삼각형의 조건이 맞습니다\n");
    		}
    		else {
    			printf("삼각형이 성립하지 않습니다.\n\n)");
    		}
    	}
    	else {
    		printf("삼각형이 성립하지 않습니다.\n\n)");
    	}
    	return 0;
    	
    }

     

     

    3. 이차 방정식 근 구하기

    a*x*x +b*x +c=0의 근은

    1) a=0이면 근은 -c/b

    2) b*b -4*a*c 판별식이 음수이면 실근 없음

    3) 위의 조건이 해당되지 않으면 근의 공식 이용

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <math.h>
    int main(void)
    {
    	double a, b, c, d, x, y;
    	printf("이차 방정식의 근을 구하는 문제입니다..\na, b, C 세 계수를 입력해주세요\n");
    	scanf("%lf%lf%lf", &a, &b, &c);
    	
    	d = b * b - 4.0 * a * c;
    	if (a == 0) {
    		x = -c / b;
    		printf("근의 값은 %lf입니다.\n\n", x);
    	}
    	else if (d < 0) {
    		printf("실근은 존재하지 않아요\n\n");
    	}
    	else {
    		x = (-b + sqrt(d)) / (2.0 * a);
    		y = (-b - sqrt(d)) / (2.0 * a);
    		printf("근의 값은 %lf, %lf입니다.\n\n", x, y);
    	}
    	return 0;
    
    }//olivia_codingschool

    주의점

    sqrt는 루트를 씌워주는 것이다. 

    이를 위해 math.h 를 헤드파일에 적는다.

     

    4. 온도에 따른 날씨 출력하기

    출처: C언어 콘서트

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <math.h>
    int main(void)
    {
    	double t;
    	printf("온도에 따른 날씨를 출력하는 자동시스템입니다..\n오늘의 바깥 온도를 입력해주세요\n");
    	scanf("%lf", &t);
    	
    	if (t<-10) {
    		printf("오늘 날씨는 매우 추우니, 옷을 두껍게 입고 나가세요.\n\n");
    	}
    	else if (t>=-10 && t<0) {
    		printf("오늘 날씨는 춥습니다\n\n");
    	}
    	else if (t >= 0 && t < 10) {
    		printf("쌀쌀합니다\n\n");
    	}
    	else if (t >= 10 && t < 20) {
    		printf("조금 쌀쌀하지만 쾌적한 날씨입니다");
    	}
    	else if (t >= 20 && t < 30) {
    		printf("따뜻하거나 더운 날씨입니다");
    	}
    	else {
    		printf("무더운 날씨입니다");
    	}
    	return 0;
    
    }

    위의 코드는 정상적으로 실행되지만, 수정 보완할 점이 있다. 

    코드는 효율적으로 작성하는 것이 좋은데, 

    불필요한 조건이 첨가되어 있기 때문이다. 

     

    if~else if~ else 구문의 의미를 보자.

    if절의 조건식이 참이면 if문이 실행되고, 거짓이라면 else나 else if로 간다.

    else의 뜻 자체가 앞에 것을 제외한 '이외'이다.

    따라서 앞의 조건을 else나 else if에 반복할 필요가 없다. 

    아래는 조건의 범위를 간결하게 바꾸었다.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <math.h>
    int main(void)
    {
    	double t;
    	printf("온도에 따른 날씨를 출력하는 자동시스템입니다..\n오늘의 바깥 온도를 입력해주세요\n");
    	scanf("%lf", &t);
    	
    	if (t<-10) {
    		printf("오늘 날씨는 매우 추우니, 옷을 두껍게 입고 나가세요.\n\n");
    	}
    	else if (t<0) {
    		printf("오늘 날씨는 춥습니다\n\n");
    	}
    	else if (t < 10) {
    		printf("쌀쌀합니다\n\n");
    	}
    	else if (t < 20) {
    		printf("조금 쌀쌀하지만 쾌적한 날씨입니다\n\n");
    	}
    	else if (t < 30) {
    		printf("따뜻하거나 더운 날씨입니다\n\n");
    	}
    	else {
    		printf("무더운 날씨입니다\n\n");
    	}
    	return 0;
    
    }

     

    5. 가위바위보 게임 만들기

    ♣결과

    ♧코드

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void)
    {
    	int user, computer;
    
    	printf("가위, 바위, 보 게임에 오신 것을 환영합니다. \n");
    	printf("하나를 선택하세요(가위-0, 바위-1, 보-2): ");
    	scanf("%d", &user);		
    
    	computer = rand() % 3;	
    	printf("사용자=%d \n", user);
    	printf("컴퓨터=%d \n", computer);
    
    	if ((user + 1) % 3 == computer)
    		printf("컴퓨터 승리 \n");
    	else if (computer == user)
    		printf("비겼음 \n");
    	else
    		printf("사용자 승리 \n");
    
    	return 0;
    }