#include <stdlib.h>
#include <stdio.h>
#include <time.h>
struct numeric_rec{
char a;
char b;
};
typedef struct numeric_rec nr;
int is_in(char *a,int n);
int main()
{
int i,j,num=4;
char *ans=NULL,*usr=NULL,*ptr=NULL,tmp,chk;
nr col={0,0};
long tt;
srand(time(&tt)%60);
ans=(char *)malloc(sizeof(char)*num);
for(i=0;i<num;i++){
if(i>0){
do{
ptr=ans;
tmp=rand()%10;
chk=0;
while(ptr!=&ans[i]){
if(*(ptr++)==(tmp+48)){
chk=1;
break;
}
}
}while(chk==1);
ans[i]=tmp+48;
}else{
tmp=rand()%10;
ans[i]=48+tmp;
}
}
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) || strlen(usr)!=num){
printf("數字不符或重覆!\n");
continue;
}
printf("\n結果:");
for(i=0;i<num;i++){
chk=0;
for(j=0;j<num;j++){
if(usr[i]==ans[j]){
if(i==j){
col.a++;
chk=1;
}else{
col.b++;
}
}
}
if(chk==1){
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;
}
沒有留言:
張貼留言