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

#include<stdio.h>intmain(){charch[100]="";voidsum(char*ch);gets(ch);sum(ch);puts(ch);... #include <stdio.h>
int main()
{
char ch[100] = "";
void sum(char* ch);
gets(ch);
sum(ch);
puts(ch);
return 0;
}
void sum(char *ch)
{
int character=0,number=0,others=0;
int i = 0;
while(ch[i]!='\0')
{
if((ch[i]>='A'&&ch[i]<='Z')||(ch[i]>='a'&&ch[i]<='z'))character++;
else if(ch[i]>='0'&&ch[i]<='9')number++;
else others++;
i++;
}
printf("character:%d\tnumber:%d\tothers:%d\n",character,number,others);
}

刚看到了忘了问,如果要返回实参输出那应该怎么改,char*ch是指针么,刚准备学,可以的话说一下用法谢谢
展开
 我来答
汽水laugh
推荐于2017-11-26 · TA获得超过291个赞
知道小有建树答主
回答量:215
采纳率:33%
帮助的人:86.9万
展开全部
char *ch,就是定义一个字符型的指针,来接收指针,在你的程序里就是接收你输入的字符串的首地址。要想返回实参,根据你的目的,应该是各类字符的个数,可以用一个数组实现。

int* sum(char *ch,int sum[4]);用一个长度为4的一维数组来统计各类字符的个数;

同样int* 表示返回一个整形指针;
你应该这样调用sum()函数;p=sum(ch,sum);(当然你之前要,在main()里定义一个整形指针接受sum()的返回值),把sum[4]={0}初始化全部为0,),用p[0],p[1],p[2],p[3]表示
字母,数字,空格和其他字符的个数。

不明白的再问我
826010478
2013-12-16 · TA获得超过521个赞
知道小有建树答主
回答量:920
采纳率:53%
帮助的人:289万
展开全部
函数声明在main的外面,强烈建议直接把函数写在前面省的声明了
加上字符串的头文件string.h。循环直接用strlen获取长度计算,你这样子看起来太傻了。
要返回多个整数的话可以用结构体做返回值,或者用指针(引用)做参数。
char*ch是指针的意思,初学者不行就用全局变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
与子如初见
2013-12-16 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:799万
展开全部
返回不了的,函数只能返回一个值。要想返回多个值,必须使用数组或者结构体之类的。数组名做形参的时候会退化成指针,所以在子函数里把数组名当值真是用就好了。至于指针的作用,你还是看书吧,因为你完全没学过,所以我给你说的话你也可能看不懂。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dwjchdu
2013-12-16 · TA获得超过5914个赞
知道大有可为答主
回答量:4576
采纳率:60%
帮助的人:1112万
展开全部
函数中对数组的改变是绝对的,因此,子函数中对数组做的任何改动,主函数中都可以直接使用,不需要在返回什么东西了!*ch就是指向数组ch的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式