Test Message

d086: 態度之重要的證明

內容

今天我們如果將 a=1,b=2,c=3….以此類推下去,
將單字裡的每個文字依照上面規則轉換成數字再相加起來的話。
知識(KNOWLEDGE)只有 96 分,
努力(HARDWORK)只有 98 分,
但態度(ATTITUDE)卻是 100 分。

風台高中的 Norton 看到了上面的文章後並不相信,
他想把它們真的加起來看看,
以找到一個字可以反駁這個「態度最重要」的理論
但卻討厭換來換去的過程,
請幫他寫個程式方便他去做運算。


輸入

輸入英文單字,大小寫不限,當輸入 0 的時候就結束程式。
長度最長為 200 個字。
請參照 Sample Input。

hardwork
KNOWLEDGE
aTtitUdE
C++
0

輸出

輸出將英文單字依照題目的規則轉換成數字後相加的結果,如果中間參雜怪異的符號,請輸出 Fail;但是英文字母的大小寫並不會影響結果,也就是說 A 和 a 所代表的值是相同
的。請參照 Sample Output。

98
96
100
Fail


解題思路

遍歷輸入字串,將總分依題意加上對應的分數,遍歷結束後輸出即可。


完整程式碼

AC (2ms, 100KB)
#include <stdio.h>

const char a = 'a' - 1, A = 'A' - 1;
int score;
char input[200];

int main()
{
while (scanf(" %s", input) == 1 && !(input[0] == '0' && input[1] == '\0'))
{
score = 0;
for (int i = 0; input[i]; i++)
{
if (input[i] >= 'a' && input[i] <= 'z')
score += input[i] - a;
else if (input[i] >= 'A' && input[i] <= 'Z')
score += input[i] - A;
else
{
puts("Fail");
score = 0;
break;
}
}
if (score)
printf("%d\n", score);
}
return 0;
}