2016-11-08 36 views
-1

在以下代码中,函数avg(int i,int j,int k,int *pint,double *pfloat)计算的平均值为i,j,k,并分别返回结果的整数和浮点部分。举个例子,如果average = 22.45它应该返回22和0.45。C中的函数如何返回多个值?

下面是代码:

#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为什么?

回答

1
double average=(i+j+k)/3; 

这是一个整数除法。为了获得有用的浮点除法,可以添加一个“。”以这样的常量:

double average=(i+j+k)/3.; 

使它成为一个浮点常量(这反过来使划分完成浮点除法)。

+0

感谢它的工作我必须关心整数除法 –