题目背景 Background

现在手机使用越来越广泛了
 题目描述 Description
一般的手机的键盘是这样的:
 
要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,
而第二下会把 w 变成 x。0 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子, 求出要在手机上打出这个句
子至少需要按多少下键盘。
 输入输出格式 Input/output
输入格式:

一行一个句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式:
一行一个整数,表示按键盘的总次数。
 输入输出样例 Sample input/output
样例测试点#1

输入样例:

i have a dream

输出样例:

23

思路:这题较为简单,可以先打表,这个比较快捷(记录每个按键所要按的次数),每次只输入一个字符,找到在表里面的答案加上计数器即可。

注意:输入数据有若干句,一行一句,所以要用文件读入。

代码如下:

 #include <stdio.h>
#include <string.h>
int ans1[]={,,,,,,,,,,,,,,,,,,,,,,,,,,};//打表,统计每个按键所需的次数
int phone(char a[])
{
int ans=,i;
for(i=;i<strlen(a);i++)
{
if(a[i]!=' ')//字母
{
ans+=ans1[a[i]-];//计数器加上表内的数字
}
else //空格,计数器++
{
ans+=;
}
}
return ans;
}
int main()
{
char a[];
gets(a);
while(a[strlen(a)-]!=EOF)//如果还没到文件结尾,传入函数
{
printf("%d\n",phone(a));
gets(a);
}
return ;
}

最新文章

  1. 生成模型(Generative Model)与判别模型(Discriminative Model)
  2. HTML基本元素(一)
  3. Linux 内核数据结构:双向链表
  4. PL/SQL %TYPE和%ROWTYPE的区别【转】
  5. CentOS6.4下安装TeamViewer8
  6. iOS8 推送注册方式改变的问题
  7. PHP-网页跳转的几种方式
  8. leetcode3:不重复的最长子串长度
  9. Android之fragment点击切换和滑动切换结合
  10. IP地址分类及特殊IP地址
  11. SQL 使用经验
  12. 【原创】构建高性能ASP.NET站点之三 细节决定成败
  13. 使用block实现两个页面之间的传统价值观
  14. webpack2使用ch2-entry和output简要说明
  15. deeplearning.ai 人工智能行业大师访谈 Andrej Karpathy 听课笔记
  16. C# 通过KD树进行距离最近点的查找.
  17. DOM操作技术
  18. vsftpd 新增虚拟用户
  19. Visual Studio开发工具升级注意事项
  20. HTML5-CSS3-JavaScript(3)

热门文章

  1. Windows 下 Apache HTTP Server 与 Tomcat 的整合
  2. springmvc基础篇—掌握三种处理器
  3. JDK根目录介绍
  4. java中的反编译
  5. 单向链表仿LinkedList
  6. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器
  7. dict字典学习笔记
  8. 整理了一份React-Native学习指南
  9. 成为java高手的八大条件
  10. 关于安装第三方模块和PILLOW