• 201312-2 ISBN号码


    思路

    暴力解决

    注意事项

    • 数字转字符,字符转数字
    • code=10的时候,是'X'
    #include<bits/stdc++.h>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char *argv[]) {
        char ch[13] = {};
        char tmp;
        int code = 0;
        for(int i = 0; i < 12; i++){
            cin >> tmp;    
            ch[i] = tmp;        
            if(i == 0){
                tmp = (int)(tmp - '0');
                code += tmp;
            }else if(i >= 2 && i <= 4){
                tmp = (int)(tmp - '0');
                code += tmp * i;
            }else if(i >= 6 && i<= 10){
                tmp = (int)(tmp - '0');
                code += tmp * (i-1);
            }
            code %= 11;    
        }
        cin >> tmp;
        // 第一次忘记判断该条件,导致的得不了满分 
        if(tmp == 'X' && code == 10){
            cout << "Right" << endl;
        }else{
            tmp = (int)(tmp - '0');    
            if(tmp == code){
                cout << "Right" << endl;
            }else{            
                if(code == 10){
                    ch[12] = 'X';
                }else{
                    // 数字转字符 
                    char cha;
                    stringstream s;
                    s << code;
                    s >> cha;    
                    ch[12] = cha;    
                }        
                int i = 0;
                while(i < 13){
                    cout << ch[i++];            
                }
            }
        }    
        return 0;
    }

    一个简单的写法,参考csdn的小哥哥

    思路

    • 用数组给数字和字符做了一个映射
    • gets和puts的用法
     char a[14], mod[12] = "0123456789X"; //先将mod11后的十一个字符存入数组
      gets(a); //输入字符串
      int i, j = 1, t = 0;
      for(i = 0; i < 12; i++) {
            if(a[i] == '-') continue; //字符串为分隔符‘-’时跳过此次循环进入下一次循环
        t += (a[i]-'0')*j++; //t储存 第j个  数字  * j 的和
      }
      if(mod[t%11] == a[12]) printf("Right");
      else {
          a[12] = mod[t%11]; //若识别码错误,则赋正确的识别码,然后输出
          puts(a);
      }
      return;
    ————————————————
    版权声明:本文为CSDN博主「ZHUO_SIR」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ZHUO_SIR/java/article/details/86628401
  • 相关阅读:
    java实现网络监听
    程序员必须知道FTP命令
    Java进化的尽头
    Oracle逻辑备份与恢复(Data Pump)
    JQuery日期选择器插件date-input
    大型高并发高负载网站的系统架构剖析
    万言万当,不如一默为官之道
    angular.js高级程序设计书本开头配置环境出错,谁能给解答一下
    安装meteor运行基本demo发生错误。
    nodejs 通过 get获取数据修改redis数据
  • 原文地址:https://www.cnblogs.com/YC-L/p/13166560.html
Copyright © 2020-2023  润新知