【C++】猜数字游戏

#include<iostream>
#include<time.h>
//#include<cstdlib>//Linux下需包含

using namespace std;

int duibi[4]={0};//随机数储存
int sshu[4]={0};//输入数储存
int js=0;//记录猜对了几个

int main()//主函数
{
 char cx;//判断是否继续

 cout<<"\t\t\t欢迎来到数字猜谜游戏!!(四位数)\n\n";
 
 void suijishu();
 void shuru();
 void panduan();
 
 suijishu();
 do{

  do{//判断是否全对,循环
   shuru();
   panduan();
  }while(js!=4);

  cout<<"继续输入y,退出输入n!请输入:";

  cin.get();//缓冲
  cin.get(cx);
  while(cx!='y'&&cx!='n')//判断是否输入正确y/n
  {
   char ch;
  
   cin.clear();
   cin.get(ch);
  
   while(ch!='\n')
    cin.get(ch);
   cout<<"输入错误!请重新输入:";

   cin.get(cx);
  }

 


 }while(cx=='y');//判断是否继续
}

void suijishu()//生成随机数
{

 srand(time(0));//以时间作为种子

  for(int i=0;i<4;)//储存生成随机数
  {
   duibi[i]=rand()%10;

   if(duibi[0]==0)//判断第一个数是否为0
    continue;
   i++;
  }
}

void shuru()
{
 int shu;
 
 cout<<"请输入你猜的数字:";
 
 do{
  while(!(cin>>shu))//判断是否输入的为数字
  {
   char ch;
  
   cin.clear();
   cin.get(ch);
  
   while(ch!='\n')
    cin.get(ch);
    
   break;
  }
 
 if((shu%10000)/1000!=0&&shu/10000==0)//是否超过/小于四位数/第一位数是否为零
  break;
 else //清除错误信息
  {
  char ch;
  
  cin.clear();
  cin.get(ch);
  
  while(ch!='\n')
   cin.get(ch);
  
  cout<<"输入错误!请重新输入:";
  }
    
 }while(1);
 
 sshu[0]=(shu%10000)/1000;//存入单个数字
 sshu[1]=(shu%1000)/100;
 sshu[2]=(shu%100)/10;
 sshu[3]=shu%10;
 
 cout<<"你输入的数是:";//提示输入的数
 for(int i=0;i<4;i++)
 cout<<sshu[i];
 cout<<endl;
}

void panduan()//判断
{
 js=0;
 
 for(int i=0;i<4;i++)//判断对了几个
  if(sshu[i]==duibi[i])
  js++;
  
 if(js==4)//判断是否全对
 cout<<"你很聪明!猜对了!\n\n";
 else
 cout<<"你猜对了"<<js<<"个!\n"
  <<"再来!"<<endl;
}

<think>我们被要求用C++编写一个猜数字游戏游戏规则是系统随机生成一个1到100之间的整,玩家通过输入来猜测这个字。程序需要根据玩家的输入给出提示(“过大”或“过小”),直到玩家猜中为止,然后输出祝贺信息并显示猜测次。 根据引用[3]和[4]的示例,我们可以总结出以下要点: 1. 使用`rand()`函生成随机,但需要先设置随机种子(通常用当前时间),以确保每次运行生成的随机不同。 2. 需要记录玩家猜测的次。 3. 使用循环结构(如while)来持续接收玩家输入,直到猜中为止。 引用[3]的代码没有设置随机种子,会导致每次运行生成的随机序列相同。引用[4]提到了使用`srand`函设置种子,并记录猜测次。 因此,我们将按照以下步骤实现: 1. 包含必要的头文件:`<iostream>`, `<cstdlib>`(用于rand()和srand()), `<ctime>`(用于time())。 2. 使用`srand((unsigned int)time(NULL))`设置随机种子。 3. 生成1到100的随机:`int num = rand() % 100 + 1`。 4. 初始化变量:记录猜测次的计器(如count),初始为0;以及玩家输入的变量(如guess)。 5. 使用循环(while或do-while)让玩家反复输入,直到猜中。 6. 每次循环中,计器加1,读取玩家输入,判断输入的字与随机的大小关系,给出提示。 7. 当猜中时,退出循环,输出祝贺信息和猜测次。 注意:为了增加程序的健壮性,可以考虑输入验证(例如,如果玩家输入非字,程序如何处理?),但根据要求,我们先实现基本功能。 下面给出代码示例:</think>### C++ 猜数字游戏实现 以下是完整的C++猜数字游戏代码示例,包含随机生成、猜测次统计和用户交互功能: ```cpp #include <iostream> #include <cstdlib> // 包含rand()和srand() #include <ctime> // 包含time() int main() { // 设置随机种子(使用当前时间) srand(static_cast<unsigned int>(time(nullptr))); // 生成1-100的随机 const int secretNumber = rand() % 100 + 1; int guess = 0; int attempts = 0; std::cout << "欢迎来到猜数字游戏!\n"; std::cout << "我已选择一个1到100之间的字,请开始猜测。\n\n"; do { std::cout << "请输入你的猜测: "; std::cin >> guess; attempts++; if (guess > secretNumber) { std::cout << "字过大!请尝试更小的字。\n"; } else if (guess < secretNumber) { std::cout << "字过小!请尝试更大的字。\n"; } } while (guess != secretNumber); std::cout << "\n恭喜你猜对了!答案是 " << secretNumber << "。\n"; std::cout << "你总共用了 " << attempts << " 次猜测。\n"; return 0; } ``` ### 代码说明: 1. **随机生成**: - `srand(time(nullptr))` 用当前时间初始化随机种子 - `rand() % 100 + 1` 生成1-100的随机整 2. **游戏流程**: - 玩家持续输入猜测直到猜中 - 每次猜测后提示"过大"或"过小" - 记录并显示总猜测次 3. **用户界面**: - 游戏开始显示欢迎信息 - 每次猜测提供明确反馈 - 结束时显示答案和统计信息 ### 运行说明: 1. 编译代码(示例使用g++): ```bash g++ guess_number.cpp -o guess_number ``` 2. 运行程序: ```bash ./guess_number ``` ### 游戏示例输出: ``` 欢迎来到猜数字游戏! 我已选择一个1到100之间的字,请开始猜测。 请输入你的猜测: 50 字过小!请尝试更大的字。 请输入你的猜测: 75 字过大!请尝试更小的字。 请输入你的猜测: 63 字过大!请尝试更小的字。 请输入你的猜测: 57 字过小!请尝试更大的字。 请输入你的猜测: 60 恭喜你猜对了!答案是 60。 你总共用了 5 次猜测。 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值