題目大意:
輸入:
每一行輸入,隻允許出現大寫字母或者空格;
以“#”結束輸入。
輸出:
每一行中各個字母對應的數乘以該字母對應的位置,求它們的和
一、方法1: AC
把每行字元串存到字元數組中,然後進行相應的處理
#include <iostream>
using namespace std;
const int maxn = 256;
int main()
{
int i, sum;
char str[maxn];
while (cin.getline(str, 256) && str[0] != '#') { // 輸入每行字元串
sum = 0;
for (i = 0; str[i] != '\0'; i++) {
if (str[i] >= 'A' && str[i] <= 'Z')
sum += (i + 1) * (str[i] - 'A' + 1);
}
cout << sum << endl;
}
return 0;
}
二、方法2:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
char ch;
int i, sum;
ch = cin.get();
while(ch != '#') { // 結束輸入
sum = 0;
i = 0;
while(ch != '\n') { // 每行字元串處理
if (ch >= 'A' && ch <= 'Z') // 如果是字母
sum += (i + 1) * (ch - 'A' + 1);
i++;
ch = cin.get();
}
cout << sum << endl;
ch = cin.get();
}
return 0;
}