凌阳教育专注嵌入式教育14年,良心教育,有担当,有诚信,值得信赖的教育品牌,欢迎访问官网#www.sunplusedu.com

有参数有返回值的函数

上一篇 / 下一篇  2016-04-26 14:52: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

 


TAG: 程序 而且

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar