#include <stdlib.h>
#include <stdio.h>
#include <time.h>
struct checkup{
char used;
char pos;
};
struct numeric_rec{
char a;
char b;
};
typedef struct checkup nchk;
typedef struct numeric_rec nr;
int is_in(char *a,int n);
int main()
{
int i,num=4;
char *ans=NULL,*usr=NULL,tmp;
nr col={0,0};
nchk chk[10]={{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
long tt;
srand(time(&tt)%60);
ans=(char *)malloc(sizeof(char)*num);
tmp=rand()%10;
ans[0]=48+tmp;
chk[tmp].used=1;
chk[tmp].pos=0;
for(i=1;i<num;i++){
do{
tmp=rand()%10;
}while(chk[tmp].used==1);
ans[i]=48+tmp;
chk[tmp].used=1;
chk[tmp].pos=i;
}
usr=(char *)malloc(sizeof(char)*(num+1));
printf("%d位數\n",num);
do{
col.a=0;
col.b=0;
printf("猜:");
scanf("%s",usr);
if(is_in(usr,num)){
printf("數字不可重覆!\n");
continue;
}
printf("\n結果:");
for(i=0;i<num;i++){
tmp=usr[i]-48;
if(chk[tmp].used==1){
if(chk[tmp].pos==i){
col.a++;
printf("[%c]",usr[i]);
}else{
col.b++;
printf("%c",usr[i]);
}
}else{
printf("%c",usr[i]);
}
}
printf(" (%dA%dB)\n",col.a,col.b);
}while(col.a!=num);
system("pause");
return 0;
}
int is_in(char *a,int n){
char chk[10]={0,0,0,0,0,0,0,0,0,0};
int i,tmp;
for(i=0;i<n;i++){
tmp=a[i]-48;
if(chk[tmp]!=1){
chk[tmp]=1;
}else{
return 1;
}
}
return 0;
}
沒有留言:
張貼留言