프로그램 소스가 어느 부분이 이상한지..
펴라
질문 제목 : 소스가 틀렸는데 프로그램은 작동되어 어디가 틀렸는지 왜 위치가 이렇게 되는지를...소스에서 함수 마지막의 ;의 위치가 이상한 것 같은데 프로그램은 작동이 되어 그 이유를 여쭤보려고 합니다.질문 내용 : 아래는 프로그램 소스입니다.
-------------------------------------------------------------------------------------------------------------------
#include stdio.h
#include time.h
#include stdlib.h
int main(void)
{
int ready;//게임의 시작과 종료를 선택하기위한 변수선언
int bigyo;//for문 동작을 위한 함수
printf(이 프로그램은 컴퓨터와 주사위로 대결하는 게임입니다.\n);//이 프로그램의 목적을 알림
for(bigyo=0; bigyo=ready; bigyo=bigyo)//반복문을 위한 전제조건 횩은 뒷배경
{
int saram1;// 첫번째 주사위 수를 입력받기 위한 변수
int saram2;// 두번째 주사위 수를 입력받기 위한 변수
int saramhab;// 입력받은 두 수의 합을 계산하기 위한 프로그램
int com1;
int com2;
int com3;
int regame;// 수를 잘못 입력하였을 경우를 판단하기 위한 변수
int jum;//게임을 다시 할 지 묻는, 마지막에 사용되는 변수
printf(\n게임을 종료하시려면 0을, 게임을 시작하려면 0보다 큰 수를 입력하여주십시오\n);//게임의 시작을 알림
scanf(%d, &ready);//시작할 것인지 종료할 것인지를 알기 위한 수 입력
if(ready==0)//만약 입력받은 수가 0이라면
{
printf(\n게임을 종료합니다.\n);//프로그램 종료
break;//반복문을 빠져나가기 위해 사용. 이후의 등장에서는 주석을 쓰지 않을 것임
}
else//입력받은 수가 0이 아니라면
{
printf(\n게임을 시작합니다\n);//게임이라는 이름의 혼자놀기 시작
printf(당신이 원하는 첫번째 수를 1에서 %d 중에서 하나를 선택하여 입력해 주시기 바랍니다.\n, 6);//1부터 6까지의 주사위 수를 얻기 위한 알림
scanf(%d, &saram1);//첫번째 주사위라고 할 수를 입려력받음
if(saram1 6)//만약 입력받은 수가 6보다 크다면
{
printf(\n에잉 이 사람이. 실격일세\n);//주사위에서 나올 수 없는 숫자이므로 실격
printf(잘못했으면 0보다 큰 수를 입력하게나\n);//하지만 실수일 경우도 있으므로
scanf(%d, ®ame);//다시 시작을 수를 입력받음
if(regame 0)//만약 다시 입력한 수가 0보다 크다면
{
continue;//맨처음으로 돌아가 처음부터 다시 입력받음
}
else//실수가 아니라면
{
break;//프로그램 종료
}
}
else if(saram1 1)//입력받은 첫번째 주사위의 수가 1보다 작다면
{
printf(\n에잉 이 사람이. 실격일세\n);//주사위에서 나올 수 없는 숫자이므로 실격
printf(잘못했으면 0보다 큰 수를 입력하게나\n);//하지만 실수일 경우도 있으므로
scanf(%d, ®ame);//다시 시작할 수를 입력받음
if(regame 0)//위와 동일
{
continue;
}
else
{
break;
}
}
else//입력받은 첫번째 주사위의 수가 1에서 6이므로
{
printf(\n당신이 처음 입력한 수는 %d 입니다.\n, saram1);//입력한 수를 알림
printf(당신이 원하는 두번째 수를 1에서 %d 중에서 하나를 선택하여 입력해 주시기 바랍니다.\n, 6);//위와동일
scanf(%d, &saram2);//위와동일
if(saram2 6)
{
printf(\n에잉 이 사람이. 실격일세\n);
printf(잘못했으면 0보다 큰 수를 입력하게나\n);
scanf(%d, ®ame);
if(regame 0)
{
continue;
}
else
{
break;
}
}
else if(saram2 1)
{
printf(\n에잉 이 사람이. 실격일세\n);
printf(잘못했다면 0보다 큰 수를 입력하게나\n);
scanf(%d, ®ame);
if(regame 0)
{
p;continue;
}
else
{
break;
}
}
else//2번째 수도 1~6 사이의 수 이므로 컴퓨터가 주사위라며 수를 정한다
{
saramhab = saram1 + saram2;
printf(\n당신이 입력한 수는 %d 와 %d 이므로 합은 %d 입니다.\n, saram1, saram2, saramhab);
printf(이제부터 컴퓨터가 숫자를 정하겠습니다\n);
srand((unsigned)time(null));
com1 = rand()%6 + 1;
com2 = rand()%6 + 1;
com3 = com1 + com2;
printf(컴퓨터가 입력한 수는 %d 와 %d 이므로 합은 %d 입니다\n,com1, com2, com3);
if(saramhab com3)
{
printf(you win\n 게임을 계속하시려면 0 이외의 수를, 종료하시려면 0을 입력하여주시기 바랍니다.\n);
scanf(%d, &jum);
if(jum == 0)
{
printf(\n당신은 %d를 입력하였으므로 게임을 종료합니다\n, jum);
break;
}
else
{
printf(\n당신은 %d를 입력하였으므로 처음으로 돌아가 게임을 다시 시작합니다.\n, jum);
continue;
}
}
else if(saramhab com3)
{
printf(you lose\n 게임을 계속하시려면 0 이외의 수를, 종료하시려면 0을 입력하여주시기 바랍니다.\n);
scanf(%d, &jum);
if(jum == 0)
{
printf(\n당신은 %d를 입력하였으므로 게임을 종료합니다\n, jum);
break;
}
else
{
printf(\n당신은 %d를 입력하였으므로 처음으로 돌아가 게임을 다시 시작합니다.\n, jum);
continue;
}
}
else
{
if(saram1 != saram2)
{
if(com1 != com2)
{
printf(이번 승부는 무승부입니다.\n);
printf(끝내시려면 0을, 계속 하시려면 0 이외의 수를 입력하시기 바랍니다\n);
scanf(%d, &jum);
if(jum == 0)
{
printf(게임을 끝냅니다\n);
break;
}
else
{
printf(게임을 계속합니다\n);
continue;
}
}
else(com1 == com2)
;{
printf(컴퓨터는 같은 수가 나왔으므로 당신의 패배입니다\n);
printf(끝내시려면 0을, 계속하시려면 0 이외의 수를 입력하시기 바랍니다\n);
scanf(%d, &jum);
if(jum == 0)
{
printf(종료합니다\n);
break;
}
else
{
printf(처음으로 돌아갑니다\n);
continue;
}
}
}
else if(saram1 == saram2)
;{
if(com1 != com2)
{
printf(당신의 승리입니다\n);
printf(게임을 계속하려면 0을, 종료하려면 그 이외의 수를 입력하십시오\n);
scanf(%d, &jum);
if(jum == 0)
{
break;
}
else
{
continue;
}
}
else
{
if(saram1 com1)
{
printf(당신이 입력한 수가 더 크므로 당신의 승리입니다.\n);
printf(0은 종료, 0 이외의 수는 계속합니다);
scanf(%d, &jum);
if(jum == 0)
{
break;
}
else
{
continue;
}
}
else if(saram1 com1)
{
printf(당신이 입력한 수가 더 작으므로 당신의 패배입니다.\n);
printf(0은 종료, 그 외에는 계속\n);
scanf(%d, &jum);
if(jum == 0)
{
break;
}
else
{
continue;
}
}
else
{
printf(무승부입니다\n);
printf(끝내시려면 0을, 계속하시려면 그 이외의 수를 입력하여 주십시오\n);
&;scanf(%d, &jum);
if(jum == 0)
{
break;
}
else
{
continue;
}
}
}
}
}
}
}
}
}
}
-------------------------------------------------------------------------------------------------------------------
제가 틀렸다고 생각한 부분은
}
}
else(com1 == com2)
;{
printf(컴퓨터는 같은 수가 나왔으므로 당신의 패배입니다\n);
printf(끝내시려면 0을, 계속하시려면 0 이외의 수를 입력하시기 바랍니다\n);
scanf(%d, &jum);
if(jum == 0)
부분이고, 틀린 부분의 글자색은 빨간색과 밑줄을 해놓았습니다.
저 부분에서 왜 ; 가 들어가는 것인지 이해할 수 없어 질문드립니다.
-
어둠
if가 아닐 경우가 하나밖에 없어 else로만 사용하였습니다.
두 가지의 상황이기에 if와 else로 구성하였고
저 빨간색 세미콜론을 지울 시 프로그램 에러로 컴파일이 불가능합니다. -
허우룩
저도 초본데 주제넘게 한가지만 말씀드린다면 else(com1 == com2) ---- 이것을 else if(com1 ==com2)
이게 맞을껍니다... 그리고 빨강색 세미콜론은 지우시고요...^^;;; 맞겠지요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |
2694900 | dequeue 에서 리턴값 프린트 방법알려주세요 오늘 12시까지 대화방에 있습니다 도와주세요 | 미투리 | 2025-05-15 |
2694854 | 절대값을 구할때 (2) | 그녀는귀여웠다 | 2025-05-15 |
2694827 | 이제 어떻게 공부해야할지 모르겠네요 | 새얀 | 2025-05-14 |
2694778 | 순열 계산요. | 맛조이 | 2025-05-14 |
2694754 | ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) | 파도 | 2025-05-14 |
2694731 | 리눅스 커널의 시작점 질문 | 미르 | 2025-05-13 |
2694702 | 이거 뭐가문제인가요 코드수정좀 (3) | 맑은 | 2025-05-13 |