《程序设计基础实训指导教程-c语言》
ISBN 978-7-03-032846-5
p142
7.1.2 上级实训内容

【实训内容7】用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]

传递规则-4种方法

  • (1) 数组名 ---> 数组名
  • (2) 数组名 ---> 指针变量
  • (3) 指针变量 ---> 数组名
  • (4) 指针变量 ---> 指针变量

分析:

  1. 先在主函数中定义一个含有11个元素的一维数组a,第一个元素a[0]的值为0,其他元素的值为任意值
  2. 用一个子函数给数组中除a[0]以外的所有元素赋初值,实参和形参都要求是指针变量
  3. 用另一个子函数求平均值,并返回其值
传递规则:主函数  |       子函数
---------------------------------
(1)   数组名   --->   数组名
-----------------------------------
(2)   数组名   --->   指针变量
------------------------------
(3)   指针变量 --->    数组名
----------------------------------
(4)   指针变量 --->    指针变量
---------------------------------

(1) 数组名 —> 数组名

//---------------------------------
//(1) 数组名   --->   数组名
//-----------------------------------
#include<stdio.h>
#define M 11
void num_scanf(double *);   //声明输入数组的函数
double num_aver(double a[]);  //声明计算和和平均值的函数(a[]会转化为*a)
int main()
{double a[M]={0},*pa;    //定义一个数组和指向数组的指针pa=a;   //指针指向一维数组首地址num_scanf(pa);printf("所有元素的平均值:%.3lf\n",num_aver(a));    //数组名
}
void num_scanf(double *a)
{printf("输入数组元素的值从a[1]-a[%d]共%d个数(以空格隔开):\n",M-1,M-1);int i;for(i=1;i<M;i++){scanf("%lf",(a+i));}getchar();printf("验证输入!\n");for(i=1;i<M;i++){printf("%.2lf\t",*(a+i));}printf("\n");
}
double num_aver(double a[]) //数组名
{int i;for(i=1;i<M;i++){a[0]+=a[i]; //求和}printf("\n! a[0] !:%lf\n",a[0]);return(a[0]/(M-1)); //求平均值,并返回
}

(2) 数组名 —> 指针变量

//-----------------------------------
//(2) 数组名   --->   指针变量
//------------------------------
#include<stdio.h>
#define M 11
void num_scanf(double *);   //声明输入数组的函数
double num_aver(double *);  //声明计算和和平均值的函数(形参为指针变量)
int main()
{double a[M]={0},*pa;    //定义一个数组和指向数组的指针pa=a;   //指针指向一维数组首地址num_scanf(pa);printf("所有元素的平均值:%.3lf\n",num_aver(a));    //数组名
}
void num_scanf(double *a)
{printf("输入数组元素的值从a[1]-a[%d]共%d个数(以空格隔开):\n",M-1,M-1);int i;for(i=1;i<M;i++){scanf("%lf",(a+i));}getchar();printf("验证输入!\n");for(i=1;i<M;i++){printf("%.2lf\t",*(a+i));}printf("\n");
}
double num_aver(double *x) //指针变量
{int i;for(i=1;i<M;i++){x[0]+=x[i]; //求和}printf("\n! a[0] !:%lf\n",x[0]);return(x[0]/(M-1)); //求平均值,并返回
}

(3) 指针变量 —> 数组名

//------------------------------
//(3) 指针变量 --->    数组名
//------------------------------
#include<stdio.h>
#define M 11
void num_scanf(double *);   //声明输入数组的函数
double num_aver(double a[]);  //声明计算和和平均值的函数(a[]会转化为*a)
int main()
{double a[M]={0},*pa;    //定义一个数组和指向数组的指针pa=a;   //指针指向一维数组首地址num_scanf(pa);printf("所有元素的平均值:%.3lf\n",num_aver(pa));    //指针变量
}
void num_scanf(double *a)
{printf("输入数组元素的值从a[1]-a[%d]共%d个数(以空格隔开):\n",M-1,M-1);int i;for(i=1;i<M;i++){scanf("%lf",(a+i));}getchar();printf("验证输入!\n");for(i=1;i<M;i++){printf("%.2lf\t",*(a+i));}printf("\n");
}
double num_aver(double a[]) //数组名
{int i;for(i=1;i<M;i++){a[0]+=a[i]; //求和}printf("\n! a[0] !:%lf\n",a[0]);return(a[0]/(M-1)); //求平均值,并返回
}

(4) 指针变量 —> 指针变量

//----------------------------------
//(4) 指针变量 --->    指针变量
//---------------------------------
#include<stdio.h>
#define M 11
void num_scanf(double *);   //声明输入数组的函数
double num_aver(double *);  //声明计算和和平均值的函数(形参为指针变量)
int main()
{double a[M]={0},*pa;    //定义一个数组和指向数组的指针pa=a;   //指针指向一维数组首地址num_scanf(pa);printf("所有元素的平均值:%.3lf\n",num_aver(pa));    //指针变量
}
void num_scanf(double *a)
{printf("输入数组元素的值从a[1]-a[%d]共%d个数(以空格隔开):\n",M-1,M-1);int i;for(i=1;i<M;i++){scanf("%lf",(a+i));}getchar();printf("验证输入!\n");for(i=1;i<M;i++){printf("%.2lf\t",*(a+i));}printf("\n");
}
double num_aver(double *x) //指针变量
{int i;for(i=1;i<M;i++){x[0]+=x[i]; //求和}printf("\n! a[0] !:%lf\n",x[0]);return(x[0]/(M-1)); //求平均值,并返回
}

用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]处相关推荐

  1. 用子函数的方法求一维数组中所有元素之和

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容2]用子函数的方法求一维数组中所有元素之和 #includ ...

  2. 一维数组求平均值c语言编程软件,请问一道c++编程:求一维数组中全部元素的平均值?...

    编程代码如下: //文件后缀名为.cpp #include using namespace std; #define NUM 20 //求和数据个数的最大值 int main() { int i,n; ...

  3. C语言编程>第二十一周 ② 请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。

    例题:请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中. 注意:仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容. 代码如下: #include& ...

  4. 一维数组中重复元素的去除

    一维数组中重复元素的去除 前言 一.基本思路 二.步骤 1.设置判断数组Arr[ ]: 2.继承数组newArr[ ]获取不重复元素 总结 前言 关于一维数组中有重复的元素该怎么剔除,作为java初学 ...

  5. 编写一个方法,去掉数组中重复元素

    方法一:排序后相邻去除法 arr = [1, 2, 5, 1, 3, 7, 9, 5];function unique(arr) {arr.sort();var _arr = [arr[0]];//结 ...

  6. php判断一维数组中相同元素出现的次数

    php中统计一维数组相同元素出现的的次数,可以用php自带的函数array_count_values,用法示例如下: $a =array("A","Cat",& ...

  7. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  8. JavaScript 删除数组中指定元素(5种方法)

    JavaScript 删除数组中指定元素 在 JavaScript 中,数组是一种常见的数据类型,可以存储多个元素.有时候,我们需要从数组中删除某些特定的元素.本文将介绍如何使用 JavaScript ...

  9. PHP数组函数 count (计算数组中的元素数目)

    在PHP中,数组函数 count () 用来计算数组中的元素数目.     函数语法: count ( mixed $array_or_countable [, int $mode = COUNT_N ...

最新文章

  1. HTML meta标签总结与属性使用介绍
  2. 同级选择器_基础选择器
  3. Virtual Machine Manager 2008 2008 R2系列之安装部署
  4. python打开360浏览器_python selenium使用360浏览器出现新皮肤设置怎么办?
  5. 码农必读的 7 本计算机书
  6. Linux 用户管理命令笔记
  7. Redis的两种备份方式:RDB和AOF
  8. db2的bufferpool不足报错的快速解决
  9. ROS入门-6.ROS 命令行工具的使用
  10. Python Subprocess Popen 管道阻塞问题分析解决
  11. Kafka分区分配策略(Partition Assignment Strategy
  12. Qt编写QUI皮肤生成器
  13. 汇川小型PLC-MODBUS(485)通讯模式
  14. 不越狱破解A1528 iPhone5s移动联通4G网络
  15. gnuradio3.8.2的安装步骤
  16. 【论文阅读】Enhancing Underwater Imagery using Generative Adversarial Networks
  17. idea用JAVA连接mysqlAccess denied for user ‘root‘@‘localhost‘ (using password: YES)错误
  18. 51单片机数码管循环显示0 9c语言,如何采用单片机实现数码管循环显示0-9
  19. PC和DSP通信以及MCU和DSP通信之间的切换
  20. 我的Linux安装之旅

热门文章

  1. Android实例开发中如何创建第一个项目(android studio)
  2. 程序编译是出现field has incomplete type问题的解决
  3. pandas KeyError [‘1‘] not found in axis 错误的解决方法
  4. javascript 随机点名
  5. 对抗网络用于人脸转正--Beyond Face Rotation
  6. jstatd,VisualVM使用和报错解决:Could not create remote object--java.security.AccessControlException
  7. 数据库基准测试:database bencnmark --生成大量随机测试数据
  8. 指定ASP .NET Core Web应用端口
  9. android五大布局的用法,android:stretchColumns用法
  10. 编写里Linux命令解释器,linux基础教程试卷及答案