c语言 洛谷P1765手机题解

解题思路

1.定义字符数组,存储整行输入(句子中带有空格,不能用scanf("%s"))

2.遍历字符串每一个字符

3.判断当前字符:

如果是空格:按键次数+1

如果是小写字母:根据字母所在九宫格位置,计算是第几个字符,累加按键次数

4.遍历结束,输出总次数

代码理解

c 复制代码
#include <stdio.h>
#include <string.h>
int main()
{
    char s[205];//字符数组,存放输入的一整行文字,最多200字符
    gets(s);//读取一整行,包括空格,读到回车结束
    int sum=0;//总按键次数,初始为0
    int i;
    for(i=0;s[i]!='\0';i++)
    {
      char ch=s[i];//把当前这个数字拿出来存到ch
      if(ch==' ')
      {
        sum+=1;
      }
      else if(ch>='a'&&ch<='c')sum+=ch-'a'+1;
      else if(ch>='d'&&ch<='f')sum+=ch-'d'+1;
      else if(ch>='g'&&ch<='i')sum+=ch-'g'+1;
      else if(ch>='j'&&ch<='l')sum+=ch-'j'+1;
      else if(ch>='m'&&ch<='o')sum+=ch-'m'+1;
      else if(ch>='p'&&ch<='s')sum+=ch-'p'+1;
      else if(ch>='t'&&ch<='v')sum+=ch-'v'+1;
      else if(ch>='w'&&ch<='z')sum+=ch-'w'+1;
     }
     printf("%d",sum);
     return 0;
 }

定义字符数组,存储整行输入
scanf("%s")碰到空格就停止读取
本题带有空格,不能用scanf("%s")改用gets或者fgets,可以读取完整一行,空格也能正常读入。

相关推荐
Rosanci1 小时前
Codex 下载与本地部署实战:从安装到运行全流程指南
开发语言·前端·算法·chatgpt·codex
zhangzeyuaaa1 小时前
深入 Ruby:Block、Proc、Lambda 核心区别与最佳实践
开发语言·前端·ruby
蜗牛互联网1 小时前
Java 17调用Embeddings API:余弦相似度与FAQ拒答阈值
java·开发语言·人工智能
郝学胜-神的一滴1 小时前
AI 编程智能体 05:拆解智能体分级体系、类型与全行业落地场景
开发语言·人工智能·python·程序人生·pycharm
朝朝辞暮i1 小时前
C++ 第 38 课:线程、SingleThreadedExecutor、MultiThreadedExecutor、Callback Group
开发语言·c++·算法·ros2
白色的北极熊1 小时前
c语言 求余运算符
c语言·数据结构·算法
外收内放2 小时前
Python基础语法练习题(43-44)
开发语言·python
坤坤子吖2 小时前
Python基础语法学习:列表和元组
开发语言·笔记·python·学习
可乐鸡翅yeah_2 小时前
新手梳理:HLS 线上问题,哪些该提给 CDN,哪些该找后端切片服务
开发语言·前端·javascript·vue.js·网络协议·http·m3u8在线