用C语言编写一个数字记忆游戏 满足以下条件:
1.输入要记忆的数字 位数
2.输入完成后 会出现3个 相应位数的数字
3.这3个数字 再1秒钟后消失
4.输入 文字 和符号时 提示程序错误
5.输入刚才出现 过的 3个数字
6.3次输入的 机会,数字输入正确则继续游戏,3次机会全错 则提示游戏是否继续
7.输入Q或者q时 程序结束
c语言编写数字记忆游戏
答案:4 悬赏:60
解决时间 2021-12-30 14:42
- 提问者网友:白柏唇蜜
- 2021-12-30 06:36
最佳答案
- 二级知识专家网友:狙击你的心
- 2021-12-30 07:58
我写这类交互式的小程序代码一般都比较丰满,试试看吧XD:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define TIME 1
#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 = 89;break;
case 3:a = 100, b = 899;break;
case 4:a = 1000, b = 8999;break;
case 5:a = 10000, b = 89999;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 = N;
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;
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define TIME 1
#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 = 89;break;
case 3:a = 100, b = 899;break;
case 4:a = 1000, b = 8999;break;
case 5:a = 10000, b = 89999;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 = N;
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;
}
全部回答
- 1楼网友:转身→时光静好
- 2021-12-30 10:05
终于写好了 写的比较粗糙
#include <stdio.h>
#include <Stdlib.h>
#include <windows.h>
#include <time.h>
const int arrsize=3;
int main()
{
int seed,arr[arrsize],rem[arrsize],i,tag=0,wrong=0;
char choice[2],answer;
begin:
printf("输入位数1-5 输入q/Q结束:");
scanf("%s",&choice);
srand(time(NULL));
if(choice[0]=='q'||choice[0]=='Q')
exit(0);
fflush(stdin);
seed=atoi(choice);
if(seed>5||seed<1)
{
printf("输入错误\n");goto begin;
}
switch(seed)
{
case 1:
for(i=0;i<3;i++)
arr[i]=rand()%9+1;
break;
case 2:
for(i=0;i<3;i++)
arr[i]=rand()%99+1;
break;
case 3:
for(i=0;i<3;i++)
arr[i]=rand()%999+1;
break;
case 4:
for(i=0;i<3;i++)
arr[i]=rand()%9999+1;
break;
case 5:
for(i=0;i<3;i++)
arr[i]=rand()%99999+1;
break;
}
printf("记忆数字如下\n");
for(i=0;i<3;i++)
printf("%d ",arr[i]);
Sleep(1000);
system("cls");
printf("\n输入你要记忆的数字 按空格键分开\n");
for(i=0;i<3;i++)
{
scanf("%d",&rem[i]);
if(rem[i]==arr[i]);
else
{
tag=1;break;
}
}
if(tag==0)
printf("记忆正确\n");
else
{
printf("记忆错误\n");wrong++;
}
if(wrong>3)
{
printf("你已经错误超过3次了,继续游戏y/n");
answer=getchar();
if(answer=='n')
exit(0);
}
goto begin;
system("pause");
}
- 2楼网友:茫然不知崩溃
- 2021-12-30 09:58
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static char *question[]={"多出各一半","闭着口,却在笑","五口人说话",
"一来就有学生","学上段,会下段","挖西边,补东边"};
static char *answer[]={"岁","哈","语","尝","扑"};
static char *inspi[]={"差一点!你一定行的!","努力!请再试一次 !","差一点!你一定行的!","差一点!你一定行的!","差一点!你一定行的"};
int main()
{
char input[20]="";
int i=0,j=0;
for (i=0;i<7;)
{
while (true)
{
printf("%s:\n",question[i]);
scanf("%s",input);
if (strcmp(input,answer[i])==0)//字符串比较
{
if (i<6)
{
system("cls");//清屏,如果你的vc编译这句不过就去掉。。有的电脑用不了跟vc版本有关
printf("你太有才了!\n");
}
else
printf("恭喜你闯关成功!\n");
i++;
break;
}
else
{
system("cls");//清屏,如果你的vc编译这句不过就去掉。。有的电脑用不了跟vc版本有关
printf("%s\n",inspi[i]);
}
}
}
}
- 3楼网友:余生继续浪
- 2021-12-30 08:23
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char ch;
int i, m, r[3], u[3], c;
clock_t t;
srand((unsigned)time(NULL));
do
{
while(1)
{
printf("请输入要记忆数字的位数,结束程序请输入Q或q:");
fflush(stdin);
ch = getchar();
if(ch == 'Q' || ch == 'q' || '1' <= ch && ch <= '5')
break;
else
printf("输入错误!\n");
}
if(ch == 'Q' || ch == 'q')
break;
ch -= '0';
m = 1;
for(i = 1; i < ch; i++)
m *= 10;
for(i = 0; i < 3; i++)
printf("%d ", r[i] = rand() % (m * 9) + m);
t = clock();
while(clock() - t < CLOCKS_PER_SEC);
for(i = 0; i < (ch + 1) * 3; i++)
printf("\b");
for(i = 0; i < (ch + 1) * 3; i++)
printf(" ");
for(i = 0; i < (ch + 1) * 3; i++)
printf("\b");
c = 0;
do
{
for(i = 0; i < 3; i++)
if(scanf("%d", &u[i]) != 1)
{
printf("程序出错!\n");
fflush(stdin);
i = -1;
}
if(r[0] == u[0] && r[1] == u[1] && r[2] == u[2])
break;
c++;
} while(c < 3);
if(c < 3)
ch = 'y';
else
{
printf("是否继续游戏?");
fflush(stdin);
ch = getchar();
}
} while(ch == 'Y' || ch == 'y');
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |