整形数字转化为字符串,求有几位相同(汉明距离)

问题描述:

将两个位数相同的正整数转换为字符串,然 后求得两个字符串之间的汉明距离(汉明距离即相同位置上字符不同的个数)。

比如将正整数 1024 和 2048 转换为字符串 "1024" 和 "2048" ,它们的汉明距 离为 3。

编程要求:

1)编写函数 void IntToStr(int n, char *str),实现将正整数 n 转换为字符串 str;
2)编写函数 int differ(char *str1,char *str2),返回字符串 str1 和字符串 str2 的 汉明距离; 3)编写主函数实现从键盘输入两个正整数,然后调用 IntToStr 函数将它们转 换为字符串,最后调用 differ 函数求得它们的汉明距离并输出。

#include<stdio.h>
#include<math.h>
#include<string.h>
void IntToStr(int n, char *str){
    int t=n,cnt=0,i=0,a;
    while(t!=0){
        cnt++;
        t/=10;
    }
    while(n!=0){
        a=(int)(n/pow(10,cnt-1));
        str[i++] = a + '0';
        n-=(int)(a*pow(10,cnt-1));
        cnt--;
    }
}
int differ(char *str1,char *str2){
    int i,d=0,len;
    len=strlen(str1);
    for(i=0;i<len;i++){
        if(str1[i]!=str2[i])
         d++;
    }
    return d;
}
int main() {
    int a,b;
    char str1[100],str2[100];
    scanf("%d %d",&a,&b);
    IntToStr(a,str1);
    IntToStr(b,str2);
    int d = differ(str1,str2);
    printf("%d",d);
    return 0; 
}