C语言中一个子函数怎么调用另一个子函数的运算?

有fun1和fun2两个函数。fun1中有三种类型的变量,分别为char,int,float等类型,请编写fun2函数,fun1中调用fun2求a1,a2的和给a3,b1... 有fun1和fun2两个函数。fun1中有三种类型的变量,分别为char ,int,float等类型,请编写fun2函数,fun1中调用fun2求a1,a2的和给a3,b1和b2的和给b3,c1和c2的和给c3,同时将fun1函数内容补充完整。
fun2( )
{

}

void fun1(void)
{
char a1 = 1,a2 = 2;
int b1 = 100, b2 = 300;
float c1 = 5.1,c2 = 6.8;
展开
 我来答
自我编程
2019-11-13 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

方法很多。

主要是要将不同类型传递给fun2处理。

最简单float类型最大,fun2的参数类型就定义为float,然后运算结果返回float类型。在main函数用a3,b3,c3接收的时候强转型。

另一种方法,把变量都转换成一种类型传递。这里用union共用体类型就比较适合。还方便扩展,如果想添加其他类型还可以在union里添加。

我这里代码就用第二种方法写。

#include <stdio.h>

typedef union data{

    char c;

    int i;

    float f;

}DA;

void fun1(void);

DA fun2(DA n1,DA n2,int nType);//nType=1:char类型。nType=2:int类型。nType=3:float类型。

int main()

{

    fun1();

    return 0;

}

void fun1(void)

{

    char a1=1,a2=2;

    int b1=100,b2=300;

    float c1=5.1,c2=6.8;

    DA n1,n2;

    n1.c=a1,n2.c=a2;

    char a3=fun2(n1,n2,1).c;

    n1.i=b1,n2.i=b2;

    int b3=fun2(n1,n2,2).i;

    n1.f=c1,n2.f=c2;

    float c3=fun2(n1,n2,3).f;

    printf("a3=%c\nb3=%d\nc3=%.2f\n",a3,b3,c3);

}

DA fun2(DA n1,DA n2,int nType)//nType=1:char类型。nType=2:int类型。nType=3:float类型。

{

    DA n3;

    switch(nType)

    {

        case 1:n3.c=n1.c+n2.c;break;

        case 2:n3.i=n1.i+n2.i;break;

        case 3:n3.f=n1.f+n2.f;break;

    }

    return n3;

}

microroom
科技发烧友

2019-11-13 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1530万
展开全部
#include<stdio.h>

void fun2(char a1,char a2,char *a3,int b1,int b2,int *b3,float c1,float c2,float *c3)
{
*a3=a1+a2;
*b3=b1+b2;
*c3=c1+c2;
}

void fun1(void)
{
char a1=1,a2=2,a3;
int b1=100,b2=300,b3;
float c1=5.1,c2=6.8,c3;
fun2(a1,a2,&a3,b1,b2,&b3,c1,c2,&c3);
printf("a3=%d b3=%d c3=%f\n",a3,b3,c3);
}

int main()
{
fun1();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式