簡體   English   中英

C隨機數產生垃圾值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM