#9755: C++ 之我的數字和大得見鬼了


song856854132 (Steve)

學校 : 國立嘉義高級中學
編號 : 48007
來源 : [49.218.98.193]
最後登入時間 :
2017-11-30 21:24:33
a020. 身分證檢驗 | From: [73.12.0.148] | 發表日期 : 2015-03-30 02:52


請大大過目
 
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string a;
    while(getline(cin,a))
    {
        int check=0;

        switch (a[0])
        {
           case 'A': check = 1 + 0 * 9; break;
           case 'B': check = 1 + 1 * 9; break;
           case 'C': check = 1 + 2 * 9; break;
           case 'D': check = 1 + 3 * 9; break;
           case 'E': check = 1 + 4 * 9; break;
           case 'F': check = 1 + 5 * 9; break;
           case 'G': check = 1 + 6 * 9; break;
           case 'H': check = 1 + 7 * 9; break;
           case 'I': check = 3 + 4 * 9; break;
           case 'J': check = 1 + 8 * 9; break;
           case 'K': check = 1 + 9 * 9; break;
           case 'L': check = 2 + 0 * 9; break;
           case 'M': check = 2 + 1 * 9; break;
           case 'N': check = 2 + 2 * 9; break;
           case 'O': check = 3 + 5 * 9; break;
           case 'P': check = 2 + 3 * 9; break;
           case 'Q': check = 2 + 4 * 9; break;
           case 'R': check = 2 + 5 * 9; break;
           case 'S': check = 2 + 6 * 9; break;
           case 'T': check = 2 + 7 * 9; break;
           case 'U': check = 2 + 8 * 9; break;
           case 'V': check = 2 + 9 * 9; break;
           case 'W': check = 3 + 2 * 9; break;
           case 'X': check = 3 + 0 * 9; break;
           case 'Y': check = 3 + 1 * 9; break;
           case 'Z': check = 3 + 3 * 9; break;
        }

        int i;
        for(i=1;i<9;i++)
        {
            cout<< a[i]<<"*"<<(9-i)<<endl;  // 這是檢查a[i] and (9-i)用的,測試時也很正常 like 1*8, 5*7
            check+=((9-i)*a[i]);                    // 但這裡就見鬼了,每回都幾百幾百的加
        }
        check=check+a[9];

        if (check%10==0)
        {
            cout<< "real"<<endl;
            break;
        }
        else
        {
            cout<< "fake"<<endl;
            break;
        }


    }

    return 0;
 
#9756: Re:C++ 之我的數字和大得見鬼了


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a020. 身分證檢驗 | From: [140.113.68.54] | 發表日期 : 2015-03-30 16:51


請大大過目
 
#include
#include

using namespace std;

int main()
{
    string a;
    while(getline(cin,a))
    {
        int check=0;

        switch (a[0])
        {
           case 'A': check = 1 + 0 * 9; break;
           case 'B': check = 1 + 1 * 9; break;
           case 'C': check = 1 + 2 * 9; break;
           case 'D': check = 1 + 3 * 9; break;
           case 'E': check = 1 + 4 * 9; break;
           case 'F': check = 1 + 5 * 9; break;
           case 'G': check = 1 + 6 * 9; break;
           case 'H': check = 1 + 7 * 9; break;
           case 'I': check = 3 + 4 * 9; break;
           case 'J': check = 1 + 8 * 9; break;
           case 'K': check = 1 + 9 * 9; break;
           case 'L': check = 2 + 0 * 9; break;
           case 'M': check = 2 + 1 * 9; break;
           case 'N': check = 2 + 2 * 9; break;
           case 'O': check = 3 + 5 * 9; break;
           case 'P': check = 2 + 3 * 9; break;
           case 'Q': check = 2 + 4 * 9; break;
           case 'R': check = 2 + 5 * 9; break;
           case 'S': check = 2 + 6 * 9; break;
           case 'T': check = 2 + 7 * 9; break;
           case 'U': check = 2 + 8 * 9; break;
           case 'V': check = 2 + 9 * 9; break;
           case 'W': check = 3 + 2 * 9; break;
           case 'X': check = 3 + 0 * 9; break;
           case 'Y': check = 3 + 1 * 9; break;
           case 'Z': check = 3 + 3 * 9; break;
        }

        int i;
        for(i=1;i<9;i++)
        {
            cout<< a[i]<<"*"<<(9-i)<
            check+=((9-i)*a[i]);                    // 但這裡就見鬼了,每回都幾百幾百的加
        }
        check=check+a[9];

        if (check%10==0)
        {
            cout<< "real"<
            break;
        }
        else
        {
            cout<< "fake"<
            break;
        }


    }

    return 0;


C++的字元是用ASCII編碼
 
你讀進來的是字串 不是數字
'0' 在 ASCII 編碼是 48
'1' 在 ASCII 編碼是 49
...
'9' 在 ASCII 編碼是 57 
 
ZeroJudge Forum