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

#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是指针么,刚准备学,可以的话说一下用法谢谢

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]表示
字母,数字,空格和其他字符的个数。

不明白的再问我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-16
函数声明在main的外面,强烈建议直接把函数写在前面省的声明了
加上字符串的头文件string.h。循环直接用strlen获取长度计算,你这样子看起来太傻了。
要返回多个整数的话可以用结构体做返回值,或者用指针(引用)做参数。
char*ch是指针的意思,初学者不行就用全局变量。
第2个回答  2013-12-16
返回不了的,函数只能返回一个值。要想返回多个值,必须使用数组或者结构体之类的。数组名做形参的时候会退化成指针,所以在子函数里把数组名当值真是用就好了。至于指针的作用,你还是看书吧,因为你完全没学过,所以我给你说的话你也可能看不懂。来自:求助得到的回答
第2个回答  2013-12-16
函数中对数组的改变是绝对的,因此,子函数中对数组做的任何改动,主函数中都可以直接使用,不需要在返回什么东西了!*ch就是指向数组ch的指针。