#include<iostream>
using namespace std;
int main(){
string s;
int a,b,c,d;
while(cin>>s){
if((int)s[0]>=65&&(int)s[0]<=72)
a=(int)s[0]-55;
if((int)s[0]>=74&&(int)s[0]<=78)
a=(int)s[0]-56;
if((int)s[0]>=80&&(int)s[0]<=86)
a=(int)s[0]-57;
if((int)s[0]==88||(int)s[0]==89)
a=(int)s[0]-58;
if((int)s[0]==87)
a=(int)s[0]-55;
if((int)s[0]==90)
a=(int)s[0]-57;
if((int)s[0]==73)
a=(int)s[0]-39;
b=a/10;
c=a%10;
d=b+c*9+s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];
if(d%10==0)
cout<<"real"<<endl;
else
cout<<"fake"<<endl;
}
system("pause");
return 0;
}
請問我的程式出了什麼問題嗎~
#include
using namespace std;
int main(){
string s;
int a,b,c,d;
while(cin>>s){
if((int)s[0]>=65&&(int)s[0]<=72)
a=(int)s[0]-55;
if((int)s[0]>=74&&(int)s[0]<=78)
a=(int)s[0]-56;
if((int)s[0]>=80&&(int)s[0]<=86)
a=(int)s[0]-57;
if((int)s[0]==88||(int)s[0]==89)
a=(int)s[0]-58;
if((int)s[0]==87)
a=(int)s[0]-55;
if((int)s[0]==90)
a=(int)s[0]-57;
if((int)s[0]==73)
a=(int)s[0]-39;
b=a/10;
c=a%10;
d=b+c*9+s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];
if(d%10==0)
cout<<"real"< else
cout<<"fake"< }
system("pause");
return 0;
}
請問我的程式出了什麼問題嗎~
上面字母換數字沒檢查對不對
但是
s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];
這些地方s[]是字元,不是數字
好比說如果s[1]是'1'
那s[1]*8會判斷成49*8而=392 不是想要的8
所以每個都要這樣改
(s[1]-'0')*8+(s[2]-'0')*7+........+(s[8]-'0')+(s[9]-'0');
試試看吧~