问题 问答题

请编一个函数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 中要将其中一个数转成浮点型数。

多项选择题
单项选择题 共用题干题