与C中的函数传递的数组堆栈

时间:2012-03-03 16:42:21

标签: c arrays function

如何使用将从函数传递的数组中的信息?

 #include <stdio.h>

 double get_number(double[]);

 main {

 double x, z[100];
 char m;

 do { 
 x = get_number[z];
 printf("More numbers?");
 scanf (" %c", &m);

      }
 while ((m == 'Y')||(m == 'y'))
}


double get_number(double arr[])
{
    printf ("Please enter number :   ?");
    scanf("%d", &arr);
    return arr;
}

例如 当用户按Y次并用两个或三个数字填充数组时。 我该如何操作这些数字?算他们或只是显示他们。

1 个答案:

答案 0 :(得分:1)

使用for()循环。

for (int i = 0; i < array_size; i++) {
     printf ("Number at index %d: %f", i, arr[i]);
}

当然,您需要事先知道尺寸。并且不要像这样使用scanf(),为什么不使用:

double get_input ()
{
    double number = 0;

    printf ("Please enter number: ");
    scanf ("%d", &number);

    return number;
}

将数组长度定义为固定的:

#define ARRAY_SIZE 1024

如果您需要更多,请增加值或考虑使用列表结构。

希望这有帮助

修改

例如,如果要获得总和,则需要先初始化数组:

double array[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) array[i] = 0;

然后你得到了输入:

char input;
int counter = 0;
do {
    if (counter > ARRAY_SIZE) break; // dont cause a segmentation fault

    scanf ("%c", &input);
    double number = get_input();
    array[counter] = number;

} while (input == 'Y' || input == 'y');

然后当这样做时,只需通过数组并总结:

int sum = 0;
for (int i = 0; i < ARRAY_SIZE; i++) {
    sum += array[i];
}