c언어 질문입니다. 급해요 ㅠ
본문
묵 찌빠하는 코드를 작성했는데 숫자를 입력하면 어쩔때는 아무 출력없이 끝나고 어쩔때는 정상적으로 작동한 후 끝이 납니다. DEV C++을 쓰고 있습니다. 문법적으로 오류는 안뜨고 exe에서 숫자를 입력하고 나면 그럽니다 ㅠ 코드는 따로 이용하시지 않길 바랍니다.
혹시 코드에서 오류가 있는지 아니면 goto함수때문인지 궁금합니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int tie(int user, int com){
if(user==com){
return 1;
}
else{
return 0;
}
}
int ran(int user)
{
if (user < 1 || user > 3){
return 1;
}
else {
return 0;
}
}
int win(int user, int com){
if(user==1&& com==2|| user==2&&com==3|| user==3&&com==1){
return 1;
}
else{
return 0;
}
}
int lose(int com, int user){
if(user==1&&com==3||user==2&&com==1 ||user==3&&com==1){
return 1;
}
else{
return 0;
}
}
int main(void){
printf("묵=1 찌=2 빠=3\n");
int user;
rcp:
printf("가위바위보??\n");
scanf("%d",&user);
srand(time(0));
int com;
com=rand()%3+1;
if (tie(user, com)==1){
printf("비겼습니다");
goto rcp;
}
else if(win(user,com)==1){
for (user==com; )
printf("가위바위보가 이긴 상태입니다\n컴퓨가 낸 것은 %d입니다. 묵묵?\n",com);
srand(time(0));
scanf("%d",&user);
com=rand()%3+1;
if(tie(user,com)==1){
printf("컴퓨터가 낸 것은%d입니다.\n",com);
printf("축하합니다. 이겼습니다.\n");
}
else if(win(user, com)== 1){
goto win;
}
else if(lose(user,com)==1){
goto lose;
}
}
else if(lose(user,com)==1){
lose:
printf("가위바위보가 진 상태입니다\n컴퓨가 낸 것은 %d입니다. 묵묵?\n",com);
srand(time(0));
scanf("%d",&user);
com=rand()%3+1;
if(tie(user,com)==1){
printf("컴퓨터가 낸 것은%d입니다.\n",com);
printf("졌습니다. ㅠㅡㅠ\n");
}
else if(win(user,com)==1){
goto win;
}
else if(lose(user,com)==1){
goto lose;
}
}
else if(ran(user)==1){
printf("범위를 벗어났습니다. 다시 써주세요\n");
goto rcp;
}
return 0;
}
답변 2
if((user==1&& com==2) || (user==2&&com==3) || (user==3&&com==1))
식으로 괄호로 묶어주어 보세요. (아래도..)
int lose(int com, int user){
if(user==1&&com==3||user==2&&com==1 ||user==3&&com==1){
return 1;
혹시 여기 부분에서
user==3&&com==2
이여야 하지 않을가요?