C语言void子函数,求得的值在主函数里怎么输出?

碰到多项求和之类的题,不会写有返回值的函数。写成void函数,在子函数里输出没有问题,但题目要求在主函数打印输出结果,把输出语句放在主函数结果就乱码。这种情况怎么解决?例... 碰到多项求和之类的题,不会写有返回值的函数。写成void函数,在子函数里输出没有问题,但题目要求在主函数打印输出结果,把输出语句放在主函数结果就乱码。这种情况怎么解决?
例如:
#include<stdio.h>
void find(char a[]);
void main()
{
char a[10];
int n1,n2,n3;
printf("input a string:\n");
gets(a);

find(a);
}
void find(char a[])
{
int n1,n2,n3;
n1=n2=n3=0;
int i;
for(i=0;a[i]!='\0';i++)
{if(a[i]>='0'&&a[i]<='9')
n1++;
else if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z'))

n2++;
else if(a[i]==' ')
n3++;

}
printf("zimu geshu:%d,shuzi geshu:%d,kongge geshu:%d",n1,n2,n3);
}

把printf语句放主函数find(a)语句后,在主函数里定义了n1,n2,n3,但输出结果是乱码。放子函数就正确。怎么放到主函数里面。求教大神,马上机考了,C的水平很弱,没有财富值,对不住了
展开
 我来答
天蝎神经侠侣
高粉答主

推荐于2017-09-21 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:677万
展开全部
把变量定义在主函数之外,即把变量设置为全局的。
一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。
你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.

#include

int a;

void func();//函数声明

int main()
{

a=5;
func();
}

void func()
{
printf("%d\n", a);
}

+++++++++++++++++++++++++++++++++++++++++++++++++++
当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。因为主函数和子函数的变量共用的是同一个地址的变量,因此,不管在哪个函数中对变量进行操作,都会影响变量。

比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.

#include

void func(int *b);//函数声明

int main()
{

int a=5;
func(&a);//把变量a的地址传递过去
printf("%d\n", a);
}

void func(int *b)
{
*b=3; //将地址b中变量的值设置为3
}
wuzongxian0010
推荐于2017-10-08 · TA获得超过796个赞
知道小有建树答主
回答量:433
采纳率:100%
帮助的人:325万
展开全部
最简单的方法,将n1,n2,n3定义为全局变量,放在#include <stdio.h>的下面
#include <stdio.h>
int n1, n2, n3;

在main函数和find函数中将n1,n2,n3的定义都去掉,这样就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式