求解c语言考题 猜数游戏: 功能一:计算机想好了一个4位无重复数字,例如:0913是可以的,350
1个回答

//猜数游戏

/*

猜数游戏:

功能一:计算机想好了一个4位无重复数字,例如:0913是可以的,

3502也是可以的,6787不可以,现在您想办法把这个数字猜出来,

每猜一个数字,计算机会根据这个数字给出几A几B,

其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。

如正确答案为5234,而猜的人猜5346,则是1A2B。其中有一个5的位置对了,记为1A;n

而3和4这两个数字对了,而位置没对,因此记为2B;一共有10次机会,注意,:输入的数字不能重复。

*/

#include

#include

#include

int n=0;

int cmp(char a[],char b[])//比较

{

int s=0,i,j;

for(i=0;i<4;i++)

if(a[i]==b[i])

s++;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(b[j]==a[i]&&j!=i)

n++;

}

}

return s;

}

main()

{

srand((unsigned)time(NULL));

char a[5],b[5];

int i,j,s,k=0;

for(i=0;i<4;i++)//无重复4位数

{

a[i]=rand()%10+48;

for(j=i-1;j>=0;j--)

{

if(a[i]==a[j])

{

i--;

break;

}

}

}

a[i]='';

//puts(a);测试用,下面是输入过程

do{

gets(b);

s=cmp(a,b);

printf("1A:%dt2B:%dn",s,n);

n=0;

k++;

}while(s!=4&&k!=10);

if(k!=10)//结果

printf("You Win,the num is %s",a);

else

printf("You Lost,the num is %s",a);

} 我自己写了个 不知道可否满意 测试已成功

您好,很高兴为您解答,流星不死为您答疑解惑如果本题还有不懂的地方请追问,望采纳我的回答。祝楼主学习进步。上面的代码可以直接复制到编译器里,带换行。