扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#includestdio.h
10年积累的网站制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有遂宁免费网站建设让你可以放心的选择与我们合作。
struct math
{
float real;
float image;
};
void main()
{
struct math s1,s2,z;
printf("x的实部值和虚部值:");
scanf("%f %f",s1.real,s1.image);
printf("y的实部值和虚部值:");
scanf("%f %f",s2.real,s2.image);
z=add(s1,s2);
printf("相加的结果:z=%f+%fi\n",z.real,z.image);
}
struct math add(struct math s1,struct math s2)
{
struct math z;
z.real=s1.real+s2.real;
z.image=s1.image+s2.image;
return z;
}
回答的人还挺多,居然没楼上的手快,看来我只有增加内容了!
说明:
局部函数需要一个返回值,给z。
这道题可以有三种解决方法
一、用指针,让局部函数返回值用指针传递,这样局部函数可以写void add...
二、把z定义成全局变量(就是在main函数外面定义z),然后局部函数里边不要重新定义z,这样可以把局部函数运算中的值保存下来。局部函数也可以写void add...
三、用返回值,就是局部函数不要写成void add...,让他带个返回值,返回给一个数,就是上面的程序就ok了
回答
追问struct math add(struct math s1,struct math s2) 这里为什么要定义成结构体?
{
struct math z;
z.real=s1.real+s2.real;
z.image=s1.image+s2.image;
return z;
}
因为返回值是结构体
wage是一个结构体类型的指针,salary和subsidy是结构体的二个成员,wage-salary,这个是指针的一种表示方式,直接取成员salary的值,total+=wage-salary+wage-subsidy相当于total=total+wage-salary+wage-subsidy;等号右边的total表示上次total的值加上后面的值再赋值给total!
用return 返回结果到调用本函数的地方.
可以返回一个指向结构体的指针, 达到返回多个值的目的. 这种方式不太安全, 或者定义全局变量,直接在子函数中改变其值, 或者官方常用的一种方式如下:
#include stdio.h
#include stdlib.h
struct POINT
{
int x;
int y;
};
void fun(struct POINT *p)
{
p-x=5;
p-y=8;
}
int main()
{
struct POINT pt;
fun(pt); //定义一个结构体变量传入函数用来接收结果,相当于返回多个值
printf("pt.x=%d pt.y=%d",pt.x,pt.y);
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流