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;
}
}
菜单方式猜数游戏代码及运行结果如下:
菜单:
游戏过程及提示(提示数据范围):
#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;
}
#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);
测试图:
作业要自己写,不会的再来问,我记得举报中有一条理由是"作业代写"
#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();
}
作业要自己写,不会的再来问,我记得举报中有一条理由是"作业代写"
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!