#29116: 求救 c++


cindie060806@gmail.com (c)

學校 : 臺北市立第一女子高級中學
編號 : 180566
來源 : [123.193.99.55]
最後登入時間 :
2023-10-21 17:32:55
a020. 身分證檢驗 | From: [123.193.65.111] | 發表日期 : 2022-01-30 12:50

#include <iostream>
using namespace std;
int main()
{
char letter, b[11];
int x, S=0, i;
cin >> letter;
for (i=2; i<=10; i++)
cin >> b[i];
if (letter >= 'A' && letter <= 'H')
x = (int)letter - 55;
if (letter >= 'J' && letter <= 'N')
x = (int)letter - 56;
if (letter >= 'P' && letter <= 'Z')
x = (int)letter - 57;
if (letter == 'I')
x = (int)letter - 39;
if (letter == 'O')
x = (int)letter - 44;
b[0] = x/10;
b[1] = x%10;
for (i=2; i<=10; i++)
{S += b[i]*(11-i);
S = S + b[0] + b[1]*9 + b[10];
}
if (S%10 == 0)
cout << "real" << endl;
else
cout << "fake" << endl;
return 0;
}
 
output都是fake😵‍💫
 
#29117: Re:求救 c++


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.15.1.195]
最後登入時間 :
2024-12-23 09:25:32
a020. 身分證檢驗 | From: [39.10.69.232] | 發表日期 : 2022-01-30 14:00

#include
using namespace std;
int main()
{
char letter, b[11];
int x, S=0, i;
cin >> letter;
for (i=2; i<=10; i++)
cin >> b[i];
if (letter >= 'A' && letter <= 'H')
x = (int)letter - 55;
if (letter >= 'J' && letter <= 'N')
x = (int)letter - 56;
if (letter >= 'P' && letter <= 'Z')
x = (int)letter - 57;
if (letter == 'I')
x = (int)letter - 39;
if (letter == 'O')
x = (int)letter - 44;
b[0] = x/10;
b[1] = x%10;
for (i=2; i<=10; i++)
{S += b[i]*(11-i);
S = S + b[0] + b[1]*9 + b[10];
}
if (S%10 == 0)
cout << "real" << endl;
else
cout << "fake" << endl;
return 0;
}
 
output都是fake😵‍💫


這......錯的地方有點多啊

1. if (letter >= 'P' && letter <= 'Z')

WXY錯了

2. 你的b是字元陣列,但是你把它當數字了,要先減48才行

3.for (i=2; i<=10; i++)

i<=9

4. S += b[i]*(11-i)

是10-i

5. S = S + b[0] + b[1]*9 + b[10]

只要執行一次就好了,所以移到for迴圈外

 
ZeroJudge Forum