狂想曲丶 发表于 2020-12-19 16:21:35

自定义函数

编写函数实现:自定义函数功能是:计算数组元素中所有正数的平均值,主函数从键盘输入若干个数放入数组中,结果在主函数中输出。

请问如何定义一个未知长度的数组?并且将其传入子函数中?(不使用指针)

jackz007 发表于 2020-12-19 17:05:21

#include <stdio.h>

double average(int d[])
{
      int i , n , r                                    ;
      for(r = n = 0 , i = 1 ; i <= d ; i ++) {
                if(d > 0) {
                        r += d                        ;
                        n ++                               ;
                }
      }
      return 1.0 * r / n                                 ;
}

int main(void)
{
      int d , i                                    ;
      scanf("%d" , & d)                               ;
      for(i = 1 ; i <= d ; i ++) scanf("%d" , & d) ;
      printf("%.2f\n" , average(d))                      ;
}
       编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
8
1 2 3 4 5 6 7 8
4.50

D:\00.Excise\C>

一世轻尘 发表于 2020-12-19 19:42:11

不在c99标准下,真的可以不用指针对数组做动态定义吗?{:10_312:}

风过无痕1989 发表于 2020-12-20 16:05:21

程序就不写了,思路是使用数组,将输入的整数存进去,然后以数组名和数组长度作为实参调用自定义的函数;自定义的函数也有两个参数(形参),一个是 int *P[],用于接收主函数传递过来的数组地址,一个是 int n,用于接收该数组的长度,在自定义的函数里求和或求平均值都可以,需要注意的是,求什么就 return 什么,最后在主程序里输出。

未知长度的数组,也就是变长数组,定义它非常简单,数组里的元素个数只写个变量,通过键盘输入赋给该变量确定的值(如下)。但这是C99标准,需要支持C99的编译器才能运行

int n;
scanf("%d",&n);
int array;


调用的函数,一旦调用结束了,函数里的使用的变量,求得的结果也就被释放了,若没有返回值的话,那函数所做的一切都是白劳的,我这里举一个交换的例子,如图
页: [1]
查看完整版本: 自定义函数