大家好我所有的任务都是编写一个计算句子中'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;
}
答案 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;
}