猜数游戏,请大家集思广益,需要给出测试次数,需要用到下面的附件

1、猜数游戏
涉及知识点:循环、随机数操作。
计算机“想”一个数([1,100])请人猜,如果猜对了,提示正确信息;否则告诉所猜的数是大还是小,同时提示下一次猜数的范围,直到猜对结束,最后给出游戏者猜测的次数。要求,程序以菜单方式工作。
附件1 随机数的生成:
下面示例代码生成10个1~100范围内的随机整数,存入数组array中。
#include <stdlib.h>
void test()
{
int array[10],i;
srand(time(0)); //设置随机数种子,必须要有
for(i=0;i<10;i++)
{
array[i]=rand()%100+1; //生成1~100范围内的随机整数,赋值给数组
//元素array,生成a-b.之间的一个随机整数公式为:rand0%(b-a+1)+a;
}
}

菜单方式猜数游戏代码及运行结果如下:
菜单:

img

游戏过程及提示(提示数据范围):

img

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

void caishu(int n)
{
    int c,count=0;
    int max=100,min=1;
    system("cls");
    while(1)
    {
        printf("请输入一个数:");
        scanf("%d",&c);
        count++;
        if(c>n)
        {
            max = c;
            printf("太大了,数应该在%d-%d之间。",min,max);
        }
        else if(c<n)
        {
            min = c;
            printf("太小了,数应该在%d-%d之间。",min,max);
        }
        else
        {
            printf("猜对了,共猜了%d次\n",count);
            system("pause");
            return;
        }
    }
}



int main()
{
    int n;
    int op;
    srand((unsigned int)time(0));
    //菜单
    while(1)
    {
        system("cls");
        printf("欢迎使用猜数游戏\n");
        printf("1.开始游戏\n");
        printf("2.退出游戏\n");
        scanf("%d",&op);
        switch(op)
        {
        case 1:
            n = rand()%100+1;
            caishu(n);
            break;
        case 2:
            return 0;
        }
    }

    
    
}



#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
    srand((unsigned int)time(NULL));
    //一个随机数 
    int i = rand() % 100 + 1;
    printf("猜一个一百以内的数字:");
    int a = 0, count = 0;
    scanf("%d", &a);
    while (a != i)
    {
        if (a > i)
            printf("这个数字有点儿大\n");
        else
            printf("这个数字有点儿小\n");
        count++;
        scanf("%d", &a);
    }
    if (a = i)
        printf("经过%d次,可终于答对了\n", count);
    return 0;
}

img

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//菜单
void menu()
{
    printf("****0.exit*****\n");
    printf("****1.play*****\n");

}
//猜数字实现
void game()
{
     int input = 0; 
     int tmp;
     tmp = rand()%100+1;//生成1到100范围内的随机数
     while(1)
     {
        printf("请猜数字1到100:");
        scanf("%d", &input);
        if (input==tmp)
        {
            printf("恭喜你,猜对了\n");
            break;
        }
        else if (input>=tmp)
        {
               printf("猜大了\n");
        }
        else if (input<=tmp)
        {
               printf("猜小了\n");
        }
 
     }
}
 //主函数
int main()
{
    int i = 0;
    srand((unsigned int)time(NULL));//随机数生成器
  do
   {    
     menu();
     printf("请选择:");
     scanf("%d", &i);
     switch (i)
     {
     case 0:
        break;
     case 1:
        game();
        break;
     default :
        printf("输入有误");
     }
   }
  while(i);


测试图:

img

作业要自己写,不会的再来问,我记得举报中有一条理由是"作业代写"


#include <iostream>
#include <conio.h>
#include <ctime>
#include <vector>
#pragma warning(disable:4996)
//随机数最大范围
#define Max 100
//随机数最小范围
#define Min 1
//游戏主题

int GuessNum() {
    using namespace std;
    int count = 0;
    int inputNum = INT_MIN; //防止开始就与随机数相等
    srand((unsigned int)time(NULL));
    int randNum = (rand() % (Max - Min)) + Min;
    while (inputNum != randNum) {
        ++count;

        cout << "输入要猜的数字:";
        cin >> inputNum;
        if (inputNum > randNum) {
            cout << "大了。\n";
        }
        if (inputNum < randNum) {
            cout << "小了。\n";
        }
    }
    cout << "你猜对了!你一共猜了" << count << "次\n按下任意键返回菜单";
    //返回菜单
    getch();
    return count;

}
void menuInput() {
    using namespace std;
    std::vector<int> history;//存放游戏历史,每个元素是猜数次数
    while (true) {
        char key;
        //菜单主界面输出
        cout << "猜数游戏";
        cout << "\nA.开始游戏\n"
            << "B.查看历史\n"
            << "C.退出\n"
            << "\n\n\n" << "按下操作对应的按键";
    loop_whenerror:
        key = tolower(getch());//将字母小写,更好判断
        //处理菜单输入
        switch (key)
        {
        case 'a':
            system("cls");
            history.push_back(GuessNum());
            system("cls");
            break;
        case 'b':
            system("cls");
            if (history.empty()) {
                cout << "记录是空的!";
            }
            else {
                int Num = 0;
                for (int val : history) {
                    ++Num;
                    cout << Num << "." << "次数:" << val;
                }
                
            }
            cout << "\n\n\n按下任意键返回菜单";
            getch();
            system("cls");

            break;
        case 'c':
            exit(0);
        default:
            cout << "\n输入错误!请重新输入";
            goto loop_whenerror;
        }
            

        //处理菜单输入
        


    }
}

int main() {
    menuInput();
}

作业要自己写,不会的再来问,我记得举报中有一条理由是"作业代写"

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