主题:什么地方错了呀 ?
yukuilong
[专家分:0] 发布于 2008-03-28 22:51:00
输入一段字符串 输出有几个 大写 ,小写 ,数字 ,空格, 其它,字符的个数
#include<iostream>
using namespace std;
int main()
{
void f(char*);
char str1[20];
cout<<"please input a str1:"<<endl;
cin>>str1;
f(str1);
return 0;
}
void f(char*str2)
{
int n=0;
int k=0;
int e=0;
int l=0;
int w=0;
while(*str2!='\0')
{
if((*str2>='A')&&(*str2<='Z'))
n=n+1;
else if((*str2>='a')&&(*str2<='z'))
k=k+1;
else if(*str2==' ')
w=w+1;
else if((*str2>='0')&&(*str2<='9'))
e=e+1;
else
l=l+1;
str2++;
}
cout<<"大写:"<<n<<'\n'<<"小写:"<<k<<'\n'<<"数字:"<<e<<'\n'<<"空格:"<<w<<'\n'<<"其它:"<<l<<endl;
}
回复列表 (共7个回复)
沙发
f-wind [专家分:1240] 发布于 2008-03-29 09:38:00
cin>>str1;
遇到空格就断了,它不能检测到有几个空格
可以改为:
gets(str1);
就行了
板凳
yukuilong [专家分:0] 发布于 2008-03-29 12:23:00
#include<iostream>
using namespace std;
int main()
{
void f(char*);
char str1[20];
int i=0;
cout<<"please input a str1:"<<endl;
//cin>>str1;
while ((str1[i]=getchar())!='\n') i++;
f(str1);
return 0;
}
void f(char*str2)
{
int n=0;
int k=0;
int e=0;
int l=0;
int w=0;
while(*str2!='\n')
{
if((*str2>='A')&&(*str2<='Z'))
n=n+1;
else if((*str2>='a')&&(*str2<='z'))
k=k+1;
else if(*str2==' ')
w=w+1;
else if((*str2>='0')&&(*str2<='9'))
e=e+1;
else
l=l+1;
str2++;
}
cout<<"大写:"<<n<<'\n'<<"小写:"<<k<<'\n'<<"数字:"<<e<<'\n'<<"空格:"<<w<<'\n'<<"其它:"<<l<<endl;
} 这个怎么就对呀
3 楼
yukuilong [专家分:0] 发布于 2008-03-29 12:35:00
对不起 改成这样gets(str1);也不对呀
4 楼
yukuilong [专家分:0] 发布于 2008-03-29 12:40:00
哈哈 对了 能说一下 用它gets(str1);为什么就行呀 谢谢了
5 楼
abzhang [专家分:550] 发布于 2008-03-29 13:18:00
找错误的最好方式是单步跟踪
6 楼
f-wind [专家分:1240] 发布于 2008-03-31 08:48:00
[quote]#include<iostream>
using namespace std;
int main()
{
void f(char*);
char str1[20];
int i=0;
cout<<"please input a str1:"<<endl;
//cin>>str1;
while ((str1[i]=getchar())!='\n') i++;
f(str1);
return 0;
}
void f(char*str2)
{
int n=0;
int k=0;
int e=0;
int l=0;
int w=0;
while(*str2!='\n')
{
if((*str2>='A')&&(*str2<='Z'))
n=n+1;
else if((*str2>='a')&&(*str2<='z'))
k=k+1;
else if(*str2==' ')
w=w+1;
else if((*str2>='0')&&(*str2<='9'))
e=e+1;
else
l=l+1;
str2++;
}
cout<<"大写:"<<n<<'\n'<<"小写:"<<k<<'\n'<<"数字:"<<e<<'\n'<<"空格:"<<w<<'\n'<<"其它:"<<l<<endl;
} 这个怎么就对呀[/quote]
这个是检查单个字符输入,所以可以
7 楼
f-wind [专家分:1240] 发布于 2008-03-31 08:50:00
gets(str1);
是遇到回车即\n的时候中断,就是说读取开始到\n之间的字符!
我来回复