#include<stdlib.h>
int same(int str[4])
{int i,j,m=0;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
if(str[i]==str[j]) m=1;
return(m);
}
void ran(int str[4])
{int i;
do
{for(i=0;i<4;i++)
str[i]=random(9);
}while(same(str));
}
main()
{int i,j,a=0,b=0,count=0,str1[4],str2[4];
char c;
ran(str1);
loop: printf("\nplease input four numbers:");
do
{a=0; b=0;
for(i=0;i<4;i++)
{scanf("%D",&str2[i]);
if(str1[i]==str2[i]) a++;
}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(str1[i]==str2[j]) b++;
b=b-a;
printf("\nA=%d,B=%d\n",a,b);
count++;
}while(count!=9&&a!=4);
printf("the correct answer is:");
for(i=0;i<4;i++)
printf(" %d",str1[i]);
if(a==4) printf("Congratulations");
else printf("you fail the game\n");
printf("would you try again(y/n)");
scanf("%c",&c);
if(c=='y') goto loop;
}
这个程序最后输入字符的语句为什么为顶用啊?
----------------解决方案--------------------------------------------------------
goto只是个跳转,不过建议用do...while结构
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
应该是它把前面输入中的回车当作它的输入了吧
----------------解决方案--------------------------------------------------------
fflush(stdin);
在scanf前加一句这试试,清除缓存
如果还不行,将scanf语句改成这样,在%c前加一空格
scanf(" %c",&c);
----------------解决方案--------------------------------------------------------