编写函数,由实参传来字符串,统计此字符串中字母、数字、空格和其它字符个数, 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]);
}
最后结果为什么不对,程序运行都是正确的 展开
#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]);
}
最后结果为什么不对,程序运行都是正确的 展开
3个回答
展开全部
函数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]);
}
#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]);
}
展开全部
统计到结束符就可以了。
#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]);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询