计算字符有问题

时间:2013-11-03 23:01:47

标签: c++ loops while-loop ascii output

大家好我所有的任务都是编写一个计算句子中'a'个字符数的程序。我可以使用的最复杂的代码是for循环和switch语句。这是我到目前为止的代码。如果我把cout放在do-while中,那么它会说123等,但是当他们在do-while循环之后,cout甚至都不显示。我使用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;
}

2 个答案:

答案 0 :(得分:1)

执行:if(lettertofind == 65|| lettertofind == 97){

由于97(或任何非0或“false”)被视为true,因此您的条件始终被评估为真。

例如,执行while(97){}之类的操作会创建一个无限循环(它与while(true){}

完全相同

答案 1 :(得分:0)

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

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

#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;
}