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

спасибо, что это сработало Я должен позаботиться о целочисленном делении –

Смежные вопросы