C++代码,求指教
这个输入后不管怎么按回车都不能继续执行,请问是怎么回事?#include <iostream>using namespace std;#include<ctype.h>
void lower(int&n){char ch;cout<<"请用英语输入一句话:"<<endl
cin>>ch;while(cin && (ch!='\n')){if(islower(ch))n++;cin>>ch;}}int main(){int count=0;lower(count);cout<<count<<endl;return 0;}
答案:用cin>>ch读取屏幕输入的话,空格、回车还有换行符号会被过滤掉的。所以不管你按了多少回车,虽然ch已经成功读入了你输入的字母,但空格和回车都被滤掉了,程序始终陷在while循环里,等待你下一次输入。所以建议你终止条件不要选择ch!='\n',你可以用一个句号(.)作为你的终止输入符号,这样就可以运行了。非要用回车去终止输入的话,你就需要考虑使用cin.getline()把一整行内容读取到一个char数组里,而不是用cin>>ch的方法了。
你要实现什么?你的程序漏洞太多,如:char ch;只能接收一个字符而不是字符串。while(cin)又是什么东东?
#include <iostream>
using namespace std;
#include<wchar.h>
void lower(int&n)
{
char ch;
cout<<"请用英语输入一句话:"<<endl; //这里加上‘;’
while(cin>>ch&&(ch!='\n'))
{
if(islower(ch))
n++;
cin>>ch;
}
}
int main()
{
int count=0;
lower(&count); //这里传的是地址过去,否则count还是0
cout<<count<<endl;
return 0;
}
上一个:怎么写C++学习计划?
下一个:求此图C++代码?