鱼C论坛

 找回密码
 立即注册
查看: 702|回复: 3

[已解决]自定义函数

[复制链接]
发表于 2020-12-19 16:21:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

请问如何定义一个未知长度的数组?并且将其传入子函数中?(不使用指针)
最佳答案
2020-12-20 16:05:21
程序就不写了,思路是使用数组,将输入的整数存进去,然后以数组名和数组长度作为实参调用自定义的函数;自定义的函数也有两个参数(形参),一个是 int *P[],用于接收主函数传递过来的数组地址,一个是 int n,用于接收该数组的长度,在自定义的函数里求和或求平均值都可以,需要注意的是,求什么就 return 什么,最后在主程序里输出。

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

调用的函数,一旦调用结束了,函数里的使用的变量,求得的结果也就被释放了,若没有返回值的话,那函数所做的一切都是白劳的,我这里举一个交换的例子,如图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[0] ; i ++) {
                if(d[i] > 0) {
                        r += d[i]                          ;
                        n ++                               ;
                }
        }
        return 1.0 * r / n                                 ;
}

int main(void)
{
        int d[2000] , i                                    ;
        scanf("%d" , & d[0])                               ;
        for(i = 1 ; i <= d[0] ; i ++) scanf("%d" , & d[i]) ;
        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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-19 19:42:11 | 显示全部楼层
不在c99标准下,真的可以不用指针对数组做动态定义吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-20 16:05:21 | 显示全部楼层    本楼为最佳答案   
程序就不写了,思路是使用数组,将输入的整数存进去,然后以数组名和数组长度作为实参调用自定义的函数;自定义的函数也有两个参数(形参),一个是 int *P[],用于接收主函数传递过来的数组地址,一个是 int n,用于接收该数组的长度,在自定义的函数里求和或求平均值都可以,需要注意的是,求什么就 return 什么,最后在主程序里输出。

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

调用的函数,一旦调用结束了,函数里的使用的变量,求得的结果也就被释放了,若没有返回值的话,那函数所做的一切都是白劳的,我这里举一个交换的例子,如图
函数指针.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表