?? 1.cpp
字號(hào):
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<string.h>
int A,B;
void get(char num[])//由游戲自動(dòng)獲取所猜數(shù)字
{
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)//比較輸入數(shù)字和所猜數(shù)字
{
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("類似文曲星的猜游戲數(shù)字\n");
printf("共有8次機(jī)會(huì)。\n");
printf("每猜一次程序提示A:x B:y (A:次序數(shù)字都對(duì) B:僅數(shù)字對(duì))\n");
printf("該程序由08xx2 1隊(duì)編寫\n");
printf("****************************************************\n");
printf("有以下兩種方式可供選擇:\n");
printf(" 1.游戲系統(tǒng)隨機(jī)選擇\n");
printf(" 2.由其他玩家選擇\n");
int n;
char num[10];
int i;
while(1)
{
int flage=0;
while(!flage)
{
printf("請(qǐng)選擇輸入數(shù)字的方式: ");
scanf("%d",&n);
if(n==1)
{
get(num);
flage=1;
}
else if(n==2)//類似密碼保護(hù)的輸入所猜數(shù)字
{
printf("請(qǐng)另一玩家輸入所猜數(shù)字: ");
for(i=0;i<4;i++)
{
num[i]=getch()-48;
putchar('*');
}
printf("\n");
flage=1;
}
else printf("請(qǐng)重新選擇\n");
}
time_t time, start, end;
start=clock();
int flag=0;
int count=0;
char gus_num[10];
while(1)
{
printf("請(qǐng)輸入不重復(fù)的數(shù)字(4位)\n");
while(1)
{
scanf("%s",gus_num);
fflush(stdin);
//fflush(stdin)的作用就是清空輸入緩沖區(qū),避免緩沖區(qū)內(nèi)殘存讀取函數(shù)無法取走的內(nèi)容!
if(check(gus_num))
printf("輸入非法,請(qǐng)重新輸入\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("你真聰明!!猜對(duì)了!!\n");
printf("此次猜數(shù)字時(shí)間: %dms\n",time);
break;
}
else if(flag==0&&count<8)
{
printf("該次信息:A:%d B:%d\n",A,B);
printf("你還有%d次機(jī)會(huì)\n",8-count);
}
else if(count==8)
{
printf("可惜!!次數(shù)有限!!\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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -