Bailian4095 打字员【文本】

4095:打字员
总时间限制: 1000ms 内存限制: 65536kB
描述
有一个打字员,他打字的时候有个习惯,从来不用 Shift 来切换大小写,只用 Caps Lock。 现在给他一个地铁站的名字,你需要写一个程序来告诉他,他需要敲击多少下键盘才能打出 这个地铁站名。

输入
第一行输入一个数字 n (n<1000),表示共有多少个需要处理的车站名。从第 2 到第 n+1 行是这 n 个车站名。车站名由英文字母构成,名字的长度不会超过 100 个字符。已知开始时 键盘是输入小写字母的状态。
输出
这个打字员敲击键盘的次数。
样例输入
5
BeiJingDaXueDongMen
AAAaaaBBBbbbABAB
AmericanRAILWAY
AaAaAa
DFjfkdaB
样例输出
31
21
18
12
11

问题链接:Bailian4095 打字员
问题简述:(略)
问题分析:假定开始时键盘处于输入小写字母状态,输入为字母时, 判定是否需要大小写转换。
程序说明:(略)
参考链接:(略)
题记:能用库函数则尽量用库函数。程序逻辑要写得通俗易懂。

AC的C++语言程序如下:

/* Bailian4095 打字员 */

#include 

using namespace std;

const int N = 100;
char s[N + 1];

int main()
{
     
    int n;
    scanf("%d", &n);
    while(n--) {
     
        scanf("%s", s);

        int flag = 1, cnt = 0;      // flag:初始输入为小写
        for(int i = 0; s[i]; i++) {
     
            if(flag) {
     
                if(isupper(s[i]))
                    flag = 0, cnt++;    // flag:切换为输入大写
            } else {
     
                if(islower(s[i]))
                    flag = 1, cnt++;    // flag:切换为输入小写
            }
            cnt++;
        }

        printf("%d\n", cnt);
    }

    return 0;
}

你可能感兴趣的:(Bailian4095,打字员)