永发信息网

c 语言高手来

答案:2  悬赏:0  手机版
解决时间 2021-04-27 00:04
  • 提问者网友:不爱我么
  • 2021-04-26 06:25

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

#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);
}

最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-04-26 07:34

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

全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-04-26 08:50

关键在这个srand函数

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

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯