1,二维数组调用多维数组的访问,(用二维指针接收二维数组名,肯定会出错,至少编译不通过了)你只须传二维数组的第一行元素过去就行了,也就是说把二维数组m[a][b]假设有a行b列 , 则在调用时,只须将a[0]和二维数组的列数b(也就是第一行的地址)传过去,假设二维数组就是一个a行b列的表格,你传了第一行地址过去了 , 知道了表格的开始位置了,你就可以以不同的偏移量访问二维数组了,比如你在setMatrix函数中用一个一级指针int* pa , 接收main()函数中传过来的m[0] , 用b接收了二维数组的列数,现在假如你想访问第i行j列的某个元素,就可以用pa+b*i+j访问该元素了!呵呵,希望对您有所帮助!void setMatrix(int** pMatrix,int nTotal);diagonal(int** pMatrix,int* pArray,int nCount);函数声明给出,自己去想了【二维数组函数调用,二维数组调用】
2 , 求C语言编程调用函数计算二维数组所有元素的平均值两个for循环记录二维数组的总值count+=array[i][j]key记录数组元素个数key++;最后returncount/key或:double avg(int x[10][10])int i,j,sum;for(i=0;i<10;i++)for(j=0;i<10;j++)sum+=x[i][j];}return sum/((i+1)*(j+1));}扩展资料:函数作为另一个函数调用的实际参数出现 。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的 。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的 。在函数调用中还应该注意的一个问题是求值顺序的问题 。参考资料来源:百度百科-函数调用两个for循环记录二维数组的总值count+=array[i][j] key记录数组元素个数key++;最后return count/keyvoid avg(int array[N][M]) int avg,sum=0; for(int i=0;i<N;i++) for(int j=0;j<M;j++) sum+=array[i][j]; avg=sum/(N*M); }include<stdio.h> main() int i,j; int avg=0,sum=0; static int a[2][3]=for(i=0;i<2;i++) for(j=0;j<3;j++) sum+=a[i][j]; avg=sum/(2*3); printf("%d",avg) }double avg(int x[10][10])int i,j,sum;for(i=0;i<10;i++)for(j=0;i<10;j++)sum+=x[i][j];}return sum/((i+1)*(j+1));}这样就可以了 。我假定你传入的数组长度为10×10的你可以把它改成你实际需要的 。因为C不想JAVA 具有求数组长度的函数,所以我就暂时给你写成这样的了 。你只要把那几个10 改成实际需要的即可 。两个for循环 记录二维数组的总值 count+=array[i][j] key记录数组元素个数 key++;最后 returncount/key
3,C语言如何在子函数中写一个33二维数组给主函数调用这样就可以了:#include<stdio.h>#include<malloc.h>int **sr(void) arr = (int**)malloc(sizeof(int*) * 3);//为指针申请空间,for (i = 0; i < 3; i++)//行数 for(j=0; j<3; j++) scanf("%d",arr[i]+j); } return arr;}int main(void) for (i = 0; i < 3; i++)//行数 printf("%4d",pp[i][j]); printf("\n"); } return 0;}在子函数申请二维数组 , 主函数使用,可以用动态申请 。方法不止一种,我这里用指针的指针实现二维数组 。二维数组除了行列 , 本身地址也是连续的 , 从第一行第一列的元素地址++ , 可以取出所有元素 。所以我这里先申请了完整的连续地址 。#include<stdio.h>#include<malloc.h>int ** sr(void) int i,j; int *memory=(int *)malloc(sizeof(int)*9);//申请完整的连续内存地址3*3 int **arr=(int **)malloc(sizeof(int*)*3);//申请二维数组行指针数组(也就是二维数组) if(!memory || !arr) printf("内存申请错误!\n");return NULL;} for(i=0,j=0;i<9;i+=3)//将连续地址按列数,取出每行首地址,赋值给二维数组元素 arr[j++]=&memory[i]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&arr[i][j]); return arr;}int main(void) int i,j,**arr=sr(); if(!arr) return 1; printf("---主函数调用子函数定义的二维数组---\n"); for(i=0;i<3;i++,printf("\n")) for(j=0;j<3;j++) printf("%d ",arr[i][j]); printf("\n---实现二维数组地址连续性---\n"); int *p=&arr[0][0]; while(p<=&arr[2][2]) printf("%d ",*p++); return 0;}#include <stdio.h>void fun(int (*s)[3], int m, int n) int i, j; for (i = 0; i < m; ++i)for (j = 0; j < n; ++j)s[i][j] *= s[i][j];} }}int main() int a[4][3]; int i, j; for (i = 0; i < 4; ++i)for (j = 0; j < 3; ++j)scanf("%d", &a[i][j]);} } fun(a, 4, 3); for (i = 0; i < 4; ++i)for (j = 0; j < 3; ++j)printf("%d", a[i][j]);}printf("\n"); } return 0;}
推荐阅读
- pycharm,pycharm是什么工具开发的
- mysql动态内存使用情况报告 mysql动态内存使用情况
- mysql 80改密码 mysql8.0.11如何修改密码
- 客户分析表,汽车战败客户分析表
- 航嘉电子,合肥航嘉电子
- 数据库事务和锁的关系 mysql事务与锁有关系吗
- 腾讯视频免费下载安装
- mysql1449错误 mysql1418错误怎么解决
- mysql dbms是 mysql中db是什么