feng1256,很感谢你的帮助~
我已经把这个程序改进了,我现在把源程序再发一遍~
#include
#include
#include
#include
#include
static int n=0;
void main(void)
{
int answer[4],i,j,guess=0,a,b,times=0,f,d,t[4];
char c;
while(!n)
{
for(i=0;i<4;i++) /*开始猜数字游戏*/
{
srand((unsigned)time(NULL));
answer[i]=1+rand()%9; /*产生1~9的随机数*/
for(j=0;j
{
while(answer[i]==answer[j])
{
answer[i]=rand()%10;
j=-1;
}
}
}
loop: printf("Please guess:\n");
while(a!=4)
{
a=0;
b=0;
times++;
do
{
printf("%-4d",times);
scanf("%d",&guess);
if(guess==0) /*判断是否字符*/
exit(0);
}while(guess<1000||guess>9999);
f=guess;
for(i=3;i>-1;i--)
{
t[3-i]=(int)guess/pow(10,i);
guess=guess-(int)(guess/pow(10,i))*pow(10,i);
}
for(i=0;i<4;i++) /*如果输入的四位数有相同数字则重新输入*/
for(j=i+1;j<4;j++)
{
if(t[i]==t[j])
{
clrscr();
times=0;
goto loop;
}
}
guess=f;
for(i=3;i>-1;i--)
{
for(j=0;j<4;j++)
if((int)(guess/pow(10,i))==answer[j])/*比较第一位,相等则继续,
不等则比较下一位*/
{
if(i+j==3) /*位置一样则a+1*/
a=a+1;
else /*位置不一样则b+1*/
b=b+1;
}
guess=guess-(int)(guess/pow(10,i))*pow(10,i);/*开始下一位比较*/
}
printf(" %dA%dB\n",a,b);
}
printf("congratulation to you!\n");
printf("you take %d times to guess right!\n",times);
/* printf("this time generated number is:\n");
for(i=0;i<4;i++)
printf("%3d",answer[i]);
printf("\n"); */
fflush(stdin); /*清除键盘缓冲区*/
printf("do you want to continue(y/n)?");
scanf("%c",&c);
if(c=='y')
{
guess=0;
a=0;
b=0;
times=0;
n=0;
}
else if(c=='n')
{
n=1;
printf("welcome next time!\n");
}
}
getch();
}