首页 > 解决方案 > 当我的随机数大于我写的数字时,为什么我的计数变为 0?

问题描述

我为一个生成随机数的游戏编写了 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;
}

标签: c

解决方案


您对a < randomnumberanda == 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;
}

推荐阅读