1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #include <stdio.h> #include <stdlib.h> #include <time.h> int ranNum, userNum, tryNum = 1; void loopFunction1(int ranNum, int tryNum) { int userNum; printf ("\nTake a guess: "); scanf ("%d", &userNum); if (userNum == ranNum) { printf ("Congratulations, you got it!"); printf ("You took %d tries.", tryNum); } else if (userNum != ranNum) { if (userNum > ranNum) { printf ("Lower..."); } else if (userNum < ranNum) { printf ("Higher..."); } loopFunction2(ranNum, tryNum); } } void loopFunction2(int ranNumm, int tryNum) { ++tryNum; if (userNum == ranNum) { printf ("Congratulations, you got it!"); printf ("You took %d tries.", tryNum); } else if (userNum != ranNum) { if (userNum > ranNum) { printf ("Lower..."); } else if (userNum < ranNum) { printf ("Higher..."); } loopFunction1(ranNum, tryNum); } } int main() { srand(time (NULL)); int ranNum = rand() % 100; printf ("Computer: I have a number in mind, guess my number"); printf ("\n\nTake a guess: "); scanf ("%d", &userNum); if (userNum == ranNum) { printf ("Congratulations, you got it!"); printf ("You took %d tries.", tryNum); } else if (userNum != ranNum) { if (userNum > ranNum) { printf ("Lower..."); } else if (userNum < ranNum) { printf ("Higher..."); } loopFunction1(ranNum, tryNum); } return 0; } | cs |
다른건 다 멀쩡한거같은데 난수만드는거에서 뭔가 틀렸나봐
0이랑 10만나오네
숫자 범위는 1~100으로 하니까 0맞지않나?
숫자를 입력하면 난수가 계속 바뀌는거같ㅏ
머하는프로그램인지는 알려줘야 볼거아니냐
ㅈㅅ 컴퓨터가 랜덤 숫자를 뽑으면 내가 숫자를 입력해 그리고 맞으면 오케이 아니면 계속 다시 루프말고 함수 왔다갔다하면서 하는거같아
숫자가 바뀌고 바껴서 결국 0으로 가는데?
코드 개줫같이짯네;
그르니까,, 왜그럴까?
어떤점이?
문제점 첫번째 loopfunction2 매개변수이름이 ranNumm으로 되잇음. 전역변수 rannum은 값이 0임. 근데 너는 main함수에 지역변수 rannum을 선언해서 이미 전역변수 rannum이 의미가 없어짐. 그래서 loopfunction2의 rannum할때는 전역변수값ㅇ을 불러들어와서 0이읽혀지는거임. 두번째문제점으로 loopfunction2에 스캔프문이 없다
ㄳㄳㄳ 오타같은거 사소한건데 엄청 중요하고 잘 보이지도 않고 짜증나네
loopfunction2의 첫번째매개변수이름을ㄹ ranNumm -> ranNum 으로 바꾼다 또는 전역변수 ranNum 이 선언되어잇으니 각 함수의 rannum을 선언하지않는다 두가지 방법이잇음 그리고 내가 줫같다고 한점은 메인함수에 그대로 기능ㅇ이 있고 for문쓰면되는데 왜 함수재귀형식으로 하는건지?
아 루프 안쓰는건 쓰지말래 ㅋㅋㅋㅋㅋ 그래서 함수 두개만들어서 왔다갔다하는거야
너도
해당 댓글은 삭제되었습니다.
왜 안돼??? 그게 함수안에 같은 이름의 수를 새로하나 만드는거라던데
미안할건없어 오히려 고맙지 그럼 거기는 문제 없는거야?
위에 애가 좆같다고 하는점이 어떤걸까?
1하고 2 왔다갔다하면서 맞출때까지 하려구
과제다보니까 시키는대로해야지머 루프문 쓰지말래
그말이 아니네 하나가지고 어떻게 반복하지?
아 그럴수가
처음부터 다시써봐야겠다 고마워