编写函数,由实参传来字符串,统计此字符串中字母、数字、空格和其它字符个数, 5

编写函数,由实参传来字符串,统计此字符串中字母、数字、空格和其它字符个数,在主函数中输入字符串及显示统计结果#include<stdio.h>#include<ctype... 编写函数,由实参传来字符串,统计此字符串中字母、数字、空格和其它字符个数,在主函数中输入字符串及显示统计结果
#include<stdio.h>
#include<ctype.h>
int s[4]={0,0,0,0};
void c(char ch[100])
{
int i;
for(i=0;i<=99;i++)
{
s[0]+=isalpha(ch[i]);
s[1]+=isdigit(ch[i]);
s[2]+=ispunct(ch[i]);
if(ch[i]==' ')
s[3]+=1;

}
}
void main()
{
char str[100];
printf("请输入一串字符串");
c(gets(str));
printf("字母个数为%d\n%d",s[0],s[1]);

}
最后结果为什么不对,程序运行都是正确的
展开
 我来答
lylovehl
2012-11-23 · TA获得超过1785个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:149万
展开全部
函数isalpha判断输入字符是否是英文字母,如果是则返回非零指,但是这个非零值不一定是1,可以自己试一下。isdigit和ispunct类似,所以你那种累加是有问题的。另外函数c中的循环也需要修改,for(i=0;ch[i]!='\0'),因为输入的字符串不一定是100个,只需统计到字符串结尾即可。下面的程序可以统计出结果:
#include<stdio.h>#include<ctype.h>
int s[4]={0,0,0,0};
void c(char ch[100])
{
int i;
for(i=0;ch[i]!='\0';i++)
{
if((ch[i]>='a' && ch[i]<='z') || (ch[i]>='A' && ch[i]<='Z'))
s[0]++;
else if(ch[i]>='0' && ch[i]<='9')
s[1]++;
else if(ch[i]==' ')
s[2]++;
else
s[3]++;
}
}

void main()
{
char str[100];
printf("请输入一串字符串");
c(gets(str));
printf("字母个数为%d\n数字个数为%d\n空格个数为%d\n其他字符个数为%d\n",s[0],s[1],s[2],s[3]);
}
风若远去何人留
推荐于2017-08-21 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

统计到结束符就可以了。 

#include<stdio.h>
#include<ctype.h>
int s[4]={0,0,0,0};
void c(char ch[100])
{
int i;
for(i=0;ch[i]!='\0';i++)
{
s[0]+=isalpha(ch[i]);
s[1]+=isdigit(ch[i]);
s[2]+=ispunct(ch[i]);
if(ch[i]==' ')
s[3]+=1;

}
}
void main()
{
char str[100];
printf("请输入一串字符串");
c(gets(str));
printf("字母个数为%d\n%d",s[0],s[1]);

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RLXXQ
2017-08-21 · TA获得超过1154个赞
知道小有建树答主
回答量:833
采纳率:51%
帮助的人:241万
展开全部
#include <stdio.h>
#include<string.h>
void sum(char *p)
{
    char *q;
    int num=0,word=0,b=0,e=0;
    q=p;
    while(*q!='\0')
    {
        if(*q>=48 && *q <= 57)
            num++;
        else if((*q>=65 && *q<=90)||(*q>=97 && *q <= 122))
            word++;
        else if(*q==32)
            b++;
        else
            e++;

        q++;
    }
    printf("数字:%d\n字母:%d\n空格:%d\n其他:%d",num,word,b,e);
}

int main()
{
    char *p=(char*)malloc(sizeof(char)*50);
    gets(p);
    sum(p);
    free(p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式