解题思路:

注意事项:scanf("%[^\n]*c",s);       ^表示”非”,即读入其后面的字符就结束读入。这样想读入一行字符串带空格的字符直接用: scanf("%[^\n]%*c",str); 就可以了,  %*c的作用忽略\n,否则后面读入的将一直是\n。
参考代码:

#include<stdio.h>
#define MAX 100
void count(char*s)
{
    int nums,numd,numb,numo;
    nums=numd=numb=numo=0;
    
    while(*s!='\0')
    {
        if( (*s>='a'&&*s<='z')||(*s>='A'&&*s<='Z') )
            nums++;
        else if(*s>='0'&&*s<='9')    
            numd++;
        else if(*s==' ')
            numb++;
        else
            numo++;    
            
        s++;
    }
    printf("%d %d %d %d",nums,numd,numb,numo);
    
}
int main()
{
    char s[MAX];
    scanf("%[^\n]*c",s);
    count(s);
    return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区