2016-11-08 75 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

感謝它的工作我必須關心整數除法 –