c语言高手麻烦进来一下帮我改一下

来源:百度知道 编辑:UC知道 时间:2024/09/26 13:55:58
编写一个函数,统计一个字符串中共有多少个大写字母,多少个小写字母,多少个数字,多少个其它字符,将统计结果返回给主调函数。下面这个程序不知道哪里错了,希望各位能帮忙,谢了!
#include<stdio.h>

int Statistics(int en,int t,int n,int s,int q)
{
char ch;

getchar();
while (ch!='\n')
{
if(ch<='Z'&&ch>='A') en++;
else if(ch<='z'&&ch>='a')t++;
else if(ch==' ') s++;
else if(ch<='9'&&ch>='0')n++;

else q++;
}
}
void main()
{ int Statistics(int en,int t,int n,int s,int q);
int big=0,small=0,num=0,space=0,other=0;
Statistics(big,small,num,space,other);
printf(" Big letters Number: %d\n Small letters Number:%d\n Num Number: %d\n Spaces Number: %d\n Other Number: %d\n",big,small,num,space,other);

}

你这函数是传值的,函数的各个参数,只能由外面传入,却传不出来
你可以使用引用或指针类型的参数,问题就解决了

另外,循环体里面应该有个getchar()的

程序修改如下:
#include <stdio.h>

void Statistics(int &en,int &t,int &n,int &s,int &q)
{
char ch;

while ((ch=getchar())!='\n')
{
if(ch<='Z'&&ch>='A') en++;
else if(ch<='z'&&ch>='a')t++;
else if(ch==' ') s++;
else if(ch<='9'&&ch>='0')n++;
else q++;
}
}

void main()
{
int big=0,small=0,num=0,space=0,other=0;

Statistics(big,small,num,space,other);
printf(" Big letters Number: %d\n Small letters Number:%d\n Num Number: %d\n Spaces Number: %d\n Other Number: %d\n",big,small,num,space,other);
}