请帮我看看这个程序错在哪里,多谢!

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:04:19
编写一个函数,由实参传来的一个字符串,统计此字符串中的字母数字空格和其它字符数,在主函数中输入字符串以及输出上述结果。
我写的程序是:
#include "stdio.h"
#include<string.h>
void main()
{
int tongji(int n,int i,int j,int k,int l,char s[100]);
int i=0,j=0,k=0,l=0,n;
char s[100];
gets(s);
n=strlen(s);
n--;
printf("%d\n",n);
tongji(n,i,j,k,l,s[100]);
}
int tongji(int n,int i,int j,int k,int l,char s[100])
{
int p=0;
while(p<=n)
{
if(((s[p]<='Z')&&(s[p]>='A'))||((s[p]<='z')&&(s[p]>='a'))) i++;
else if((s[p]>='0')&&(s[p]<='9')) j++;
else if(s[p]=' ') k++;
else l++;
p++;
}
return(i,j,k,l);
}

void main()
{
int tongji(int n,int *i,int *j,int *k,int *l,char s[100]);
int i=0,j=0,k=0,l=0,n;
char s[100];
gets(s);
n=strlen(s);
//n--;
//printf("%d\n",n);
tongji(n,&i,&j,&k,&l,s);
printf("字母数 %d 数字 %d 空格 %d 特殊字符 %d",i,j,k,l);
}
int tongji(int n,int *i,int *j,int *k,int *l,char s[100])
{
int p=0;
while(p<=n-1)
{
if(((s[p]<='Z')&&(s[p]>='A'))||((s[p]<='z')&&(s[p]>='a'))) (*i)++;
else if((s[p]>='0')&&(s[p]<='9')) (*j)++;
else if(s[p]=' ') (*k)++;
else (*l)++;
p++;
}
return 0;
}

很难说清啊 楼主不太清楚函数传递的三种方式
值传递 void test(int a)
引用传递 void test(int &a)
地址传递 void test(int *a)
楼主用的是值传递,返回结果不正确
应该使用地址传递 ( 也可以用引用传递)

测试数据
abc 123

结果输入为
字母数 3 数字 3 空格 1 特殊