猜数字1到100游戏编程c语言5次机会(c语言猜数字1到100游戏do whi
c语言:猜数字游戏代码
加了得分榜,没写排序,没时间了。自己加一下就OK
#include stdio.h
#include time.h
#include stdlib.h
#include string.h //以上的是要用到的头文件
int score=0;
void SELECT(int);
void Guess(int,int);
void Select();
void letsgo();
void NB(int); //以上的是函数原型
struct PLAYER
{
char name[10];
int plscore;
};
void save()
{ printf("您的得分是%i",score);
PLAYER player;
printf("请输入姓名:");
scanf("%s",player.name);
player.plscore=score;
FILE *fp;
if((fp=fopen("record.txt","ab"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
fwrite(player,sizeof(PLAYER),1,fp);
printf("记录保存完毕!");
fclose(fp);
}
void print()
{
printf("分数榜:");
FILE *fp;
if((fp=fopen("record.txt","rb"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
PLAYER player;
while(fread(player,sizeof(PLAYER),1,fp)==1)
{
printf("\n姓名:%s\n",player.name);
printf("分数:%i\n",player.plscore);
}
fclose(fp);
}
void main()
{
char end;
printf(" \t\t欢迎光临!!\n\t 在这里我将来测试你的运气!\n");
printf(" 请你猜下数字,但机会就只有三次!!\n");
printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜");
printf(" 请选择1或2\n");
Select();
printf("\n按任意键退出");
fflush(stdin);
end=getchar();
if(score0)
save();
printf("Thanks For Playing \2 886\n");
}
void Select()
{
int s;
static int lihai=0;
fflush(stdin);
scanf("%d",s);
switch(s)
{
case 1:
letsgo();break;
case 2:
printf("唉,你不想玩,我就不逼你咯\n");exit(0);
case 3:print();
break;
default:
lihai++;
if(lihai==3||lihai==5)
{
NB(lihai);
break;
}
printf("你输入的是什么啊!重新输入 1 或 2 \n ");
Select();
}
}
void letsgo()
{
int select;
printf("请你选择猜数字的难度\n ");
printf("1、简单-猜测 0 到 9 的数字\n ");
printf("2、一般-猜测 0 到 99 的数字\n ");
printf("3、困难-猜测 0 到 999 的数字\n ");
printf("请不要乱选!!\n");
scanf("%d",select);
switch(select)
{
case 1:SELECT(10);break;
case 2:SELECT(100);break;
case 3:SELECT(1000);break;
case 4:print();
default:
{
printf("请不要乱选!!\n");
letsgo();
}
}
}
void NB(int l)
{
char a[20];
static int jihui=0;
printf("\n老大!我服了你,%d 次都输入错误。\n",l);
printf("\n可能你在捣乱~~\n");
printf("(如果不想结束,请输入[sorry]中括号内的否则结束游戏)\n");
fflush(stdin);
gets(a);
if (strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0)
{
jihui++;
if(jihui==2)
{
printf("\n死性不改。道歉也没有用了!\n");
goto end;
}
printf("好吧。给你次机会请输入 1 或 2 \n ");
Select();
}
end:
printf("");
}
void SELECT(int n)
{
int num;
srand((unsigned)time(NULL));
num=rand()%n;
if(n==10)
{
n=3;
printf("\n你有 %d 次猜测的机会\n",n);
}
if(n==100)
{
n=5;
printf("\n你有 %d 次猜测的机会\n",n);
}
if(n==1000)
{
n=7;
printf("\n你有 %d 次猜测的机会\n",n);
}
Guess(num,n);
}
void Guess(int num,int n)
{
int search,k,o;
static int i=1;
char ans;
if(n==3)
k=10;
if(n==5)
k=100;
if(n==7)
k=1000;
o=(num-k/1)%k;
if(o0)
o=0;
printf("\n请猜这个数是多少(在%d到%d):",o,(k/5+num)%k);
fflush(stdin);
scanf("%d",search);
if(numsearch)
printf("\n小了\n");
if(numsearch)
printf("\n大了\n");
if(num==search)
{
printf("\n恭喜您了!你在第 %d 次猜对了\n",i);
score+=10;
printf("是否继续y / n:\n");
fflush(stdin);
ans=getchar();
if(ans=='y'||ans=='Y')
{
i=1;
letsgo();
}
}
else
{
i++;
if(i=n)
Guess(num,n);
else
{
printf("\n你的 %d 次机会已经没有了!!,答案是 %d \n",i-1,num);
printf("是否继续y / n:\n");
fflush(stdin);
ans=getchar();
if(ans=='y'||ans=='Y')
{
i=1;
letsgo();
}
}
}
}
满意请采纳。
猜数游戏C语言程序设计
这道题不难,只要知道怎样用c语言生成1~100的随机数就很好办了!
附代码如下!
#includestdio.h
#include?stdlib.h
#include?math.h
int?main()
{
index:
?printf("请选择是否进行猜数!\n1:是\t0:否\n");
?int?j;
?scanf("%d",j);
?if(j?==?0)
??return?0;
?int?i,x?=?rand()?%?100?+?1,input;
?for(i?=?0;i?10;i?++)
?{
??printf("请输入猜想的1至100之间的整数:");
??scanf("%d",input);
??if(input?==?x)
??{
???printf("猜想正确!\t你一共猜想了%d次\n",i?+?1);
???goto?index;
??}
??if(input??x)
??{
???if((i?+?1)?=?10)
???{
????printf("\n此次猜想失败!\n");
????goto?index;
???}
???else
????printf("所猜数过小!\t请再猜一次!\n");
??}
??if(input??x)
??{
???if((i?+?1)?=?10)
???{
????printf("\n此次猜想失败!\n");
????goto?index;
???}
???else
????printf("所猜数过大!\t请再猜一次!\n");
??}
?}
}?
为了简化,使用了goto语句。
猜数游戏c语言
#includestdio.h
#includestdlib.h //随机数生成函数srand()与rand() 所需的头文件
#includetime.h //time()所需的头文件
int main()
{
int sysdata;//系统生成的数据
int n; //所猜的数据
int sum = 0;//记录猜的次数
srand((unsigned)time(NULL)); //随机数发生器初始化函数,以时间为种子
sysdata = rand()%100+1; //随机生成1到100的随机数
printf("退出程序请按:ctrl + c!\n");
while(1)
{
printf("请输入你猜的数据(1-100): ");
if(scanf("%d",n) != 1) //用于判断用户是否结束游戏
{
break; //跳出while循环,结束游戏
}
sum++; //每输入一次数据,猜的次数加1
if(sum == 10) // 当猜的次数大于10次的时候重新生成新的随机数
{
if(n == sysdata) //最后一次猜数正确,输出结果,结束游戏
{
printf("猜数正确,总共猜了%d次!\n",sum);
break; //跳出while循环,结束游戏
}
else //最后一次猜数不正确则重新开始游戏
{
printf("猜数次数超过%d次,重新开始游戏!\n",sum);
sysdata = rand()%100+1; //随机生成1到100的随机数
sum = 0;
}
}
else
{
if(n == sysdata)
{
printf("猜数正确,总共猜了%d次!\n",sum);//猜数正确,结束游戏
break; //跳出while循环,结束游戏
}
else if(n sysdata)
{
printf("你猜的数据太大!\n");
}
else
{
printf("你猜的数据太小!\n");
}
}
}
printf("猜数游戏结束!\n");
return 0;
}
测试结果:
退出程序请按:ctrl + c!
请输入你猜的数据(1-100): 50
你猜的数据太小!
请输入你猜的数据(1-100): 75
你猜的数据太小!
请输入你猜的数据(1-100): 85
你猜的数据太大!
请输入你猜的数据(1-100): 80
你猜的数据太小!
请输入你猜的数据(1-100): 82
你猜的数据太小!
请输入你猜的数据(1-100): 84
猜数正确,总共猜了6次!
猜数游戏结束!
Press any key to continue
C语言程序设计题《猜数字游戏》
#include stdio.h
#include stdlib.h
#include time.h
#define N 4/*随机抽N个数*/
#define NUM 8/*NUM次猜数的机会*/
void detect(char s[])
{
int i,j,num;
int a,b;
char ch[N];
for(num=0;numNUM;num++)
{
a=b=0;
printf("第%d次机会:",num+1);
for(i=0;iN;i++)
{
ch[i]=getch();
if(ch[i]='0'ch[i]='9')
{
for(j=0;ji;j++)
if(ch[i]==ch[j]) break;
if(ji) i--;
else
{
putchar(ch[i]);
for(j=0;jN;j++)
{
if(ch[i]==s[j])
if(i==j) a++;
else b++;
}
}
}
else
i--;
}
printf(" %dA%dB\n",a,b);
if(a==N)
{
printf("恭喜你答对了!\n");
break;
}
}
if(num==NUM)
printf("很遗憾,正确答案为:%s\n",s);
}
main()
{
int i,j;
char s[N+1];
srand(time(0));
for(i=0;iN;i++)
{
s[i]=rand()%10;
for(j=0;ji;j++)
if(s[i]==s[j]) break;
if(ji) i--;
else
{
s[i]+='0';
putchar('*');
}
}
s[i]='\0';
printf("\n总共%d次机会\n",NUM);
detect(s);
}
_______________________
运行结果:
-----------------------
****
总共8次机会
第1次机会:1234 0A2B
第2次机会:2345 0A2B
第3次机会:3456 1A0B
第4次机会:4567 0A1B
第5次机会:5678 0A1B
第6次机会:6789 1A1B
第7次机会:3792 0A2B
第8次机会:9482 1A3B
很遗憾,正确答案为:8429
请按任意键继续. . .