以上这个题目感觉很简单,所以我很快就写出了代码
#include <iostream>
#include <string>
int main()
{
int a[26] = { 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4 }, sum = 0;//a[26]里面的元素代表的是26个英文字母要按的次数,sum是次数之和
std::string b;
getline(std::cin, b);//b代表输入的语句
for (int i = 0;i < b.size();i++) {
/*空格的话要另外分析*/
if (b[i] == ' ') {
sum++;
}
else {
sum += a[b[i] - 97];
}
}
std::cout << sum;
return 0;
}
可是结果不如人意,测试结果全错,但是我自己算的话又是对的,所以很是纳闷,但是我好像排除了\n和\r的情况,于是我把代码的判断条件处进行了修改
#include <iostream>
#include <string>
int main()
{
int a[26] = { 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4 }, sum = 0;//a[26]里面的元素代表的是26个英文字母要按的次数,sum是次数之和
std::string b;
getline(std::cin, b);//b代表输入的语句
for (int i = 0;i < b.size();i++) {
if (b[i] == ' ') {
sum += 1;
}
/*这样的话就排除了\r和\n的情况
if(b[i]>='a' && b[i]<='z') {
sum += a[b[i] - 97];
}
}
std::cout << sum;
return 0;
}
这样提交就成功了,前面很多次次的提交错误欲哭无泪,所以问题一定要考虑全面。