华中科技大学 2010 奇偶校验

来源:互联网 发布:手机壁纸diy软件 编辑:程序博客网 时间:2024/04/30 09:38

题目:输入一个字符串,对其中的每个字符,求字符的ASCII的二进制表示,放数组的1~7位,校验位放数组的0位,并把数组输出。

学习与体会:

1.什么是奇偶校验码?举例:'a'的ASCII码是97,二进制表示为1100001,如果是奇校验,因为1100001有奇数个1,所以校验位为0,即01100001。

                                              '3'的为0110011,有偶数个1,所以校验位为1(凑出奇数个1),即10110011。 而偶校验则是要凑出偶数个1。

2.cout<<typeid(变量名).name()<<endl; 可以输出变量类型。

3.字符数组的结束符为'\0',可自行赋值使用,例:a[9]='\0'; */

4.memset()函数在头文件<cstring>或<string.h>中。而string类型在<string>中。

#include <iostream>#include <stdio.h>#include <cstring>#include <string>using namespace std;//函数JiOu变量char a[9]={'0','0','0','0','0','0','0','0','\0'};int b;int shang,yu,i=7,num=0;//求字符奇偶校验码并输出void JiOu(char c);int main(){string str;int len,i;while(cin>>str){             //输入字符串len=str.length();     //求长度        for(i=0;i<len;i++)           //对每个字符求奇偶校验码并输出JiOu(str[i]);}return 0;}//求字符奇偶校验码并输出void JiOu(char c){//初始化变量memset(a,'0',8*sizeof(char));    //初始化数组b=(int)c;                        //被除数    i=7;                             num=0;                           //'1'的个数//求出字符c的ASCII的二进制表示,放入a[1]~a[7]中while((shang=b/2)!=0){a[i]=b%2+48;                 //求余(48为字符'0'的ASCII)if(a[i--]=='1')num++;b=shang;                     //商成被除数}a[i]='1';              //非零二进制数的最高位为'1'num++;//求奇偶校验位,放入a[0]中a[0]=num%2==1?'0':'1';//输出printf("%s\n",a);}


1 0
原创粉丝点击