P1765 手机

题目描述

一般的手机的键盘是这样的:

P1765 手机_第1张图片

要按出英文字母就必须要按数字键多下。例如要按出 x \tt x x 就得按 9 9 9 两下,第一下会出 w \tt w w,而第二下会把 w \tt w w 变成 x \tt x x 0 0 0 键按一下会出一个空格。

你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。

输入格式

一行句子,只包含英文小写字母和空格,且不超过 200 个字符。

输出格式

一行一个整数,表示按键盘的总次数。

1.题目分析

输入一段句子,只有小写字母和空格,根据手机每个字母输出需要按键的次数,统计按键操作的总次数。
这道题没啥好讲的,穷举吧。

2.题目思路

输入一行字符串,遍历字符串数组,分别做四次判断,对不同的字符需要进行的按键数统计,最后打印输出即可。

3.代码实现

#include 
#include 

int main(){
    char ch[200];
    gets(ch);
    int count = 0;
    char c;
    for (int i = 0; i < strlen(ch); ++i) {
        c = ch[i];
        //按一次的情况
        if (c == 'a' || c == 'd' || c == 'g' ||c == 'j' ||c == 'm' ||c == 'p' ||c == 't' ||c == 'w' ||c == ' '){
            count++;
        }
        //按两次
        if (c == 'b' || c == 'e' || c == 'h' ||c == 'k' ||c == 'n' ||c == 'q' ||c == 'u' ||c == 'x'){
            count+=2;
        }
        //按三次
        if (c == 'c' || c == 'f' || c == 'i' ||c == 'l' ||c == 'o' ||c == 'r' ||c == 'v' ||c == 'y'){
            count+=3;
        }
        //按四次
        if (c == 's' || c == 'z'){
            count+=4;
        }
    }

    printf("%d",count);

    return 0;
}

你可能感兴趣的:(刷题go,go,go,c语言,数据结构)