[英]C random number producing garbage value
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0));
int random = 0, guess, guesses = 1;
random = rand() % 100 + 1;
printf("The number has been generated. Input 0 to quit.\n");
do {
scanf("%d", &guess); //takes user input for guess
if (guess > random && guess != 0)
printf("Lower!\n");
else
if (guess < random && guess != 0)
printf("Higher!\n");
else
if (guess == random) {
printf("Bingo!");
return 0;
} else
if (guess == 0) {
printf("Thanks for playing, the number was %d\n", &random);
return 0;
}
guesses++;
} while (guesses != 6); //maximum of 5 guesses
printf("Thanks for playing, the number was %d\n", &random);
return 0;
}
每當我在已生成數字的情況下顯示隨機變量時,就會輸出垃圾值。 但是該代碼段可以檢查猜測值和隨機數之間的比較,但我似乎無法正確輸出隨機數。
printf
%d
需要一個int
數據類型的參數。 您正在傳遞int *
數據類型( &random
)。
在最后兩個printf
中將&
random
刪除。
printf("Thanks for playing, the number was %d\n", random);
您應該傳遞random
的值而不是其地址:
printf("Thanks for playing, the number was %d\n", random);
另請注意,您應該檢查scanf()
的返回值:如果鍵入字母,程序將具有未定義的行為,它可能會在迭代5次后退出,或者永遠迭代或完全執行其他操作...
這是一個改進的版本:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int random, guess, guesses;
srand(time(0));
random = rand() % 100 + 1;
printf("The number has been generated. Input 0 to quit.\n");
for (guesses = 0; guesses < 5; guesses++) {
// take user input for guess
if (scanf("%d", &guess) != 1 || guess == 0)
break;
if (guess > random) {
printf("Lower!\n");
} else
if (guess < random) {
printf("Higher!\n");
} else {
printf("Bingo!\n");
return 0;
}
}
printf("Thanks for playing, the number was %d\n", random);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.