在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1499|回复: 0

[资料] 有参数有返回值的函数

[复制链接]
发表于 2016-4-26 15:15:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

函数value通过参数从调用函数中接收数据,但不返回任何值。而且,它在终端显示计算结果。但是,我们并不总是希望显示函数的结果。我们可能要在调用函数中使用它做进一步的处理。而且,为了确保程序间更好的可移植性,函数往往编码为不包含任何I/O操作。例如,不同程序之间可能要求不同的输出格式以显示结果。这些缺点可以这样来克服:把函数的结果传递给调用函数,在调用函数中,返回值可以被程序按要求处理。

自包含和独立的函数应像一个“黑盒子”似的,它可以接受预定义格式的输入,输出想要的数值。

示例 把计算的最后值返回给main函数,由main函数在终端按要求显示输出。同时还扩展了printline函数,使它可以把显示行的长度作为参数。

一个主要的修改是把printf语句从value函数移到了main函数中。

计算后的值通过如下语句传递给main函数:

return sum);

由于默认情况下函数的返回值类型为int,因此value函数的返回值类型为intsum的整型值返回给main函数,并通过如下的函数调用语句把值赋给变量amount

void printline(char ch,int len);

       value(float,float,int);

main()

{

       floatprincipal,inrate,amount;

       intperiod;

       printf("Enterprincipal amount,interest");

       printf("rate,andperiod\n");

       scanf("%f%f %d",&principal,&inrate,&period);

       printline('*',52);

       amount=value(principal,inrate,period);

       printf("\n%f\t%f\t%d\t%f\n\n",principal,inrate,amount)

       principal('=',52);

}

void principal(char ch,int len)

{

       inti;

       for(i=1;i<=len;i++)

              printf("%c",ch);

       printf("\n");

}

value(float p,float r,int n)

{

       intyear;

       floatsum;

       sum=p;

       year=1;

       while(year<=n)

       {

              sum=sum*(1+r);

              year=year+1;

       }

       printf(sum);

}

当上面函数调用语句运行时,将依次发生以下事件:

(1)
函数调用语句把控制权连同实参principalinrateperiod的值的副本传送给value函数,该函数把实参值赋给形参prn

(2)
被调用函数按正常方式逐行运行,知道遇到return语句。此时,sum的整数值返回给main中的调用函数,并进行下面的间接赋值语句;

value(principal,inrate,period)=sum

(3)
调用函数正常运行,因此返回值赋值给浮点变量amount

(4)
由于amount是浮点变量,返回值sum的整数部分转换为浮点数。

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-24 21:52 , Processed in 0.043886 second(s), 25 queries , Gzip On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表