自定义函数
编写函数实现:自定义函数功能是:计算数组元素中所有正数的平均值,主函数从键盘输入若干个数放入数组中,结果在主函数中输出。请问如何定义一个未知长度的数组?并且将其传入子函数中?(不使用指针) #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> 不在c99标准下,真的可以不用指针对数组做动态定义吗?{:10_312:} 程序就不写了,思路是使用数组,将输入的整数存进去,然后以数组名和数组长度作为实参调用自定义的函数;自定义的函数也有两个参数(形参),一个是 int *P[],用于接收主函数传递过来的数组地址,一个是 int n,用于接收该数组的长度,在自定义的函数里求和或求平均值都可以,需要注意的是,求什么就 return 什么,最后在主程序里输出。
未知长度的数组,也就是变长数组,定义它非常简单,数组里的元素个数只写个变量,通过键盘输入赋给该变量确定的值(如下)。但这是C99标准,需要支持C99的编译器才能运行
int n;
scanf("%d",&n);
int array;
调用的函数,一旦调用结束了,函数里的使用的变量,求得的结果也就被释放了,若没有返回值的话,那函数所做的一切都是白劳的,我这里举一个交换的例子,如图
页:
[1]