#include<iostream>
int main()
{
int n=0;
char c;
c=std::cin.get();
while(c!='\0'){
if((c>'A'&&c<'Z')||(c>'a'&&c<'z'))n++;
continue;
}
std::cout<<n;
}
要编写一个c++程序,实现统计从键盘上输入的一串字符所包含英文字母的个数(以空格结束输入),上述程序那里出错了
continue去掉没任何影响.
但是运行没有结果啊
@qianyu: 打断点没有..c的值是多少.
而且你循环里也没重新给c赋值啊
@吴瑞祥: 那这个程序该如何编写呢
1.首先空格并不是\0,ASCII码是32
2.其次应该是c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'
1,while 循环条件写的十分有问题
2,在循环体中没有迭代,是个死循环
1 #include<iostream> 2 int main() 3 { 4 int n = 0; 5 char c; 6 c = std::cin.get(); 7 //while( c!='\0' ) 8 while( c!=' ' ) 9 { 10 //if( ( c>'A' && c<'Z') || ( c>'a' && c<'z' ) ) //AaZz will not be counted 11 if( ( c>='A' && c<='Z') || ( c>='a' && c<='z' ) ) 12 n++; 13 //continue; 14 // get next input 15 c = std::cin.get(); 16 } 17 std::cout<<n; 18 }
以上是修改你的代码,一下是另一个版本
1 #include<iostream> 2 int main() 3 { 4 int n = 0; 5 char c = 0; 6 do 7 { 8 c = std::cin.get(); 9 if( ( c>='A' && c<='Z') || ( c>='a' && c<='z' ) ) 10 { 11 n++; 12 } 13 } while(c != ' '); 14 std::cout << n; 15 return 0; 16 }
看一下修改把你的代码
#include<iostream> int main() { int n = 0; char c; c = std::cin.get(); while( c!=' ' ) { if( ( c>='A' && c<='Z') || ( c>='a' && c<='z' ) ) n++; c = std::cin.get(); } std::cout<<n; }
死循环太明显了 你一直在判断你第一次输入的字符出不来了。
你的代码只读入了一个字符啊。。你如果想读入一串字符,就用string啊。
int main() { string s; cin >> s; //do sth. }
你的代码只读了一个字符,正确这样。
int main()
{
int n=0;
char c;
while(c!=' '){
c=std::cin.get();
if((c>'A'&&c<'Z')||(c>'a'&&c<'z'))n++;
}
std::cout<<n;
}