你原来的while((c[i]=getchar())!='\n') 并不是判断从键盘得到的c[i] !=回车,而是判断(c[i]=getchar()) 这个动作或者说完整的表达式,而完整的表达式永远不等于回车!估计是你笔误了
所以这里要改写
#include<iostream>
using namespace std;
int main(){
char c[10];
int y=0,k=0,s=0,i,q=0;
for(i=0;i<10;i++){
c[i]=getchar();
if(c[i] !='\n')
{
if((c[i]>='a'&&c[i]<='z')||(c[i]>='A'&&c[i]<='Z')) y++;
else if(c[i]==' ') k++;
else if(c[i]>='0'&&c[i]<='9') s++;
else q++;
}
else
break;
}
cout<<"英文字母个数为"<<y<<endl;
cout<<"空格数个数为"<<k<<endl;
cout<<"数字个数为"<<s<<endl;
cout<<"其它字符个数为"<<q<<endl;
return 0;
}
或者换成下面这样:
#include<iostream>
using namespace std;
int main(){
char c[10];
printf("input now:");
gets(c);
int y=0,k=0,s=0,i,q=0;
while(*c!='\0')
{
if((*c>='a' && *c<='z')||(*c>='A' && *c<='Z'))
y++;
else if(*c==' ')
k++;
else if(*c >='0' && *c<='9')
s++;
else
q++;
}
cout<<"英文字母个数为"<<y<<endl;
cout<<"空格数个数为"<<k<<endl;
cout<<"数字个数为"<<s<<endl;
cout<<"其它字符个数为"<<q<<endl;
return 0;
}