校验和的C语言解答

校验和的C语言解答,第1张

【temp=temp+*chk8】

temp加上 chk8地址并携清上隐陵的值 再复绝前制给temp

【if(temp<*chk8)】

如果temp小于chk8地址上的值

temp自增

chk8位置自增

*chk8 你可以当它是个变量

chk8 的值是一个地址

chk8++ 指针往后移,后移的大小和指针指向类型大小一样.

你指的校验应该是奇偶校验位,奇偶校验是看数据字节的0/1的个数是奇数还是偶数。下面复制一段话:誉绝在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者肢虚陆奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不是真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备历顷能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

#include<stdio.h>

int Quicksum(char *str)           //用指针做校验函数的参数,来接收被校验的字符串A;

{

int sum=0,loc=1,i,n                 //sum代表校验和,loc代表每个字符在字符串A里的位置;

char *p

p=str                                          //将被校验字符串A的地址赋值给字符指针p,用p表示位置;

n=strlen(p)                                    // 用strlen函数求出A的有效长度;

for(i=0i<ni++)                           //注意循环的次数。体会i<n的意思,保证能计算到每个字符

{

if((*p)==' ') {p++ loc++continue}     //如果遇到空格,就将位置指针向后移动做瞎一个,跳过空格

//注意loc也要增加一,为了正确记录每个字符的位置

sum+=((*p-'A')+1)*loc        //如果此处不是空格,就根据校验计算该位置所代表的和,进庆棚行累加

loc++                                  //将位置指针移动到下一个字符,同时loc也跟着变化

p++

}

return sum                     //返回校验和

}

void main()

{

int jiaoyanhe

char *string

printf("Please input (A-Z) : ")

gets(string)                      //使用gets函数输入字符串;

jiaoyanhe=Quicksum(string)     //调用Quicksum函数进行校验和的计算。

printf("jiao yan he :  ")

printf("%d\n",jiaoyanhe)

}

上机运行的时候,把注释全删了吧,要不然可能运行出错,多体会一下吧,这只是其中的一种方法而已,多上机运行代码誉胡则,理解下里面的逻辑,好运。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存