c语言编写一个猜数字游戏
源码如下:
/* File: guess.c */
#include /* standard input & output support */
#include /* srand() rand() */
#include /* time() */
/* 宏定义 */
#define NUMBER_LENGTH 5 /* 随机数长度 */
#define NUMBER_LIMIT 10 /* 随机数限制, 每一位0-9 */
#define INPUT_LENTH 128 /* 输入缓冲区大小 */
char goal[NUMBER_LENGTH] = {0}; /* 保存随机数 */
char flag[NUMBER_LIMIT] = {0}; /* 保存随机数标志, 保证不重复 */
char input[INPUT_LENTH] = {0}; /* 保存输入 */
/* 初始化用于保存数据的数组 */
void initData()
{
int i = 0;
while (i < NUMBER_LENGTH)
goal[i++] = 0;
i = 0;
while (i < NUMBER_LIMIT)
{
flag[i++] = 0;
}
}
/* 初始化用于保存缓冲区的数组 */
void initBuffer()
{
int i = 0;
while (i < INPUT_LENTH)
input[i++] = 0;
}
/* 显示猜测结果 */
void display()
{
int count = 0;
int i = 0;
while (i < NUMBER_LENGTH)
{
if (input[i] == goal[i])
{
printf("%c", 'o');
count++;
}
else
{
printf("%c", 'x');
}
i++;
}
printf("
RIGHT: %d bit(s)
", count);
if (count == NUMBER_LENGTH)
{
printf("You win! The number is %s.
", goal);
exit(0);
}
}
/* 生成随机数 */
void general()
{
/* 以时间作为时间种子保证生成的随机数真正具有随机性质 */
srand((unsigned int)time(NULL));
int i = 0;
while (i < NUMBER_LENGTH)
{
char tmp;
do
{
tmp = '0' + ((i != 0) ? (rand() % 10) : (1 + rand() % 9));
} while (flag[tmp] != 0);
flag[tmp] = 1;
goal[i++] = tmp;
}
}
/* 输入方法,用于猜测 */
void guess()
{
printf("Please input the number you guessed:
");
scanf("%s", input);
display();
initBuffer();
}
/* 主函数,程序主框架 */
int main (int argc, const char * argv[])
{
initData();
initBuffer();
general();
while (1) guess();
return 0;
}
==============================================
运行结果见附图,希望我的回答能够对你有所帮助。
已经改正,如下:
#include
#include
#include
void circle(int i)
{
int n ;
printf("请输入您所猜的数字(0-100)
");
scanf("%d",&n);
if(i<n)
{
printf("the number is larger,input agine.
");
circle(i);
}
if(i>n)
{
printf("the number is smaller.input agine
");
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.
");
printf("Now,please guess the number!
");
srand((unsigned)time(NULL));
while(flag)
{
int i=rand()%100;//?使用 % 而不是 / ,产生的数字在0-100之间,放在循环体内,每次循环都产生一个随机数
circle(i);
printf("
继续玩请输入 1,退出请输入 0");
scanf("%d",&flag);
}
getchar();
return 0;
}
下面是我自己做了一个,运行是成功的。希望对你有所帮助!
#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成绩进步
//写了个好的
//在此程序的同一个文件夹中创建一个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;
}
}
}
}
}
}
同学你好!
下面是我自己做了一个,运行是成功的。希望对你有所帮助!
#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成绩进步
已经改正,如下:
#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;
}
#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;
}
c语言 ,编写一个猜数游戏程序,输入一个设定的整数,供玩者猜。
include <stdio.h>#include <stdlib.h>#include #define GUESS_LIMIT 1000char *infos[] = { "【猜数游戏已启动】\\n数字已经设定好,请玩家进行猜测,数字范围在0~%d\\n", "猜测数字大了!请继续猜测:", "猜测数字小了!请继续猜测:", "恭喜猜中数字!!!共猜测了%d次\\n"...
求C语言编写的猜数字游戏程序
include<iostream> using namespace std;int main(){ char s[88],r[88];printf(" 本游戏只能猜8次!!\\n请输入游戏四位不重复的数字\\n");scanf("%s",s);if(strlen(s)!=4)exit(1);else { int t=0;while(1){ t++;int a=0,b=0;printf("输入猜的4位数\\n");scanf("%s",r...
如何猜数游戏C语言程序设计?
编程的注意事项:1、程序不仅需要给计算机读 , 也要给程序员读。 程序设计风格的原则 , 代码应该清楚的和简单的 , 具有直截了当的逻辑 , 自然的表达式 , 通行的语言使用方式 , 有意义的名字和帮助作用和注释。2、自定义类型名以大写字母开头,各单词之间以大写字母分隔,如 CallType (即骆驼式命 名...
C语言题目 编程实现数字猜谜游戏!
一个函数用于生成一个随机数 再用一个函数进行三次循环 如果循环中输入的数字猜对了就返回1如果三次循环结束则返回0 主数字判断返回的结果如果是1则表示猜对否则表示猜错 然后询问是否继续进行猜数字游戏 下面是一个简单的代码 include <stdio.h>#include void clean_input_buf(void){ while(getc...
用C语言编写一段猜数字游戏,跟一般的不一样,规则如下
进行判断练习,若猜数是50,猜了40,范围变成40到100,若猜60,范围变成40到60.通过循环来控制。include<stdio.h> int main(void){ int a,low,k,he,d;k=50; \/\/k为答案数 low=1;he=100;scanf("%d",&a);while(a!=k){ if(a<k){ low=a;printf("猜数的范围是:%d到%d\\n",low...
设计一个C语言程序 猜数游戏 规则:电脑随机产生一个1-100的随机数让玩 ...
include <stdio.h>#include <stdlib.h> #includeint main(void){int rst,g;int guesscount;\/\/用随机函数了srand( time(NULL) );printf("猜数游戏,输入-1退出.\\r\\nLet's go !\\r\\n\\r\\n");do{\/\/生成随机数rst = (int)((double) rand() \/(double) RAND_MAX * 100);\/\/重置猜的...
用C语言编写一个具有简单界面的猜数字游戏
分析:先产生一个随机数N。然后输入数I,如果i大于N,则提示大于信息。如果I小于N,则提示小于信息。直到I==N,则输出成功信息。这是我用C语言写的。环境:WIN-C ,TORBO C,如果是C++环境把倒数第二排getch();删掉!已经调试成功:main(){ int i=0,n;srand(time(0));n=rand()%100+1;w...
C语言——猜数字小游戏 如何用rand,srand,time来完成随机数发生
在C语言中实现猜数字小游戏,关键在于生成随机数。实现这一功能,需要使用三个核心函数:rand,srand,以及time。rand函数用于生成随机数。当未调用srand函数时,rand默认以1播种。srand函数用于播种随机数生成器,每次调用时,必须提供一个种子值,这样可以生成相同的随机数序列。rand函数返回一个介于0到RAND...
c语言猜数字
include<stdio.h> include<stdlib.h> void main(){ int Win = rand() % 90 + 10; \/\/随机赋值 int i = 0;int n;char ch;printf("please input n\\n");scanf("%d",&n);while(1){ if(n > Win) \/\/猜的数字大了 { printf("you guess number big\\n");i++;scanf("%d"...
猜数字游戏 C语言简单程序代码
大概流程如下:随机生成一个0到100的数X while(1) { 提示用户输入一个数 取得用户输入Y if (Y>X) { 提示:小一些 } else if (Y<X) { 提示:大一些 } else { 提示:猜中了 break;\/\/跳出循环 } }