a020.
身分證檢驗
| From: [203.64.191.2, 192.168.4.101] |
發表日期
:
2014-03-07 17:51
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
char string[10]; //宣告陣列 10個元素
scanf("%s",&string); //接受string的內容 %s只取字串(開頭英文
int Letter=0,num=0,i=1,j=8;
switch(string[0])
{
case 'A':
Letter=10;
break;
case 'B':
Letter=11;
break;
case 'C':
Letter=12;
break;
case 'D':
Letter=13;
break;
case 'E':
Letter=14;
break;
case 'F':
Letter=15;
break;
case 'G':
Letter=16;
break;
case 'H':
Letter=17;
break;
case 'I':
Letter=34;
break;
case 'J':
Letter=18;
break;
case 'K':
Letter=19;
break;
case 'L':
Letter=20;
break;
case 'M':
Letter=21;
break;
case 'N':
Letter=22;
break;
case 'O':
Letter=35;
break;
case 'P':
Letter=23;
break;
case 'Q':
Letter=24;
break;
case 'R':
Letter=25;
break;
case 'S':
Letter=26;
break;
case 'T':
Letter=27;
break;
case 'U':
Letter=28;
break;
case 'V':
Letter=29;
break;
case 'W':
Letter=32;
break;
case 'X':
Letter=30;
break;
case 'Y':
Letter=31;
break;
case 'Z':
Letter=33;
break;
}
num= Letter/10 + (Letter%10)*9; //身分證規則 英文部分
for(i;i<9;i++) //讓迴圈跑8次
{
num=num+(string[i]-48)*j; //身分證規則
j--;
}
num=num+string[9]-48;
if(num%10==0)
cout << "real" << endl;
else
cout << "fake" << endl;
system("pause");
}
為何那兩行紅色的指令最後都要-48呢?