c语言编写一个猜数字游戏

老师要求我们用c语言编写一个程序,是一个猜数字的游戏,随机出一个数字,然后猜,可以无限制的往下猜,如果你所猜数大于随机数,会提示你too high,相反,会提示你too low。如果你猜对,游戏结束,会显示你猜了多少次,然后“1”继续玩,“0”退出

小弟刚学c语言,麻烦各位高手支点招

同学你好!
下面是我自己做了一个,运行是成功的。希望对你有所帮助!

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

void main()
{
int i,j,cnt,guard=1;
while(guard)/*利用guard来判断是否继续进行游戏*/
{
srand((unsigned)time(NULL));
i=rand()%100;/*随机生成整数*/
cnt=0;/*比较次数置零*/
for(;;)
{
printf("Please input the data:");
scanf("%d",&j);
cnt++;/*次数累加*/
if(j>i)
printf("Too high!\n");
else if(j<i)
printf("Too low!\n");
else
{
printf("Right!\n");
printf("The cnt is:%d\n",cnt);
printf("Wanna continue? 1.continue 0.exit\n");
scanf("%d",&guard);/*选择是否继续*/
break;
}
}
}
}

希望我的回答对你有帮助,祝你的C成绩进步
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-20
//写了个好的
//在此程序的同一个文件夹中创建一个txt文本里面写上所有要猜的数字,以空格分开
//txt文件名为:game.txt
#include <fstream.h>
#include <stdlib.h>
#include <time.h>

void main(void)
{
const EASY_MODE=20;
const MEDIUM_MODE=EASY_MODE/2;
const HARD_MODE=MEDIUM_MODE/2;

fstream fin;
fin.open("game.txt",ios::in);

char in,str[10];
int i,j,sum[100];

time_t ltime;
int index,guess,target;

int option,op,op1;

char h;

str[10]='\0';
i=j=0;
sum[100]=0;

while(!fin.eof())
{
fin.get(in);
if((in>='0')&&(in<='9'))
{
str[i++]=in;
}
else
{
if(i>0)
{
sum[j++]=atoi(str);
for(int b=0;b<i;b++)
{
str[b]='\0';//(char)"";
}
i=0;
}
}
}

/* -------------测试代码-------------
for(int a=0;a<j;a++)
{
cout<<sum[a]<<"\t";
}
cout<<endl;
*/
RESTART:

srand(time(<ime));
index=(rand()%j);

target=sum[index];
guess=0;

// cout<<endl<<target;//用于测试

cout<<"----------开始游戏-----------"<<endl;
cout<<"----输入游戏难度:(1,2or3)----"<<endl;

do{cout<<">";cin>>option;}while(!(option>=1&&option<=3));
switch(option)
{
case 1:{op=op1=EASY_MODE;break;}
case 2:{op=op1=MEDIUM_MODE;break;}
case 3:{op=op1=HARD_MODE;break;}
}

while(true)
{
cout<<">";
cin>>guess;
if(guess==target){
cout<<"-------恭喜你,答对了--------"<<endl;
cout<<"你的成绩是:"<<op1-op+1<<endl;
cout<<"------继续吗? (y or n)------"<<endl;

cin>>h;
while(true)
{
if(h=='y')goto RESTART;
else
{
if(h=='n'){exit(1);fin.close();}
else cin>>h;
}
}
}
else
{
switch((guess<target))
{
case true:{cout<<">小了"<<endl;break;}
case false:{cout<<">大了"<<endl;break;}
}

if(!(--op))
{
cout<<"次数已到,是否重来?(y or no)"<<endl;
cin>>h;

while(true)
{
if(h=='y')goto RESTART;
else
{
if(h=='n'){exit(1);fin.close();}
else cin>>h;
}
}
}
}
}
}
第2个回答  2020-02-01
同学你好!
下面是我自己做了一个,运行是成功的。希望对你有所帮助!
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
void
main()
{
int
i,j,cnt,guard=1;
while(guard)/*利用guard来判断是否继续进行游戏*/
{
srand((unsigned)time(NULL));
i=rand()%100;/*随机生成整数*/
cnt=0;/*比较次数置零*/
for(;;)
{
printf("Please
input
the
data:");
scanf("%d",&j);
cnt++;/*次数累加*/
if(j>i)
printf("Too
high!\n");
else
if(j<i)
printf("Too
low!\n");
else
{
printf("Right!\n");
printf("The
cnt
is:%d\n",cnt);
printf("Wanna
continue?
1.continue
0.exit\n");
scanf("%d",&guard);/*选择是否继续*/
break;
}
}
}
}
希望我的回答对你有帮助,祝你的C成绩进步
第3个回答  2019-09-16
已经改正,如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void
circle(int
i)
{
int
n
;
printf("请输入您所猜的数字(0-100)
\n");
scanf("%d",&n);
if(i<n)
{
printf("the
number
is
larger,input
agine.\n");
circle(i);
}
if(i>n)
{
printf("the
number
is
smaller.input
agine
\n");
circle(i);
}
if(i==n)//?不是
printf("the
number
is
%d
so
congratulations!you
got
it!",i);
}
int
main()
{
int
flag
=1;
printf("This
is
a
small
game,what
you
should
do
is
just
guess
a
intange
number.\n");
printf("Now,please
guess
the
number!\n");
srand((unsigned)time(NULL));
while(flag)
{
int
i=rand()%100;//?使用
%
而不是
/
,产生的数字在0-100之间,放在循环体内,每次循环都产生一个随机数
circle(i);
printf("\n继续玩请输入
1,退出请输入
0");
scanf("%d",&flag);
}
getchar();
return
0;
}
第4个回答  2010-02-20
#include<iostream>
#include<stdlib.h>
using namespace std;
void guess()
{
int a,b,i,c;
b=rand()%50;
for(i=0;;i++)
{
cin>>a;
c=a-b;
if(c<0)
cout<<"小了"<<endl;
else if(c>0)
cout<<"大了"<<endl;
else
{
cout<<"正确"<<endl;
break;
}
}
}

void main()
{
char s;
do
{
cout <<"请猜数字!"<<endl;
guess();
cout<<"是否继续(y/n)"<<endl;
cin>>s;
}
while(s=='y');
cout<<"结束"<<endl;

}
相似回答