用C语言编写一个程序,验证输入的身份z是否合法?

用C语言编写一个程序,验证输入的身份z是否合法?,第1张

源程序如下:

#include"stdio.h"

voidmain()

{

inti   /*身份z的第i位*/

ints[17] /*定义一个数组用来存放身份z的前17位*/

intt[17] /*各位相乘后的数组*/

intm   /*余数*/

intt18  /*身份z的第18位0--9*/

chart18c /*身份z的第18位X*/

longintsum=0

for(i=0i<17i++)

{

printf("请输入身份z的第%d位:",i+1);

scanf("%d",&s[i])

switch(i+1)

{

/*身份z的1到17位要乘的数一次是7910584216379105842*/

case1:t[i]=s[i]*7break

case2:t[i]=s[i]*9break

case3:t[i]=s[i]*10break

case4:t[i]=s[i]*5break

case5:t[i]=s[i]*8break

case6:t[i]=s[i]*4break

case7:t[i]=s[i]*2break

case8:t[i]=s[i]*1break

case9:t[i]=s[i]*6break

case10:t[i]=s[i]*3break

case11:t[i]=s[i]*7break

case12:t[i]=s[i]*9break

case13:t[i]=s[i]*10break

case14:t[i]=s[i]*5break

case15:t[i]=s[i]*8break

case16:t[i]=s[i]*4break

case17:t[i]=s[i]*2break

}

sum=sum+t[i]

}

printf("前17位相乘后的和为%ld\n",sum)

m=sum%17

printf("对17取余后的值位:",m)

switch(m)

}

/*各个余数所对应第18位身份z号10X98765432*/

case0:t18=1printf("这是一个合法的身份z号码,第18位是%d",t18)break

case1:t18=0printf("这是一个合法的身份z号码,第18位是%d",t18)break

case2:t18c='X'printf("这是一个合法的身份z号码,第18位是%c",t18c)break

case3:t18=9printf("这是一个合法的身份z号码,第18位是%d",t18)break

case4:t18=8printf("这是一个合法的身份z号码,第18位是%d",t18)break

case5:t18=7printf("这是一个合法的身份z号码,第18位是%d",t18)break

case6:t18=6printf("这是一个合法的身份z号码,第18位是%d",t18)break

case7:t18=5printf("这是一个合法的身份z号码,第18位是%d",t18)break

case8:t18=4printf("这是一个合法的身份z号码,第18位是%d",t18)break

case9:t18=3printf("这是一个合法的身份z号码,第18位是%d",t18)break

case10:t18=2printf("这是一个合法的身份z号码,第18位是%d",t18)break

default:printf("这不是一个合法的身份z号码")

}

printf("\n")

}

VC++6.0测试如下(输入一位后按回车输入第二位数)。

在51单片机中,只要将一个值传送给累加器,这个数的奇偶校验值就会影响P。一般而言,在串行通讯中为确保传输数的准确,用到校验位的情况比较多。以下是程序代码:

#include

main()

{

char dat

TMOD=0x20

TH1=0xfd

TL1=0xfd

TR1=1

SCON=0xd0

while(1)

{

dat++

ACC=dat

TB8=P //校验位送第九数据位TB8

SBUF=ACC

while(TI==0)

TI=0

}

}

while(len--!=0)

这句的len的值循环一次就减少1,先执行len!=0,再执行len--。

当len为0时退出循环。

for(i=0x80

i!=0

i/=2)

0x80是十六进制数,也即128

当i!=0时,执行循环体,

然后i=i/2,即i值减半。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存