C语言:键入一个01字符串和整数k(0<k<11),输出与字符串的汉明码距为k的所有组合(一行一个),咋写?

C语言:键入一个01字符串和整数k(0<k<11),输出与字符串的汉明码距为k的所有组合(一行一个),咋写?,第1张

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

char a[11],ln

int n,m,x,k,t

printf("Please enter a binary string &k(int 0<k<11)...\n")

if(scanf("%10[0-1]%d",a,&k)==2 &&k>0 &&k<11){//限制长度以不显示太多

for(m=n=ln=0a[ln](n*=2)+=a[ln++]-'0',(m*=2)+=1)//转换为十进制

if(k<=ln){

putchar('\n')

while(m>=0){//算法

for(t=m^n,x=0tx+=t&1,t>>=1)

if(k==x){

for(t=1<<(ln-1)tprintf("%d",!!(t&m)),t>>=1)

putchar('\n')

}

m--

}

}

else

printf("k=%d is too large, invalid input, exit...\n",k)

}

else

printf("Input error, exit...\n")

return 0

}

可以得到汉字的每个字节的ASCII码(内码)值,也可以得到它们的区位码:

#include<stdio.h>

int main()

{unsigned char s[11] int i,a,b

printf("请输入姓名:")

gets(s)

printf("汉字\tASCII码\t\t内码\t区位码\n")

for(i=0s[i]i+=2)

{ a=s[i] b=s[i+1]

printf(" %c%c :\t%d %d\t\t%X%X\t%d",a,b,a,b,a,b,a-160)

if(b<170)printf("0%d\n",b-160)

else printf("%d\n",b-160)

}

system("pause")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11922813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存