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,可以读取完整一行,空格也能正常读入。

相关推荐
starzy19906 小时前
深入理解Scala隐式类:扩展方法机制
开发语言·人工智能·scala
M--Y6 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
吴可可1237 小时前
WScript Shell操作注册表详解
开发语言
纪念 2298 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
码农小河6612 小时前
基于PHP的电商后台蜜罐系统
开发语言·php
starzy199012 小时前
深入理解Scala柯里化函数:函数链式变换
开发语言·scala
ShineWinsu13 小时前
对于Qt:QTreeWidget常见属性以及QTreeWidgetItem类的解析
开发语言·c++·qt·gui·客户端·多叉树·qtreewidget
落羽的落羽13 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
总要学点什么14 小时前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
starzy199018 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala