我這樣打好像沒有錯(去找了身分證製造機來測都過說...)
#include<iostream>
using namespace std;
int main()
{
char a,k[9];
while(cin>>a>>k)
{
int f,j=0,l;
f=(a-55-(a>73)-(a>79)-(a>87)+(a==73)*16+(a==79)*12+(a==87)*2+(a==90));
l=(f%10)*9+f/10;
for(int i=0;i<8;i++)
j+=(k[i]-48)*(8-i);
if((l+j+k[8]-48)%10==0)
cout<<"real"<<endl;
if((l+j+k[8]-48)%10!=0)
cout<<"fake"<<endl;
}
}
WA很多次想說乾脆來看看到底是哪個身分證字號錯了...
#include<iostream>
using namespace std;
int main()
{
char a,k[9];
while(cin>>a>>k)
{
cout<<a;
int f,j=0,l;
f=(a-55-(a>73)-(a>79)-(a>87)+(a==73)*16+(a==79)*12+(a==87)*2+(a==90));
l=(f%10)*9+f/10;
for(int i=0;i<8;i++)
j+=(k[i]-48)*(8-i);
if((l+j+k[8]-48)%10==0)
cout<<"real"<<endl;
if((l+j+k[8]-48)%10!=0)
cout<<"fake"<<endl;
}
}
就是在中間加了一行cout<<a;
結果
與正確輸出不相符(line:1)
您的答案為: fake
正確答案為: real
該不會沒有a吧= =...