注册 登录
编程论坛 C语言论坛

字符串中计算各类字符个数

anhaoAH 发布于 2019-12-22 17:27, 2095 次点击
#include<stdio.h>
main()
{
    char c;
    scanf("%s",c);
    int letter=0,space=0,number=0,other=0;
    while((c=getchar())!='\n')
    {
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
        {
            letter++;
        }
        else if(c==' ')
        {
            space++;
        }
        else if(c>='0'&&c<='9')
        {
            number++;
        }
        else
        {
            other++;
        }
    }
    other=other-1;
    printf("letter:%d\nspace:%d\nnumber:%d\nother:%d\n",letter,space,number,other);
}
输入:   123!/#fff@       //*要求以@结束且@不计入数目,但是我不会弄*
结果:letter:3
      space:0
      number:3
      other:3
空格应该是三个,咋回事呢?
3 回复
#2
rjsp2019-12-22 17:38
scanf("%s",c); 是干什么用的?
#3
anhaoAH2019-12-22 17:43
回复 2楼 rjsp
小白上路,个人认为是输入字符串。
#4
rjsp2019-12-22 18:12
以下是引用anhaoAH在2019-12-22 17:43:30的发言:

小白上路,个人认为是输入字符串。
你自己写的你不知道吗?若不知道的话,你为什么要写这一句?
将它删除吧!

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned letter=0, space=0, number=0, other=0;
    for( int c; c=getchar(), c!=EOF && c!='@'; )
    {
        if( (c>='a'&&c<='z') || (c>='A'&&c<='Z') )
            ++letter;
        else if( c == ' ' )
            ++space;
        else if( c>='0' && c<='9' )
            ++number;
        else
            ++other;
    }
    printf("letter:%u\nspace:%d\nnumber:%d\nother:%d\n",letter,space,number,other);
}

1