回 帖 发 新 帖 刷新版面

主题:什么地方错了呀   ?

输入一段字符串 输出有几个 大写 ,小写  ,数字 ,空格, 其它,字符的个数

#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个回复)

沙发

cin>>str1;
遇到空格就断了,它不能检测到有几个空格
可以改为:
gets(str1);
就行了

板凳

#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 楼

对不起   改成这样gets(str1);也不对呀

4 楼

哈哈  对了   能说一下  用它gets(str1);为什么就行呀   谢谢了

5 楼

找错误的最好方式是单步跟踪

6 楼

[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 楼

gets(str1);
是遇到回车即\n的时候中断,就是说读取开始到\n之间的字符!

我来回复

您尚未登录,请登录后再回复。点此登录或注册