当前位置:编程学习 > C/C++ >>

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++代码?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,