a054
輸入說明 :
輸入有若干筆測試資料,每筆一行,含有一個身份證號碼的後 9 碼。
輸出說明 :
對於每筆測試資料,將可能的第一位大寫字母依字母順序輸出於一行。
從uva有一題輸入的字元是鍵盤上左移一格學到的一招,不要真的去手工一個一個建立關西, 直接按照順序開一個陣列,像這題就開一個alphabet 一一對應字母的值.
telephone[i]-48 因為ascii 48是零 printf("%c",i+65); 因為ascii 65是大寫的A
#include<stdio.h>
#include<string.h>
int main(){
char telephone[10];
int alphabet[26]={10,11,12,13,14,15,16,17,34,18,19,
20,21,22,35,23,24,25,26,27,28,29,
32,30,31,33};
int i;
int last;
int first;
while(scanf("%s",telephone)!=EOF)
{
int sum=0;
for(i=0;i<8;i++)
{
sum+=(telephone[i]-48)*(8-i);
}
last=telephone[8]-48;
if(last==0)
last=10;
for(i=0;i<26;i++)
{
first=0;
first+=(alphabet[i]%10)*9;
first+=alphabet[i]/10;
if(10-(sum+first)%10==last)
printf("%c",i+65);
}
printf("\n");
}
return 0;
}