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

(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位数只有基准数。最后,统计为了找到这个基准数,用了多少个对比数。

#include<stdio.h>
#include<string.h>
char *cmp(int aver, int bver)
{
int a[4], b[4];
int i, j, A = 0, B = 0;
char str[5];
a[0] = aver % 10; //拆分成四位
a[1] = aver / 10 % 10;
a[2] = aver / 100 % 10;
a[3] = aver / 1000;
b[0] = bver % 10;
b[1] = bver / 10 % 10;
b[2] = bver / 100 % 10;
b[3] = bver / 1000;
for(i = 0; i < 4; i ++)
for(j = 0; j < 4; j++)
{
if(a[i] == b[j])
if(i == j)
A ++;
else
B ++;
}
sprintf(str, "%dA%dB\0", A, B); //合成字符串返回
return str;
}
void main()
{
int a, b, i;
char str[5], str1[5];
char *s = str, *s1 = str1;
char *str2 = "4A0B"; //要找到基准数,即当打印结果为 4A0B 结束
int sum = 0; //统计使用对比数个数
printf("Please input number a: ");
scanf("%d", &a);
while(1)
{
printf("Please input number b: ");
scanf("%d", &b);
sum ++;
memcpy(s, cmp(a, b), 5);
printf("%s\n", s);
printf("%s\n", s);
if(memcmp(str2, s, 5) == 0) //match成功则跳出循环,结束程序
break;
printf("The sequence K : ")
for(i = 1000; i < 10000; i++)
{
memcpy(s1, cmp(b, i), 5);
if(memcmp(s, s1, 5) == 0)
{
printf("%d\n", i); //将序列k输出,如果不想页面跳得太快,可以使用printf("%d ", i);
}
}
}
printf("Total match time: %d\n", sum);
}追问

程序貌似运行不了啊。怎么回事?说有错误。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

急!急!简单c语言编程题,求编写代码
因为空格不好看见,就用*代替 printf("%c",'*'); for(j=0;j<2*k+1;j++)\/\/控制输出字母 { printf("%c",65+j); } printf

这题好难,求大神帮忙 C语言程序设计题
include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXSIZE 1024#define uLL unsigned long long\/\/ K进制转10进制 uLL kBit_to_10(const char* num, int k){ uLL res = 0, p = 1; for(int i = strlen(num)-1; i >= 0; --i, p*=k){ int bit;...

C语言程序设计 我是C语言初学者,有一道看程序的题我有些弄不懂,还请...
答案:C A:是如果a>b,则一程序一直执行到“b=c;”,效果是换a与b的值;B:是如果a>b,则执行{ }里的语句,效果是交换a与b的值;C:是如果a>b,则执行c=a; 无论a是否大于b,c的值都要给a,a-b;没什么作用;D:是如果a>b,则效果是交换a与b的值,c相当于中转站,a-b;没什么作...

c语言程序大神帮忙设计一下?
1、实现文件写入功能,一次写入一个职工信息。2、实现查询功能(包含4种条件查询)。3、实现信息删除和修改并写入文件。根据题意,数据用结构数组存储,且职工编号唯一性,因此单独两个函数计算信息长度和编号。除条件查询函数和读取文件的函数,不会自行free释放内存。如你写代码调用,注意自行写free语句释放...

关于c语言程序设计的问题求大神帮忙!万分感谢!
printf("请依次输入三角形的三边:");scanf("%f%f%f",&a,&b,&c);if(((a+b)>c)&&((a+c)>b)&&((b+c)>a)&&((a-b)<c)&&((a-c)<b)&&((b-c)

关于c语言程序设计的问题求大神帮忙!万分感谢!
编译是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中...

C语言编程:如下要求的题目咋写代码?
代码文本:include "stdio.h"int max(int a[],int n,int *p){ for(n--,*p=0;n>=0;n--)if(a[*p]=0;n--)if(a[*p]>a[n])p=n;return a[*p];} int main(int argc,char *argv[]){ int a[20]={13,19,12,9,10,3,7,18,1,11,20,8,2,14,15,16,4,5,6,17},ma...

请高手用C语言帮忙做个编程的题目,谢谢了!
int IsDevided(int number,int dev){ if(number %dev == 0){ return 1;} return 0;} void EasyDone(int a){ int chose;int i,j;printf("Input your chose\\n1>能被3整除的"<Enter 1>","\\n2>能被5整除的<Enter 2>","\\n3>能被3或5整除的<Enter 3>\\n");scanf("%d",&chose)...

有3到C语言程序设计题目不懂,帮帮忙解释一下。。谢谢!!
选C你应该是理解了吧 3、 还是像前两题一样,知识点自己看书。我只在此说明一些可能出现的 细节上的问题:下面的代码是题目中的代码:int x;scanf("%d",&x);if(x>250) putchar('X');if(x<250) putchar('Y');else putchar('X');将上面的程序和下面的做一对比:int x;scanf("%d...

相似回答