#include "stdio.h"
#include "stdlib.h"
/*该函数的功能是给一个四元素的一维数组赋不相同的值*/
void fz(int a[]) {
int i,j,k;
a[0]=rand()%9+1;
for(i=1;i<4;i++)
{a[i]=rand()%10;
do
{for(j=i-1;j>=0;j--)
if(a[i]==a[j]) {k=1; break;}
else k=0;
if(k) a[i]=rand()%10;
}
while(k);
}
}
/*该函数的功能是检验回答结果,并且输出结果*/
void jy(int x[],int y[],int *a,int *b) {
int i,j;
*a=*b=0;
for(i=0;i<4;i++)
if(x[i]==y[i]) (*a)++;
printf("\n%dA",*a);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(x[i]==y[j]) (*b)++;
*b=*b-*a;
printf("\n%dB",*b);
}
main() {
int i,n,j,ys[4],hs[4],a,b,shu;
printf("输入y开始游戏.");
while(getch()=='y') {
fz(ys);
for(n=1;n<=8;n++){
z1:printf("\n第%d次,请输入四个数字:",n);
scanf("%d",&shu);
if(shu<1000 || shu>9999) {printf("格式不对!"); goto z1; }
else {hs[0]=shu/1000; shu=shu%1000; hs[1]=shu/100;shu=shu%100;
hs[2]=shu/10; hs[3]=shu%10;} /* 还是改变不了字母对程序的冲击*/
for(i=0;i<4;i++) printf("%d",hs[i]);
/*z1: printf("\n第%d次,请输入四个数字:",i);
scanf("%d",&shu);
if(shu<1000 || shu>9999) {printf("格式不对!"); goto z1; }
else itoa(shu,hs,10);
for(i=0;i<4;i++) printf("%d",hs[i]); */
/*for(j=0;j<4;j++) {
scanf("%d",&hs[j]);
if(hs[j]<0 || hs[j]>9) {printf("\n 格式不对!"); goto z1;}
} */
jy(ys,hs,&a,&b);
if(a==4) {printf("\n 祝贺你,成功!"); break;}
}
if(i==9) printf("\n 未通过!");
printf("\n答案为:");
for(i=0;i<4;i++) printf("%d",ys[i]);
printf("\n 输入y继续游戏,其他键结束!");
}
getch();
}