📄 1.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<string.h>
int A,B;
void get(char num[])//由游戏自动获取所猜数字
{
int x;
int i,j;
srand(unsigned(time(0)));
for(i=0;i<4;i++)
{
leap:x=rand()%10;
for(j=0;j<i;j++)
{
if(num[j]==x)
goto leap;
}
num[i]=x;
}
}
int check(char gus_num[])//检查输入是否合法
{
int i,j;
bool flage=false;
int len;
len=strlen(gus_num);
if(len!=4)
return 1;
else
{
for(i=1;i<4;i++)
{
leap:if(flage) break;
for(j=0;j<i;j++)
{
if(gus_num[j]==gus_num[i])
{
flage=true;
return 1;
goto leap;
}
}
}
}
return 0;
}
void guess(char gus_num[],char num[],int *flag)//比较输入数字和所猜数字
{
A=0; B=0;
for(int i=0;i<4;i++)
{
if(gus_num[i]==num[i])
A++;
else
{
for(int j=0;j<4;j++)
{
if(i!=j&&gus_num[i]==num[j])
B++;
}
}
}
if(A==4) *flag=1;
else *flag=0;
}
int main()
{
printf("****************************************************\n");
printf("类似文曲星的猜游戏数字\n");
printf("共有8次机会。\n");
printf("每猜一次程序提示A:x B:y (A:次序数字都对 B:仅数字对)\n");
printf("该程序由08xx2 1队编写\n");
printf("****************************************************\n");
printf("有以下两种方式可供选择:\n");
printf(" 1.游戏系统随机选择\n");
printf(" 2.由其他玩家选择\n");
int n;
char num[10];
int i;
while(1)
{
int flage=0;
while(!flage)
{
printf("请选择输入数字的方式: ");
scanf("%d",&n);
if(n==1)
{
get(num);
flage=1;
}
else if(n==2)//类似密码保护的输入所猜数字
{
printf("请另一玩家输入所猜数字: ");
for(i=0;i<4;i++)
{
num[i]=getch()-48;
putchar('*');
}
printf("\n");
flage=1;
}
else printf("请重新选择\n");
}
time_t time, start, end;
start=clock();
int flag=0;
int count=0;
char gus_num[10];
while(1)
{
printf("请输入不重复的数字(4位)\n");
while(1)
{
scanf("%s",gus_num);
fflush(stdin);
//fflush(stdin)的作用就是清空输入缓冲区,避免缓冲区内残存读取函数无法取走的内容!
if(check(gus_num))
printf("输入非法,请重新输入\n");
else break;
}
for(i=0;i<4;i++)
{
gus_num[i]=gus_num[i]-48;
}
guess(gus_num,num,&flag);
count++;
if(flag==1&&count<=8)
{
end=clock();
time=end-start;
printf("你真聪明!!猜对了!!\n");
printf("此次猜数字时间: %dms\n",time);
break;
}
else if(flag==0&&count<8)
{
printf("该次信息:A:%d B:%d\n",A,B);
printf("你还有%d次机会\n",8-count);
}
else if(count==8)
{
printf("可惜!!次数有限!!\n");
printf("正确答案是: ");
for(i=0;i<4;i++)
{
printf("%d",num[i]);
}
printf(" 哦^_^~");
printf("\n");
break;
}
}
printf("还想玩么?[y/n]\n");
char t;
scanf("%c",&t);
if(t=='n'||t=='N')
break;
else
continue;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -