본문 바로가기

C언어/공부한 것들

[혼자 공부하는 C언어] 키보드 수식 결과 출력

문제

 

코드 1
#include <stdio.h>	

int	main() {
	
	int a, b;
	char c;

	printf("사칙연산 입력(정수) : ");
	scanf("%d %c %d", &a, &c, &b);
	
	if (c = '+') {
		printf("%d %c %d = %d", a, c, b, a + b);
	}

	else if (c = '-') {
		printf("%d %c %d = %d", a, c, b, a - b);
	}

	else if (c = '*') {
		printf("%d %c %d = %d", a, c, b, a * b);
	}

	else {
		printf("%d %c %d = %d", a, c, b, a / b);
	}
}

 

더보기

사칙연산 입력(정수) : 10-6
10 + 6 = 16

 

문제를 보고 내가 코드를 작성해보았는데 출력값이 이상하게 출력이 됐다.

else if문을 실행하려고 입력을 -, *, / 을 입력해도 출력은 계속 +를 입력했을 때의 값만 출력이 됐다.

계속 코드를 봐도 뭐가 문제인지 모르겠어서 검색을 해보았더니

c = ' + ' 같이 조건을 설정할 때 대입 연산자가 아닌 비교 연산자를 사용해야한다고 한다.

 

수정한 코드

#include <stdio.h>

int main() {
    int a, b;
    char c;

    printf("사칙연산 입력(정수) : ");
    scanf("%d %c %d", &a, &c, &b);

    if (c == '+') {
        printf("%d %c %d = %d", a, c, b, a + b);
    }
    else if (c == '-') {
        printf("%d %c %d = %d", a, c, b, a - b);
    }
    else if (c == '*') {
        printf("%d %c %d = %d", a, c, b, a * b);
    }
    else {
        printf("%d %c %d = %d", a, c, b, a / b);
    }

    return 0;
}

 

더보기

사칙연산 입력(정수) : 10-3
10 - 3 = 7

 

비교 연산자를 이용해서 코드를 수정해보니 제대로 결과값이 출력 됐다!!

 

코드2
#include <stdio.h>	

int	main() {
	
	int a, b;
	char c;

	printf("사칙연산 입력(정수) : ");
	scanf("%d %c %d", &a, &c, &b);
	
	switch (c) {
	case '+' :
		printf("%d %c %d = %d", a, c, b, a + b);
		break;
	case '-' :
		printf("%d %c %d = %d", a, c, b, a - b);
		break;
	case '*' :
		printf("%d %c %d = %d", a, c, b, a * b);
		break;
	default :
		printf("%d %c %d = %d", a, c, b, a / b);
		break;
	}
}

 

더보기

사칙연산 입력(정수) : 11/3
11 / 3 = 3

 

비교 연산자를 알아내기 이전에 문제 자체가 switch문을 사용하는 것을 요구하는 문제일 수도 있겠다는 생각이 들어서 switch문을 사용해서 코드를 작성했다.

아무 문제 없이 정상적으로 결과값이 나왔다!!

 

느낀 점

 

사실 if문은 많이 적어보고 보기도 해서 사용할 때 큰 헷갈림은 없었는데 switch문은 낯설어서 작성하는데 조금 애를 썻다.

그래도 이렇게 적고 실행을 해보니 뿌듯하고 재밌다!