C预言 编写一个函数,由实参传来一个字符串,统计字符串中字母,数字,空格和其他 字符的个数。

,在主函数输入输出... ,在主函数输入输出 展开
 我来答
我已经匿名了
2013-05-04 · TA获得超过816个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:242万
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void f(char *s, int *na, int *nd, int* nc, int *no);
int main(){
char s[1000]={'\0'};
int l=0, m=0, n=0,z=0; //保存返回值
printf("Input a String:");
gets(s);
f(s,&l, &m, &n, &z);
printf("字母个数:%d\n", l);
printf("数字个数:%d\n", l);
printf("空格个数:%d\n", l);
printf("其他个数:%d\n", l);
return 0;
}
void f(char *s, int *na, int *nd, int* nc, int *no)
{
int l=0, m=0, n=0,z=0; char c;
while(s&& (c=*s) && s++)
{
if(isalpha(c)) l++;
else if(isdigit(c)) m++;
else if(c==' ') n++;
else z++;
}
*na = l, *nd =m, *nc=n, *no=z;
return ;
}
追问
指针    头晕能不用吗
追答

输入输出要全在main中的话,必须用。否则就要用结构体来保存计数值,估计你现在还没有学过。

上例中,main中printf后面全是l,要依次改为l,m,n,z。写得急了点。

下面不用指针,但是输出在函数内:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void f(char s[]);
int main(){
char s[1000]={'\0'};
int l=0, m=0, n=0,z=0; //保存返回值
printf("Input a String:");
gets(s);
f(s);
return 0;
}
void f(char s[])
{
int l=0, m=0, n=0,z=0; char c;
int i=0;
while(s&& (c=s[i]) && ++i)
{
if(isalpha(c)) l++;
else if(isdigit(c)) m++;
else if(c==' ') n++;
else z++;
}
printf("字母个数:%d\n", l);
printf("数字个数:%d\n", m);
printf("空格个数:%d\n", n);
printf("其他个数:%d\n", z);
return ;
}
百度网友f3b3e02
2013-05-04 · TA获得超过2155个赞
知道小有建树答主
回答量:821
采纳率:90%
帮助的人:576万
展开全部
//不用指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int alpha=0,digit=0,space=0,other=0;

void f(char s[]);
int main()
{
char s[1000]={'\0'};
printf("Input a String:");
gets(s);
f(s);
printf("字母个数:%d\n", alpha);
printf("数字个数:%d\n", digit);
printf("空格个数:%d\n", space);
printf("其他个数:%d\n", other);
return 0;
}
void f(char s[])
{
int i=0;
while(s[i]!='\0')
{
if(isalpha(s[i])) alpha++;
else if(isdigit(s[i])) digit++;
else if(s[i]==' ') space++;
else other++;
i=i+1;
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我愿是你的天
2013-05-04
知道答主
回答量:26
采纳率:0%
帮助的人:17.9万
展开全部
可以啊,用asc2码值判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式