
根据要求一步一步进行做题就可
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(){
char str[20];
int len,i,k,j,sum;
int a[21]={7, 9,10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char res[12]="10x98765432";
gets(str);
len=strlen(str);
//先添加19字样,把年份变成四位数
k=len+1;
str[k+1]='\0';
for(j=len-1;j>=6;j--){
str[k]=str[j];
k--;
}
str[6]='1';
str[7]='9';
//将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加
sum=0;
for(i=0;i<17;i++){
sum+=(str[i]-'0')*a[i];
}
//然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。
sum%=11;
printf("%s",str);
printf("%c\n",res[sum]);
return 0;
}
版权声明:本文为weixin_44205451原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。