算法提高 身份证号码升级
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 char s[20]; 6 const char s1[11]={'1','0','x','9','8','7','6','5','4','3','2'}; 7 const int s2[17]={ 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; 8 int main() 9 { 10 scanf("%s",s); 11 12 for(int i=14;i>=6;i--) 13 s[i+2]=s[i]; 14 s[6]='1'; 15 s[7]='9'; 16 int sum=0; 17 //printf("%c",s[4]); 18 for(int i=16;i>=0;i--) 19 sum+=(int)(s[i]-'0')*s2[i]; 20 sum=sum%11; 21 22 printf("%s",s); 23 printf("%c\n",s1[sum]); 24 }
注意:scanf 中输入字符串时,第一个是数组的0号位置。