c언어 질문입니다. 급해요 ㅠ

c언어 질문입니다. 급해요 ㅠ

QA

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

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
이여야 하지 않을가요?

답변을 작성하시기 전에 로그인 해주세요.
전체 4

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT