天天看點

C++ zoj2812 Quicksum

C++ zoj2812 Quicksum

題目大意:

輸入:

       每一行輸入,隻允許出現大寫字母或者空格;

       以“#”結束輸入。

輸出:

       每一行中各個字母對應的數乘以該字母對應的位置,求它們的和

一、方法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;
}