我们如何从c中的函数返回一个数组?

时间:2015-11-16 18:17:34

标签: c arrays function

我们如何从函数返回一个数组我不知道怎么做? 这是三辆车,每辆车最多停放在停车场24小时,我们必须通过制定一项能够评估成本的功能来找到每辆车的成本。??

#include <stdio.h>
#include <math.h>
#include <conio.h>
int calculateCharges(float hours[]);

int main() {
float hours[3];
int i;
for (i = 0; i <= 2; i++) {
    printf("Enter the hours you parked for car : %d\n", i + 1);     
    scanf_s("%f", &hours[i]);
}
hours[i] = calculateCharges(hours[]);

printf("%-10s%-10s%-10s\n", "Cars", "Hours", "Charge");
for (i = 0;i <= 2;i++) {
    printf("%-10d%-10.2f%-10.2f\n", i + 1, hours[i], calculateCharges(hours));
}

_getch();
return 0;
}

int calculateCharges(float hours[]) {

float cost[3];
int i;
for (i = 0; i <= 2; i++) {

    if (hours[i] <= 3) {          //if car parked for 3 or less hours it cost 2$
        cost[i] = 2;
    }
    else if (hours[i] > 3 && hours[i] < 24) { //if car parked for more than 3 or less then 24 hours it cost 0.5$for each extra hour$
        cost[i] = 2 + ((hours[i] - 3) / 2);
    }
    else if (hours[i] == 24) {   //if hours = 24 hours 10$
        cost[i] = 10;
    }
    else {
        cost[i] = 0;                //else its an error value zero cost
    }

    return cost[i];
}

}

2 个答案:

答案 0 :(得分:0)

您可以传入另一个数组,在该数组中返回成本,而不是将其作为本地数组。你的方法看起来像这样:

int calculateCharges(float hours[], float costs[], int num) {
    ...
    for(i=0;i<num;i++) {
        ...
        costs[i] = 2;

答案 1 :(得分:0)

函数不能返回数组,但它们可以返回指针,并且可以通过指针参数修改调用者可见变量。如果你想要一个函数创建一个数组并将它提供给调用者,那么该函数需要动态分配数组(通过malloc()calloc()),然后使用我命名的方法之一返回指向该数组的第一个元素的指针。

但是,正如评论者所说,对于你提出的问题,似乎并不需要这些。据我所知,你只需要一个为一辆汽车计算一个成本的函数。您可以从循环内部(甚至是读取输入的同一循环)调用此类函数来计算每辆汽车的成本,然后调用者可以处理这些成本。