#41097: 請問這樣寫錯在哪阿?(C++)


shawn930212@gmail.com (郭星諭)

學校 : 不指定學校
編號 : 275573
來源 : [42.73.228.144]
最後登入時間 :
2024-08-21 21:17:22
a020. 身分證檢驗 | From: [42.72.111.163] | 發表日期 : 2024-07-03 11:55

#include <iostream>
using namespace std;
int main()
{
    char city;
    int sum=0;
    int array[9]={0};
    cin>>city;
    for(int i=0;i<9;i++)
    {
        cin>>array[i];
    }
    //用ASCII CODE 將char轉成integer
    if(city >= 65 && city <= 72) //deal with A-H
        city-= 55;
    else if(city == 'I')
        city -= 39;
    else if(city >= 74 && city <= 78)
        city -= 56;
    else if(city == 'O')
        city -= 44;
    else if(city >= 80 && city <= 86)
        city -= 57;
    else if(city == 'W')
        city -= 55;
    else if(city == 'X' || city == 'Y')
        city -= 58;
    else if(city == 'Z')
        city -= 57;
    sum=9*(city%10)+(city/10);
    for(int n=0;n<8;n++)
    {
        sum=array[n]*(8-n)+sum;
    }
    sum=sum+array[8];

    if(sum%10 == 0)
        printf("real");
    else
        printf("fake");

    return 0;
}
 
#41122: Re: 請問這樣寫錯在哪阿?(C++)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.15.1.195]
最後登入時間 :
2024-12-23 09:25:32
a020. 身分證檢驗 | From: [114.136.214.28] | 發表日期 : 2024-07-05 16:04

 
    int array[9]={0};
    cin>>city;
    for(int i=0;i<9;i++)
    {
        cin>>array[i];
    }


你輸入用int,程式會把身分證的9位數當成一個整數

 
ZeroJudge Forum