0

大家好,我的任务是编写一个程序来计算句子中“a”字符的数量。我可以使用的最复杂的代码是 do while for 循环和 switch 语句。这是我到目前为止的代码。如果我将 cout 放在 do-while 中,那么它会说 123 等,但 cout 甚至不会显示它们何时在 do-while 循环之后。我使用 ascii 值表来确定字母 a 的值。我的输出有问题,希望得到一些反馈。

int main()
{
char lettertofind;
int letteramt=0;

cout<<"Enter a sentence\n";
cin>>lettertofind;

do
{
   cin>>lettertofind;
   if(lettertofind == 65||97){
     letteramt++;
    }
}while(lettertofind != '\n');

cout<<"There are"<<letteramt<<" a's in that sentence"<<endl;
return 0;
}
4

2 回答 2

1

做:if(lettertofind == 65|| lettertofind == 97){

因为97(或任何非 0 或“假”)被认为是,true所以您的条件总是被评估为真。

例如,做类似的事情while(97){}会创建一个无限循环(它就像while(true){}

于 2013-11-03T23:04:33.710 回答
0

if(lettertofind == 65||97)应该读if(lettertofind == 65|| lettertofind == 97)。您也可以删除cin>>lettertofind;之前do的 .

但这不是一个单一的问题。lettertofind您的代码将只读取使用类型声明的单个字符char。但是您要求用户输入一个完整的句子。我建议更改lettertofindstring类型,然后从用户输入中读取整行。代码可以是这样的:

#include<iostream>
#include<string>

using namespace std;

int main()
{
string lettertofind;
int letteramt=0;

cout<<"Enter a sentence\n";

// cin>>lettertofind;
 getline(cin, lettertofind);
 for(int i=0;i<lettertofind.size();i++)
   if(lettertofind[i] == 'a' || lettertofind[i] == 'A'){
     letteramt++;
   }

cout<<"There are "<<letteramt<<" a's in that sentence"<<endl;
return 0;
}
于 2013-11-03T23:05:19.277 回答