这道题其实很水,用一个整形数组存放每个字母的按键次数即可
附代码:

#include<cstdio>
#include<cstring>
using namespace std;
int l[26] = {1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3,4, 1,2,3, 1,2,3,4};  //按键次数
int main()
{
    char c[200];
    while(gets(c))  //读入若干行句子(不要用scanf("%s", c);和cin>>c;读到空格就要停
    {
        int ans = 0;  //按键次数总和
        for(int i=0; i<strlen(c); ++i)  //遍历
        {
            if(c[i]<='z' && c[i]>='a')  //如果是字母
                ans += l[c[i]-'a'];   //加上对应次数
            else if(c[i] == ' ')  //如果是空格
                ++ans; //加一次
        }
        printf("%d\n", ans);  //输出
    }
    return 0;  //愉快的结束
}