凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

有参数有返回值的函数

已有 465 次阅读| 2016-4-26 14:52 |个人分类:C语言

函数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()

{

       float principal,inrate,amount;

       int period;

       printf("Enter principal amount,interest");

       printf("rate,and period\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)

{

       int i;

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

              printf("%c",ch);

       printf("\n");

}

value(float p,float r,int n)

{

       int year;

       float sum;

       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

 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

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

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

GMT+8, 2024-4-18 19:36 , Processed in 0.018579 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部