yuanyu


私信TA

用户名:yaunyu

访问量:584

签 名:

等  级
排  名 2642
经  验 2213
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:


#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main(){
    char ch[15];//15位数字
    char str[18];  // 18位数字
    int len;
    gets(ch);  //输入15位数字
    int i;
    for(i=0;i<8;i++)  //先把前7,8位代入
    {
        if(i!=6&&i!=7)
        str[i]=ch[i];
        else if(i==6)
        str[i]='1';
        else if(i==7)
        str[i]='9';
     }
     for(i=6;i<15;i++)  //然后在把剩下的位数代入
     {
         str[i+2]=ch[i];
      }
     int sum=0;
    for(i=0;i<17;i++)   //进行调整对应的系数
    {
       if(i==0)
        sum=sum+(str[i]-'0')*7;
        else if(i==1)
        sum=sum+(str[i]-'0')*9;
        else if(i==2)
        sum=sum+(str[i]-'0')*10;
        else if(i==3)
        sum=sum+(str[i]-'0')*5;
        else if(i==4)
        sum=sum+(str[i]-'0')*8;
        else if(i==5)
        sum=sum+(str[i]-'0')*4;
        else if(i==6)
        sum=sum+(str[i]-'0')*2;
        else if(i==7)
        sum=sum+(str[i]-'0')*1;
        else if(i==8)
        sum=sum+(str[i]-'0')*6;
        else if(i==9)
        sum=sum+(str[i]-'0')*3;
        else if(i==10)
        sum=sum+(str[i]-'0')*7;
        else if(i==11)
        sum=sum+(str[i]-'0')*9;
        else if(i==12)
        sum=sum+(str[i]-'0')*10;
        else if(i==13)
        sum=sum+(str[i]-'0')*5;
        else if(i==14)
        sum=sum+(str[i]-'0')*8;
        else if(i==15)
        sum=sum+(str[i]-'0')*4;
        else if(i==16)
        sum=sum+(str[i]-'0')*2;
    }
    sum=sum%11;
    switch(sum) //取对应的数
    {
        case 0:
           str[17]='1';
           break;
        case 1:
            str[17]='0';
            break;
        case 2:
            str[17]='x';
            break;
        case 3:
            str[17]='9';
            break;
        case 4:
            str[17]='8';
            break;
        case 5:
            str[17]='7';
            break;
        case 6:
            str[17]='6';
            break;
        case 7:
           str[17]='5';
            break;
        case 8:
            str[17]='4';
            break;
        case 9:
            str[17]='3';
            break;
        case 10:
            str[17] ='2';
            break;
    }
    puts(str);  //调正之后输出18位数字
    return 0;
}

 

0.0分

0 人评分

  评论区

  • «
  • »