永发信息网

c 语言高手来

答案:2  悬赏:0  手机版
解决时间 2021-04-27 00:04

麻烦帮解释下这个程序 越详细越好 最好是逐条

#include <stdio.h>
#include<time.h>
#include<stdlib.h>
//函数声明
cd(); //显示菜单,并选择猜单项
ksyx(); //开始游戏
bz(); //显示"帮助"
ts(); //提示游戏失败,并询问是否继续玩

main() //主函数
{
cd();
}
cd()
{
int n;
printf("\n\n\n\n");
printf("\t\t\t @ @ @ @ @ @ @\n\n");
printf("\t\t\t @ 猜 数 游 戏 @ \n\n");
printf("\t\t\t @ @ @ @ @ @ @\n\n\n\n");
printf("\t\t\t 1开始 游 戏 \n\n");
printf("\t\t\t 2 帮 助 \n\n");
printf("\t\t\t 3退 出 游 戏 \n\n");
do
{
scanf("%d",&n);
switch(n)
{
case 1:ksyx();
case 2:bz();
case 3:exit(0);
default:printf("帮助\n");
}
}while((n>3)&&(n<1));
}
ts()
{
int c;
printf(" \t\t & & & & & & & & & & & \n");
printf(" \t\t & & & & & & & & \n");
printf(" \t\t & & & & & & & & & & & & & & \n ");
printf(" \t\t & & & & & & & & \n ");
printf(" \t\t & & & & & & & & & & & \n\n\n ");
printf(" \t\t & & \n");
printf(" \t\t & & & & & & & & & & \n");
printf(" \t\t & & & & & & & & & \n");
printf(" \t\t & & & & & & & & & \n");
printf(" \t\t & & & & & & \n");
printf(" \t\t & & & & & & & \n\n\n\n\n\n");
do
{
printf("重玩游戏?1.是 2.否\n");
scanf("%d",&c);
switch(c)
{
case 1:cd();
case 2:exit(0);
}
}while(c!=1||c!=2);
}
bz()
{
char c;
printf("\n\n\n");
printf("\t\t 猜数字的游戏\n");
printf("\t\t要求用户输入4个随机0—9的数,\n");
printf("\t\t某个数字猜对并且位置正确为A,\n");
printf("\t\t某个数字猜对但位置不正确则为B.\n");
printf("\t\t如果五次都猜错,游戏将宣告结束!\n");
do
{
printf("\t\t 按【q】返回主菜单 \n\n");
scanf("%s",&c);
printf("\n");
if(c=='q')
{
cd();
}
else
printf("\t\t按 q 返回主菜单\n\n\n");
}while(c!='q');
}
ksyx()
{
int i,k,q[4],a[4],s=0,A=0,B=0,w;
char c;
srand((int)time(0));
do
{

for(i=0;i<4;i++) //生成四个数
{
q[i]=rand()%10;
}
w=0;
for(i=1;i<4;i++) //判断是否重复
{
for(k=0;k<i;k++)
{
if(q[i]==q[k])
w=1;
break;
}
}
} while(w==1);
printf("要求用户输入4个随机0—9的数\n");
do
{
s+=1;
if(s==5)
{
printf("游戏结束\n");
printf("答案是%d,%d,%d,%d\n",q[0],q[1],q[2],q[3]);
ts();
}
do
{
for(i=0;i<4;i++) //输入四个数
{
scanf("%d",&a[i]);
}
w=0;
for(i=1;i<4;i++) //判断是否重复
{
for(k=0;k<i;k++)
{
if(a[i]==a[k])
{
w=1;
printf("输入错误,请重新输入\n");
break;
}
}
}
}while(w==1);
for(i=0;i<4;i++)
{
for(k=0;k<4;k++)
{
if((q[i]==a[k])&&(k==i))
A+=1;
else if((q[i]==a[k])&&(k!=i))
B+=1;
}
}
if(A==4)
{
printf("恭喜你回答正确继续努力\n");
do
{
printf("\n\n按【q】返回主菜单!\n");
scanf("%s",&c);
if(c=='q')
{
cd();
}
}while(c!='q');
}
else
{
printf("A=%d,B=%d",A,B);
printf("你猜错了,请重新输入\n");
A=0;
B=0;
}
} while(1);
}

最佳答案

这就是个类似文曲星上猜数的游戏,先根据时间产生一个4位随机数,然后用户输入一个4位数字,注意每个数位上的数字不能相同,然后根据提示继续猜下去,知道猜中这个4位数为止。

全部回答

关键在这个srand函数

srand((int)time(0));产生随机数,操作系统课上看过,没玩过这玩意儿,你就理解为产生随机数把,其他的不难理解了

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求些旋律经典的英文歌
水冲这个地址在什么地方,我要处理点事
感恩节你最想感谢的人是谁?
爱惜美景的名言,描写仙境的段落或句子
谁能教我点亮Q吧用户?
跑跑卡丁车改版会出什么车?
我的电脑机箱能装两个硬盘吗?
可口可乐和QQ的畅想腾讯在线生活,兑取的QQ会
谁有爱墙种子的??给我个!!
金堂县测绘院这个地址在什么地方,我要处理点
魔兽世界怎么锁定目标,战机世界战斗界面怎么
狂战士用血之狂暴怎么样加血啊
DNF里,做齐泰拉石套需要多长时间?
如果把钱一张一张藏在书里,会被发现吗?(我
单选题在一首名为《十三匹骏马》的草原民歌中
推荐资讯
在光大证券买股票,多扣金额,收市后返还,为
莫干山家装饰材在什么地方啊,我要过去处理事
夫妻相是怎么回事
酷狗在线用户指的是? 歌是咋传的?
六级听力不好要怎么练才能快速提高啊
1989年的属于什么消费族体?
富鸿城便捷酒店这个地址在什么地方,我要处理
画沙是不是周杰伦新专辑里的歌啊
谁知道深圳到毕节的汽车票是多少钱一张卧铺的
极品飞车十三就是这样的吗
想起一个梦幻西游的名字! Z、J 开头的
老公七夕节祝福语,七夕祝福语爱情短句十字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?