悠玄烛远 2020-04-22 17:51 采纳率: 0%
浏览 236
已采纳

c语言猜数游戏,为什么在循环中不能实现猜错了输出随机数在%d-%d之间呢

#include<stdio.h>
#include<string.h>
#include<iostream>
#include <math.h>
#include<time.h>
#define CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
using namespace std;
int randomnumber()//获取随机数
{
    srand((unsigned)time(NULL));
    return rand() % 100 + 1;
}
int compare(int a, int b)
{
    return (a > b) ? 2 : (b > a) ? 1 : 0;//1大了,2小了,0猜对了
}

int main()
{
    int a, b, c, i = 1;
    a = randomnumber();
    cout << a << endl;
    puts("数字范围1-100,你有十次机会,输入你的数字吧");
    for (i=0;i<11;i++)
    {
        int temp=100,num=0;
        scanf_s("%d", &b);
        c = compare(a, b);
        switch (c)
        {
        case 1:printf("在%d到%d之间",num,b); break;
        case 2:printf("在%d到%d之间", b, temp); break;
        case 0:puts("you are right"); goto end;
        }
        puts("再试试吧");
        temp = b; num = b;
    }
end:
    switch (i)
    {
    case 1:puts("天才"); break;
    case 2: case 3:puts("聪明"); break;
    case 4: case 5:puts("一个凡人"); break;
    case 6: puts("智商着急"); break;
    case 7: case 8:puts("笨"); break;
    case 9: case 10:puts("笨到家"); break;
    case 11:puts("我对你无语"); break;
    }
    return 0;
}

问题好像就出在循环里,temp,和num的值为什么被重置了

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-04-22 18:12
    关注

    问题解决的话,请点下采纳

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include <math.h>
    #include<time.h>
    #define CRT_SECURE_NO_WARNINGS
    #pragma warning(disable:4996)
    using namespace std;
    int randomnumber()//获取随机数
    {
        srand((unsigned)time(NULL));
        return rand() % 100 + 1;
    }
    int compare(int a, int b)
    {
        return (a > b) ? 2 : (b > a) ? 1 : 0;//1大了,2小了,0猜对了
    }
    
    int main()
    {
        int a, b, c, i = 1;
        a = randomnumber();
        cout << a << endl;
        puts("数字范围1-100,你有十次机会,输入你的数字吧");
        int temp=100,num=0;
        for (i=0;i<11;i++)
        {
            scanf_s("%d", &b);
            c = compare(a, b);
            switch (c)
            {
            case 1:printf("在%d到%d之间",num,b); break;
            case 2:printf("在%d到%d之间", b, temp); break;
            case 0:puts("you are right"); goto end;
            }
            puts("再试试吧");
            if (c == 1) temp = b; 
            if (c == 2) num = b;
        }
    end:
        switch (i)
        {
        case 1:puts("天才"); break;
        case 2: case 3:puts("聪明"); break;
        case 4: case 5:puts("一个凡人"); break;
        case 6: puts("智商着急"); break;
        case 7: case 8:puts("笨"); break;
        case 9: case 10:puts("笨到家"); break;
        case 11:puts("我对你无语"); break;
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格