马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
函数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() { 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)
函数调用语句把控制权连同实参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。
|