永发信息网

编程高手来

答案:1  悬赏:70  手机版
解决时间 2021-07-29 08:36

麻烦高手给改一下像这样就行

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define TIME 3
#define N 3
int ws;
int num[N];
void clear()
{
while(getchar() != '\n');
}
int weishu()
{
char c;
while(1)
{
printf("请输入位数(结束Q/q):");
if(scanf("%d", &ws))
{
if(ws >= 1 && ws <= 5)
break;
}
else if((c = getchar()) == 'q' || c == 'C')
return 0;
else
printf("输入错误!请重试.\n");
clear();
}
clear();
return 1;
}
int play()
{
int i, a, b, n;
int in[N];
switch(ws)
{
case 1:a = 0, b = 10;break;
case 2:a = 10, b = 90;break;
case 3:a = 100, b =900;break;
case 4:a = 1000, b = 9000;break;
case 5:a = 10000, b = 90000;break;
}
n = 0;
for(i = 0; i < N; ++i)
n += printf("%d ", num[i] = rand()%b+a);
clock_t now = clock();
while((clock() - now) / CLOCKS_PER_SEC < TIME);
i = n;
while(i--)
putchar('\b');
printf("%*c", n, ' ');
i = n;
while(i--)
putchar('\b');
b = 3;
while(b)
{
printf("请输入:");
for(i = 0; i < N && scanf("%d", &in[i]); ++i);
if(i < N)
{
printf("输入有误!请重试.\n");
clear();
continue;
}
if(b > 0)
{
for(i = 0; i < N; ++i)
if(in[i] != num[i])
{
if(b > 1)
printf("输入错误, 你还有%d次机会:\n", b-1);
break;
}
if(i == N)
return 1;
}
b--;
}
return 0;
}
int main()
{
srand(time(0));
while(weishu())
{
if(!play())
{
clear();
printf("3次机会已用完, 是否重来?(y继续):");
if(getchar() != 'y') break;
else
clear();
}
else
printf("恭喜你!记忆正确.\n");
}
printf("Bye!");
return 0;
}
用C语言编写一个数字记忆游戏 满足以下条件:
1.输入要记忆的数字 位数
2.输入完成后 会出现3个 相应位数的数字
3.这3个数字 再1秒钟后消失
4.输入 文字 和符号时 提示程序错误
5.输入刚才出现 过的 3个数字
6.3次输入的 机会,数字输入正确则继续游戏,3次机会全错 则提示游戏是否继续
7.输入Q或者q时 程序结束

最佳答案

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define TIME 3
#define N 3
int ws;
int num[N];
void clear()
{
while(getchar() != '\n');
}



int weishu()
{
char c;
while(1)
{
printf("请输入位数(结束Q/q):");
if(scanf("%d", &ws))
{
if(ws >= 1 && ws <= 5)
break;
}
else if((c = getchar()) == 'q' || c == 'Q')
return 0;
else
printf("输入错误!请重试.\n");
clear();
}

}



int play()
{
int i, a, b, n;
int in[N];
switch(ws)
{
case 1:a = 0, b = 10;break;
case 2:a = 10, b = 90;break;
case 3:a = 100, b =900;break;
case 4:a = 1000, b = 9000;break;
case 5:a = 10000, b = 90000;break;
}
n = 0;
for(i = 0; i < N; ++i)
n += printf("%d ", num[i] = rand()%b+a);
clock_t now = clock();
while((clock() - now) / CLOCKS_PER_SEC < TIME);
i = n;
while(i--)
putchar('\b');
printf("%*c", n, ' ');
i = n;
while(i--)
putchar('\b');
b = 3;
while(b)
{
printf("请输入:");
for(i = 0; i < N && scanf("%d", &in[i]); ++i);
if(i < N)
{
printf("输入有误!请重试.\n");
clear();
continue;
}
if(b > 0)
{
for(i = 0; i < N; ++i)
if(in[i] != num[i])
{
if(b > 1)
printf("输入错误, 你还有%d次机会:\n", b-1);
break;
}
if(i == N)
return 1;
}
b--;
}
return 0;
}



void main()
{
srand(time(0));
printf("**********************************\n");
printf("*欢迎进入数字猜谜游戏,by孤独の灵*\n");
printf("**********************************\n");
printf("请选择<1/2/3>:\n");
printf(" 1.帮助\n");
printf(" 2.开始游戏\n");
printf(" 3.退出\n");
int p;
scanf("%d",&p);
if(p==2){
while(weishu())
{
if(!play())
{
clear();
printf("3次机会已用完, 是否重来?(y继续):");
if(getchar() != 'y') break;
else
clear();
}
else
printf("恭喜你!记忆正确.\n");
}
printf("Bye!");
}
if(p==1){
printf("1.输入要记忆的数字的位数\n");
printf("2.输入完成后会出现3个相应位数的数字\n");
printf("3.这3个数字1秒钟后消失\n");
printf("4.您有3次输入的机会,数字输入正确则继续游戏,3次若全错程序会提示游戏是否继续\n");
printf("5.输入Q或者q时程序结束 \n\n\n\n");
main();
}
else if(p==3) printf("Bye");


}



你可以运行一下,我调试过了,没有错误

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
索爱W890i港版现在多少钱
黄石港区黄石黄金商务宾馆这个地址在什么地方
几道数学题帮忙解一下吧
想买个手机:摩托罗拉em35和e8,音质好和照想
E66怎么写大写字母
QQ谁邀请我下游戏人生?
如何删除桌面上的快捷方式
为何使用面膜时会有刺痛感?
源汇区漯河诚意货运哪位知道具体地址啊
用如沐春风的意思造句,”如沐春风”是什么意
我发现很多人上大学后背单词开始记不住了,这
为什么要读书,不读书就没钱吗
汗水,怎么搞的,明明按的追问怎么变采纳了
开福区长沙大卫画室地址在哪,我要去那里
问道学师门技能和自身道行有关吗?
推荐资讯
宝宝很恋奶怎么办?
我真的很喜欢他 我现在该怎么做
山城区鹤壁河南中信达会计事务所地址在哪里啊
桦南县佳木斯乐家生鲜超市(新建街)哪位知道具
电信手机号怎么开QQ业务?
me to 什么意思?
什么牌子的路由器比较好?
谁能告诉我关于处女座的知识?
牡丹江到大连的列车时间表
讷河市齐齐哈尔辣庄重庆串串香火锅怎么去啊,
玩开心农场没有用挂,竟然被警告,该找谁解决
为什么我牙齿老肿,痛死了,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?