簡體   English   中英

當我的隨機數大於我寫的數字時,為什么我的計數變為 0?

[英]Why does my count becomes 0 when my random number is greater than the number I write?

我為一個生成隨機數的游戲編寫了 C 代碼,用戶必須猜測正確的數字。 因此,每當我寫一個數字並且它大於隨機數時,我的代碼就會按原樣執行。 但是,當我寫一個小於隨機數的數字時,計數變量變為零,而不是將計數值減 1。我不知道我做錯了什么? 我附上了可以看到問題的輸出圖像。 在此處輸入圖片說明

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

main()
{
    time_t t;
    int a,count=5;
    srand((unsigned)time(&t));
    int randomnumber=rand()%21;
    printf("This is a guessing game, Only 5 tries are left\n");
    printf("enter the number: ");
    scanf("%d",&a);
    printf(" \n");
    if (a>=20){
        printf("ERROR!! Enter number only between 0-20\n");
    }

    printf("You only have %d tries left\n",count);
    printf("enter number only between 0-20: ");
    scanf("%d",&a);
    printf(" \n");
    if (a==randomnumber){
        printf("You guessed it correctly, YOU WIN!!\n");
    }
    else{
        for(count=4;count>=1;count--)
        {
            if (a>randomnumber){
                printf("My number is smaller than that\n");
                printf("You only have %d tries left\n",(count));
                printf("enter number again: ");
                scanf("%d",&a);
                printf(" \n");
            }
        }
        if (a<randomnumber){
            printf("My number is greater than that\n");
            printf("You only have %d tries left\n",(count));
            printf("enter number again: ");
            scanf("%d",&a);
            printf(" \n");
        }
        if (a==randomnumber){
            printf("You guessed it correctly, YOU WIN!!\n");
        }
    }
    if (a!=randomnumber)
    {
        printf("You LOOSE!!, the Number was %d",randomnumber);
    }
    return 0;
}

您對a < randomnumbera == randomnumber的測試不在for循環內。 因此,您只能在一直數到0后檢查它們。

您需要將所有測試放入循環中。 您還應該使用else if這樣您就不會檢查他們在同一次迭代中輸入的新數字(因為您還沒有減少count )。

當他們猜到數字時,您需要跳出循環。

組織它的最簡單的方法是從if塊中取出所有提示輸入下一個數字的代碼,因為它對於小於和大於是相同的。 if塊只是打印錯誤的方式,並在他們獲勝時爆發。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

main()
{
    time_t t;
    int a,count=5;
    srand((unsigned)time(&t));
    int randomnumber=rand()%21;
    printf("This is a guessing game, Only 5 tries are left\n");
    printf("enter the number: ");
    scanf("%d",&a);
    printf(" \n");
    if (a>=20){
        printf("ERROR!! Enter number only between 0-20\n");
    }

    printf("You only have %d tries left\n",count);
    printf("enter number only between 0-20: ");
    scanf("%d",&a);
    printf(" \n");
    if (a==randomnumber){
        printf("You guessed it correctly, YOU WIN!!\n");
    }
    else{
        for(count=4;count>=1;count--)
        {
            if (a>randomnumber) {
                printf("My number is smaller than that\n");
            } else if (a<randomnumber) {
                printf("My number is greater than that\n");
            } else {
                printf("You guessed it correctly, YOU WIN!!\n");
                break;
            }
            printf("You only have %d tries left\n",(count));
            printf("enter number again: ");
            scanf("%d",&a);
            printf(" \n");
        }
    }
    if (a!=randomnumber)
    {
        printf("You LOOSE!!, the Number was %d",randomnumber);
    }
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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