我写的程序:
#include <stdio.h>#include <stdlib.h>long htoi(char s[]) /*将十六进制数转化为十进制*/{ long i,n=0; for(i=0;s[i]!='\0';i++){ if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; else if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; else if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; } return n;}long haiming(char* a,char* b) /*计算海明距离*/{ long num=0,mask; long m=htoi(a); long n=htoi(b); long t=m^n; for (mask=524288; mask>=1; mask /=2) if ((t & mask)!=0) num++; return num;}
int main(){ long k,n,i,j,x,min,t;/*k:测试对数,n:每一组数据的个数*/ scanf("%d",&k); for(x=0;x<k;x++) { char** a; scanf("%d",&n); /*动态申请二维数组a[n][10]*/ a=(char**)malloc(n*sizeof(char *)); for(i=0;i<n;i++) a[i]=(char *)malloc(6*sizeof(char)); /*输入二维数组a[n][5]*/ for(i=0;i<n;i++) {gets(a[i]); getchar();} /*计算海明距离*/ for(i=0,min=20;i<n-1;i++) for(j=i+1;j<n;j++) { t=haiming(a[i],a[j]); if(t<min) min=t; } printf("%d\n",min); /*释放二维数组*/ for(i=0;i<n;i++) free(a[i]); free(a); fflush(stdin); //清空缓存区 } return 0;}
输出结果为什么都是6,哪里有问题
c语言大神帮我看看,为什么结果输出不对,输入27638496,要求结果64862
你的主函数main 里的输入输出语句的标示符%1d写错了,应该是%ld(小写的LD)而不是%1d(数字1小写D),把main函数中的scanf("%1d",&n);改成scanf("%ld",&n); 把printf("\\nThe result is:%1d\\n",get_even(n));改成printf("\\nThe result is:%ld\\n",get_even(n));就没有问题了.
C语言冒泡排序输出程序,帮忙看看哪里错了,输出结果不对,在线等!!!
程序完全正确的,因为这个代码是对数据进行升序的排序。排序以后的数字8是在第八个位置,在数组中的下标就是7。
C语言求解,谁帮我看看我哪里错了,答案不对
if((a+b+c+d)%15==0) { t = a*1000 + b*100 + c*10 + d; sum += t; \/\/ 这句要放在if的范围内} 我提供一个更好的写法 include <stdio.h>int main() {int a, b, c, d;long sum = 0, t;for (t = 1000; t < 10000; t += 2) {a = t \/ 1000;b =...
c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...
C语言开关灯问题,麻烦大神们帮我看看这个程序哪里错了啊,结果不对...
1、int a[6000]={1};这句。你这只是将a[0]赋值1,其他都是0,数组默认以0填充,应该改为:int a[6000];for(i=0;i<6000;i++)a[i]=1;2、第二层循环里:if(a[j]==0)a[j]=1;if(a[j]==1)a[j]=0;这个语句把所有的灯都关闭了,因为如果关了,就打开;打开后又关了。逻辑...
C语言求助,哪位大佬帮我看看这道题?一直搞不清楚
知道答主 回答量:133 采纳率:0% 帮助的人:5.2万 我也去答题访问个人页 关注 展开全部 这是一道C语言的增删改查的链表操作操作的典型题目,同时考察对结构体的理解程度。最简单的就是使用顺序链表做。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 ...
C语言switch语句 大神看看哪里出了问题 为什么我求出来的利息与本金的...
s应在switch语句前赋值,如下:s=(long)b*(1+((float)year*年利率))注意b和year都为整型,在×利率前必须转化为浮点数型,否则因为year数值太小,精度会非常低,算出结果很不准。或者写为:s=(long)b*(1.0+年利率×year))其实更好的办法应该设b和s为double型,因为人民币不是也有一毛一分...
请C语言高手看看为什么计算结果的小数部分与答案不同
j就是连乘的结果,j=i;这一步不用了;s=s+1.0\/i 要改成 s=s+1.0\/j 这么改好后理论上是对的,输入n 较小的话,可以和答案比较接近,但是n如果稍大一点,比如40,计算就会溢出,不能得到正确的结果。所以这个算法基本上可以认为是没有用的,只能得到很粗略的近似结果,想要精确的话还得...
C语言编程:谁帮我看看这段程序哪出错了?
...n=n+1;...} n从2开始,是素数,输出;然后遇到n=n+1;n变成3;一次循环结束,遇到n++,n变成4,4是合数,因此不会有输出;每次循环,n都增加了2,因此,n的值是:2,4,6,8,...,100 这里面当然除了2没有其他素数。因此,将n=n+1;删除即可。n从2到k,每一个都要查看。
我是c语言小白,问问大神帮我看看编写的简单程序这哪里出错了?
#include<stdio.h> 输入代码时忽视输入法隐藏的错误 表面上看都是一样的代码,但是第二行就有错误,是全角和半角的不同,再看:正确编译运行 所以你的代码没有任何问题,但是要注意代码输入的方法。以前回答了很多,有时间可以看看我最近回答c语言问题:网页链接 网页链接 网页链接 网页链接等等。