| |
函数value通过参数从调用函数中接收数据,但不返回任何值。而且,它在终端显示计算结果。但是,我们并不总是希望显示函数的结果。我们可能要在调用函数中使用它做进一步的处理。而且,为了确保程序间更好的可移植性,函数往往编码为不包含任何I/O操作。例如,不同程序之间可能要求不同的输出格式以显示结果。这些缺点可以这样来克服:把函数的结果传递给调用函数,在调用函数中,返回值可以被程序按要求处理。
自包含和独立的函数应像一个“黑盒子”似的,它可以接受预定义格式的输入,输出想要的数值。
示例 把计算的最后值返回给main函数,由main函数在终端按要求显示输出。同时还扩展了printline函数,使它可以把显示行的长度作为参数。
一个主要的修改是把printf语句从value函数移到了main函数中。
计算后的值通过如下语句传递给main函数:
return (sum);
由于默认情况下函数的返回值类型为int,因此value函数的返回值类型为int,sum的整型值返回给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) 函数调用语句把控制权连同实参principal、inrate和period的值的副本传送给value函数,该函数把实参值赋给形参p、r和n。
(2) 被调用函数按正常方式逐行运行,知道遇到return语句。此时,sum的整数值返回给main中的调用函数,并进行下面的间接赋值语句;
value(principal,inrate,period)=sum;
(3) 调用函数正常运行,因此返回值赋值给浮点变量amount。
(4) 由于amount是浮点变量,返回值sum的整数部分转换为浮点数。
凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com。