问题 问答题

请编一个函数float fun (double h),函数的功能是对变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。
例如:若h值为8.32433,则函数返回8.32:若h值为 8.32533,则函数返回8.33。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数。fun 的花括号中填入所编写的若干语句。
试题程序:
#include <stdio. h>
#include <conio. h>
float fun (float h )


main()

float a;
clrscr ();
printf ("Enter a: ");
scanf ("%f", &a);
printf("The original data is : ");
printf("%f\n\n", a) ;
printf("The result: %f\n", fun(a) );

答案

参考答案:float fun (float h)
{
long t;
t=(h*1000+5)/10; /*单精度数h乘以1000后再加5,相当十对h中的第三位小数进行四舍五入
除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/
return (float) t/100; /*除以100,保留2位小数*/

解析: 注意本题要求h的值真正发生了四舍五入,而不是为了输出,即不能用printf(“%7.2f”,h)来直接得到结果。由于单精度数h乘以1000后再加5,此时相当于对h中的第三位小数进行四舍五入,再将其赋给一个长整型数时就把第三位小数后的数全部截去。注意在return 中要将其中一个数转成浮点型数。

填空题
单项选择题