문제

코드 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문은 낯설어서 작성하는데 조금 애를 썻다.
그래도 이렇게 적고 실행을 해보니 뿌듯하고 재밌다!
'C언어 > 공부한 것들' 카테고리의 다른 글
[혼자 공부하는 C언어] BMI 구하기 (0) | 2023.11.17 |
---|---|
[혼자 공부하는 C언어] 연산자 확인문제 (0) | 2023.11.17 |
[혼자 공부하는 C언어] 11월 16일 연산자 (0) | 2023.11.16 |
[혼자 공부하는 C언어] 연산자 확인문제 (0) | 2023.11.16 |