这个C语言程序设计题不会做,求大神指导。请把代码写清楚,尽量简洁。谢谢!题目如下: 20

(1)从键盘上读入一个4位正整数a(个十百千位上的数各不相同),作为基准数。(假设该数我们不知道是多少,我们希望通过计算机做出一系列的判断,来确定该数。)(2)再从键盘读... (1) 从键盘上读入一个4位正整数a(个十百千位上的数各不相同),作为基准数。(假设该数我们不知道是多少,我们希望通过计算机做出一系列的判断,来确定该数。)
(2) 再从键盘读入一个4位正数作为对比数b,用子函数判断对比数b与基准数a之间的差异。如果b中包含有M个a中的数,而且这些数的位还是相同的,则记为MA;如果b中包含有N个(N<=4,整数)A中的数字,且这些数的位不同,则输出NB;
如:a=3295, b=6279,则N=1,M=1,计算机输出提示:1A1B。
(3) 以对比数b做参照,计算机按照提示的MANB,输出所有可能的4位数的情况,记为序列k。(显然,基准数是被包含其中的。)
(4) 再从键盘上读入一个4位数c作为新的对比数,(该数输入序列内的成员之一),重复步骤(2)和(3)。
(5) 直到最后输出的4位数只有基准数。最后,统计为了找到这个基准数,用了多少个对比数。
展开
 我来答
yc14159265
2012-11-28 · TA获得超过499个赞
知道小有建树答主
回答量:124
采纳率:100%
帮助的人:43万
展开全部
#include<stdio.h>
main()
{
char w[4],q[4];
int M=0,N=0,i,j,cishu=0;
// srand(time(0)); //随机种子(是程序运行时产生的随机数不同)
q[0]=rand()%9+48; //产生不同的随机数
do
{
q[1]=rand()%9+48;
}while(q[0]==q[1]);
do
{
q[2]=rand()%9+48;
}while((q[1]==q[2])||(q[0]==q[2]));
do
{
q[3]=rand()%9+48;
}while((q[0]==q[3])||(q[1]==q[3])||(q[2]==q[3]));

q[4]='\0';
printf("%s\t",q);
do{ //循环
M=0,N=0;
scanf("%s",w);
for(i=0;i<=3;i++) //判断有多少个数位置相同且数字相同
if(q[i]==w[i])
M++;
for(i=0;i<=3;i++) //判断有多少个数数字相同
for(j=0;j<=3;j++)
if(w[i]==q[j])
N++;
N-=M; //排除重复计算
cishu++;
printf("%d-->%dA,%dB\t",cishu,M,N);
}while(!strcmp(q,w)); //判断是否相同
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式