各位大佬们,我自己在初学C语言写了个小游戏,但是一直有bug存在,比如连续输入两次13的时候,会有死循环,请问这个代码怎么修正啊?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c;
printf("欢迎来到真心话大冒险,请你输入一个小于40大于0的数字a\n");
scanf("%d", &a);
while(a <= 0 || a >= 40)
{
printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入a:\n");
scanf("%d", &a);
}
if (0 < a && a <= 20)
{
printf("接下来你将接受真心话考验,请你输入一个大于40小于100的数字b\n");
scanf("%d", &b);
while(b <= 40 || b >= 100) {
printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入b:\n");
}
if (40 <= b && b < 60)

        {
            printf("你觉得我这个游戏好玩吗\n");
        }
        if (60 <= b && b < 100)
        {
            printf("你觉得这个世界上最帅的人是谁\n");

        }
    }
    if (20 < a && a <= 40)
    {
        printf("接下来你将接受大冒险考验,请你输入一个大于40小于100的数字c\n");
        scanf("%d", &c);
        while(c <= 40 || c >= 100)
        {
            printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入c:\n");
        }
        if (40 < c && c <= 60)
        {
            printf("请你现场录制一声狗叫给我\n");

        }
        if (60 < c && c < 100)
        {

            printf("请你说出你最满意的部位\n");

        }

    }
return 0;
}

重新读入b没写scanf语句啊


while(b <= 40 || b >= 100)
        {
            printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入b:\n");
        }

修改后:

img


完整代码

#include<stdio.h>
int main()
{
    int a, b, c;
    printf("欢迎来到真心话大冒险,请你输入一个小于40大于0的数字a\n");
    scanf("%d", &a);
    while(a <= 0 || a >= 40)
    {
        printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入a:\n");
        scanf("%d", &a);
    }
    if (a>0 && a <= 20)
    {
        printf("接下来你将接受真心话考验,请你输入一个大于40小于100的数字b\n");
        scanf("%d", &b);
        while(b <= 40 || b >= 100)
        {
            printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入b:\n");
            scanf("%d", &b);
        }
        if (b>=40 && b < 60)

        {
            printf("你觉得我这个游戏好玩吗\n");
        }
        if (b>=40 && b < 100)
        {
            printf("你觉得这个世界上最帅的人是谁\n");

        }
    }
    if (a>20 && a <= 40)
    {
        printf("接下来你将接受大冒险考验,请你输入一个大于40小于100的数字c\n");
        scanf("%d", &c);
        while(c <= 40 || c >= 100)
        {
            printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入c:\n");
            scanf("%d", &c);
        }
        if (40 < c && c <= 60)
        {
            printf("请你现场录制一声狗叫给我\n");

        }
        if (60 < c && c < 100)
        {

            printf("请你说出你最满意的部位\n");

        }

    }
    return 0;
}

while(b <= 40 || b >= 100) {
printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入b:\n");
}
循环里没有输入b,死循环;后面输入c也是一样的问题,整体修改如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b, c;
printf("欢迎来到真心话大冒险,请你输入一个小于40大于0的数字a\n");
scanf("%d", &a);
while(a <= 0 || a >= 40)
{
printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入a:\n");
scanf("%d", &a);
}
if (0 < a && a <= 20)
{
printf("接下来你将接受真心话考验,请你输入一个大于40小于100的数字b\n");
scanf("%d", &b);
while(b <= 40 || b >= 100) {
printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入b:\n");
scanf("%d", &b);
}
if (40 <= b && b < 60)
        {
            printf("你觉得我这个游戏好玩吗\n");
        }
        if (60 <= b && b < 100)
        {
            printf("你觉得这个世界上最帅的人是谁\n");
 
        }
    }
    if (20 < a && a <= 40)
    {
        printf("接下来你将接受大冒险考验,请你输入一个大于40小于100的数字c\n");
        scanf("%d", &c);
        while(c <= 40 || c >= 100)
        {
            printf("居然不按游戏规则来,不去工地抬杠可惜了,请重新输入c:\n");
            scanf("%d", &c);
        }
        if (40 < c && c <= 60)
        {
            printf("请你现场录制一声狗叫给我\n");
 
        }
        if (60 < c && c < 100)
        {
 
            printf("请你说出你最满意的部位\n");
 
        }
 
    }
return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632