언어 [C언어]if 관련 문제입니다...
2006.02.14 23:34
OTL
C언어 제대로 배워보자 하는 마음으로 C언어를 열어서
먼지 쌓인 계산기를 열어보았습니다.
#include <stdio.h> /*기본 include*/
#include <stdlib.h> /*pause를 사용하기 위한것*/
main() /*main 함수*/
{ /*함수 시작*/
int a, b, c; /*변수 선언*/
printf("Press the number following,\n"); /*1~4 계산식 선택*/
printf("then press enter.\n");
printf("press 1 for Addition\n");
printf("press 2 for Subtraction\n");
printf("press 3 for Multifycation\n");
printf("press 4 for Divation\n");
scanf("%d\n\n", &a); /*1~4 고르기*/
printf("insert two numbers\n"); /*숫자 두개 고르기*/
scanf("%d\n", &b);
scanf("%d\n", &c);
if (a==1) /*1일경우, 덧셈*/
printf("%d + %d = %d \n\n", b, c, b+c);
else if (a==2) /*2일경우, 뺄셈*/
printf("%d - %d = %d \n\n", b, c, b-c);
else if (a==3) /*3일경우, 곱셈*/
printf("%d * %d = %d \n\n", b, c, b*c);
else if (a==4) /*4일경우, 나눗셈*/
printf("%d / %d = %d \n\n", b, c, b/c);
else
printf("OUT OF ORDER!!!\n\n"); /*1~4이외일 경우, 에러*/
system("pause");
}
a를 입력해서, 1일경우 덧셈, 이런식으로 하는 것입니다.
두 숫자를 먼저 선언하고, if 문으로 a의 조건을 사용해서
계산을 하는 방식입니다.
1~4 이외의 경우는 "고장났음ㅋㅋ"이란 메세지가 나오도록
해놨습니다. 물론 영어로요.
옛날것을 보니까 if문 내에 scanf가 들어가 있더군요.
아직도 모르겠지만, if문 내에는 scanf가 들어갈수 없나 보군요.
그래서 먼저 입력하고, 조건에 따라서 출력을 다르게 하는 방법을
사용했습니다. "else"를 위에다가 빼 놓는 방법도 있지만,
일단 안전을 위해서 다른 "else if"들 아래에 놓아봤습니다.
저는 Dev C++을 사용하기 때문에, pause를 썼습니다.
여하튼, F9를 눌러봤습니다.
~
~
~1
~2
~3
~4
까지 왔습니다. (생략)
덧셈을 해 봅시다.
1
엔터
....
아무 말이 안뜨네요. 분명 a의 scanf를 마치면 printf를 출력시키도록
해 놨는데.
아무숫자나 클릭합시다.
2
엔터
....
이제야 printf가 나옵니다. 2개의 숫자를 넣으라는 군요.
2 하고 3을 줍시다.
2 엔터
3 엔터
?!
2+2 = 4?
a는 조건일테고
b는 첫번째로, 2라고 줬고
c는 두번째로, 3이라고 줬는데
어째서 b+c = 4 가 나오는.......
순서가 약간 이상합니다.....
위의것 복사해서 실행 시킨뒤, 알려주시면 감사하겠습니다....
C언어 제대로 배워보자 하는 마음으로 C언어를 열어서
먼지 쌓인 계산기를 열어보았습니다.
#include <stdio.h> /*기본 include*/
#include <stdlib.h> /*pause를 사용하기 위한것*/
main() /*main 함수*/
{ /*함수 시작*/
int a, b, c; /*변수 선언*/
printf("Press the number following,\n"); /*1~4 계산식 선택*/
printf("then press enter.\n");
printf("press 1 for Addition\n");
printf("press 2 for Subtraction\n");
printf("press 3 for Multifycation\n");
printf("press 4 for Divation\n");
scanf("%d\n\n", &a); /*1~4 고르기*/
printf("insert two numbers\n"); /*숫자 두개 고르기*/
scanf("%d\n", &b);
scanf("%d\n", &c);
if (a==1) /*1일경우, 덧셈*/
printf("%d + %d = %d \n\n", b, c, b+c);
else if (a==2) /*2일경우, 뺄셈*/
printf("%d - %d = %d \n\n", b, c, b-c);
else if (a==3) /*3일경우, 곱셈*/
printf("%d * %d = %d \n\n", b, c, b*c);
else if (a==4) /*4일경우, 나눗셈*/
printf("%d / %d = %d \n\n", b, c, b/c);
else
printf("OUT OF ORDER!!!\n\n"); /*1~4이외일 경우, 에러*/
system("pause");
}
a를 입력해서, 1일경우 덧셈, 이런식으로 하는 것입니다.
두 숫자를 먼저 선언하고, if 문으로 a의 조건을 사용해서
계산을 하는 방식입니다.
1~4 이외의 경우는 "고장났음ㅋㅋ"이란 메세지가 나오도록
해놨습니다. 물론 영어로요.
옛날것을 보니까 if문 내에 scanf가 들어가 있더군요.
아직도 모르겠지만, if문 내에는 scanf가 들어갈수 없나 보군요.
그래서 먼저 입력하고, 조건에 따라서 출력을 다르게 하는 방법을
사용했습니다. "else"를 위에다가 빼 놓는 방법도 있지만,
일단 안전을 위해서 다른 "else if"들 아래에 놓아봤습니다.
저는 Dev C++을 사용하기 때문에, pause를 썼습니다.
여하튼, F9를 눌러봤습니다.
~
~
~1
~2
~3
~4
까지 왔습니다. (생략)
덧셈을 해 봅시다.
1
엔터
....
아무 말이 안뜨네요. 분명 a의 scanf를 마치면 printf를 출력시키도록
해 놨는데.
아무숫자나 클릭합시다.
2
엔터
....
이제야 printf가 나옵니다. 2개의 숫자를 넣으라는 군요.
2 하고 3을 줍시다.
2 엔터
3 엔터
?!
2+2 = 4?
a는 조건일테고
b는 첫번째로, 2라고 줬고
c는 두번째로, 3이라고 줬는데
어째서 b+c = 4 가 나오는.......
순서가 약간 이상합니다.....
위의것 복사해서 실행 시킨뒤, 알려주시면 감사하겠습니다....
댓글 6
-
T-plash
2006.02.15 07:08
-
『연금술사』
2006.02.15 23:56
T-plash//감사합니다. 저는 printf문과 비슷하게 처리한다고 생각하고 넣었습니다. 넣으면 안되는 거였군요. 덕분에 처음으로 제대로 된 계산기를 만들수 있게되었습니다.|+rp2+|2930|+rp3+|qna -
『연금술사』
2006.02.15 23:57
음....답변 쓰기로하셨다면 채택되셨을텐데...|+rp2+|2931|+rp3+|qna -
Kensin
2006.02.16 03:24
T-plash님은 그런건 안바라고 그냥 연금술사님을 돕겠다는 마음하나로...[뭘안다고떠드러!]|+rp2+|2938|+rp3+|qna -
RPG무법자
2006.04.28 00:07
scanf 안에 \n 넣지 마셈. 엔터 받는거에요.
그리고 if 안에 scanf 써도 아무 문제 없습니다.|+rp2+|3449|+rp3+|qna -
leecyid
2006.05.10 08:22
switch문도 있습니다.
switch(a)
{
case : '1'
printf(%d....);
break;
.......
default : ->남은것 else랑 비슷
....
}|+rp2+|3505|+rp3+|qna
#include
main()
{
int a, b, c;
printf("계산하고싶은 기호 선택\n\n");
printf("[1]더하기\n");
printf("[2]빼 기\n");
printf("[3]곱하기\n");
printf("[4]나누기\n");
scanf("%d",&a);
printf("숫자 두개를 입력하시오\n");
scanf("%d",&b);
scanf("%d",&c);
if (a==1) /*1일경우, 덧셈*/
printf("%d + %d = %d \n\n", b, c, b+c);
else if (a==2) /*2일경우, 뺄셈*/
printf("%d - %d = %d \n\n", b, c, b-c);
else if (a==3) /*3일경우, 곱셈*/
printf("%d * %d = %d \n\n", b, c, b*c);
else if (a==4) /*4일경우, 나눗셈*/
printf("%d / %d = %d \n\n", b, c, b/c);
else
printf("OUT OF ORDER!!!\n\n"); /*1~4이외일 경우, 에러*/
system("pause");
}
===================================================================================
위에 소스는 제가 약간 변형시킨겁니다. 그냥 참고하세요.
본문에 쓰인 저 소스가 순서가 이상했던 이유는 scanf안에 \n을 넣어서입니다.
scanf안에 \n을 넣어주면 숫자를 입력하고 엔터를 쳤을때 바로 다음으로 넘어가지 않습니다|+rp2+|2923|+rp3+|qna