在以下代码中,函数avg(int i,int j,int k,int *pint,double *pfloat)
计算i
,j
,k
的平均值,并分别返回结果的整数和浮点部分。例如,如果average = 22.45
它应该返回22和0.45。
以下是代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
void avg(int i,int j,int k,int *pint,double *pfloat)
{
double average=(i+j+k)/3;
*pfloat=average-(floor(average));
*pint=floor(average);
}
int main()
{
int Integer=0;
double rem=0;
avg(2,4,5,&Integer,&rem);
printf("%d\n%lf",Integer,rem);
return 0;
}
输出为3和0为什么??
答案 0 :(得分:1)
double average=(i+j+k)/3;
这是一个整数除法。要获得有用的浮点除法,可以添加“。”。像这样的常数:
double average=(i+j+k)/3.;
使其成为浮点常数(这反过来使得除法作为浮点除法完成)。