刚刚没看清下面那句
你到底是要猜几次啊?
while(counter<=6)
这句话明显表明是要猜6次嘛。
你这句话已经有判断猜几次的功能。
你判断猜多少次之后错误,然后系统提示出错信息。
你认为错误的原因是由于他没有提示是吧?
可是你把提示出错信息的那句话放到死循环的外头,必然是错的。肯定看不到啊。
你试试这样行不行:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define SIZE 4
main()
{ int enter=1,stop,a[SIZE],b[SIZE],guessnum,i,j,counter,countera,counterb,counter0,extra,x=0;
int t;
//int enter=1,stop,a[SIZE],b[SIZE],guessnum,i,j,counter,countera,counterb,counter0,extra;
char ch;
srand(time(NULL));
while(enter==1)
{ stop=2;
while(stop==2)
{ extra=1;
for(i=0;i<=SIZE-1;i++)
a[i]=rand()%10;
for(i=0;i<=SIZE-1;i++)
{ for(j=i+1;j<=SIZE-1;j++)
{ if(a[i]==a[j]) extra=2; }
}
if(a[0]!=0&&extra==1) {stop=1;printf("%d%d%d%d",a[0],a[1],a[2],a[3]);}
}
counter=1;
while(counter<=6)
{ printf("Please guess the number:\n");
scanf("%d",&guessnum),printf("----%d\n",x);
for(i=0;i<=SIZE-1;i++)
b[i]=guessnum/(int)pow(10,SIZE-1-i)%10;
countera=0;
for(i=0;i<=SIZE-1;i++)
{ if(a[i]==b[i]) countera++;}
counter0=0;
for(i=0;i<=SIZE-1;i++)
{ for(j=0;j<=SIZE-1;j++)
{ if(a[i]==b[j]) counter0++;}
}
counterb=(counter0-countera);
if(countera==4)
{ printf("Wonderful!You guessed the number.Then,please input your choice,'1' represents going on,'2' represents breaking\n");
counter=7;
scanf("%d",&enter);
}
else{ printf("%dA%dB\n",countera,counterb);
counter++;
}
}
printf("你失败了,答案是:%d%d%d%d\n",a[0],a[1],a[2],a[3]);
}
// while((ch=getchar())!='s'&&ch!='S');
return 0;
}
counter这个变量从我看你这个程序,我认为是用来表示你所要猜的次数,你自己好好看看吧。
[此贴子已经被作者于2007-7-1 21:06:59编辑过]