C语言中的四舍五入问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:50:16
1.填空题
请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。
例如:当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},结果为:avg=15.030000。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
double fun(double x[10])
{
int i;
long t;
double avg=0.0;
double sum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
return avg;
}

void main()
{
double avg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
int i;
ststem("CLS");
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
1

C语言规定
%f若f前没有标注任何数字,编译系统输出默认小数点后有6位数
像%.4f,输出小数点后是4位数字
像%.8f,输出小数点后是8位数字

它之所有扩大1000倍,就是想要小数点后的两位数
四舍五入就像小学那种啊
大于5就往前移动1,本来那个归0
题目已经很清楚了

x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0}
里面所有数相加,除以个数
本来应该是
15.03 但输出要符合系统就变成15.030000了

对于个小数x进行四舍五入的方法是(int)(x+0.5)
这里有异曲同工之妙。

末位加5之后忽略小数点以后的东西,不就是四舍五入么……楼主没想明白?