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