nnpc.net
当前位置:首页 >> 求出二维数组周边元素之和,作为函数值返回。二维数组的值在主函数中赋予。C语言 >>

求出二维数组周边元素之和,作为函数值返回。二维数组的值在主函数中赋予。C语言

第一个for()循环是计算矩阵的最上一行和最下一行的总和,第二个for()是计算除两头元素以外的最左一列和最右一列的元素的和,最后sum就是周边元素的和.〔源程序〕#include #include #define M 4#define N 5int fun(int

int fun(int p[m][N],int m,int N)//m为行数,n为列数 { int sum = 0; for(int i=0;i<m;i++) sum += p[m][0]; for(int j=0;j<m;j++) sum += p[m][n-1]; for(int k=1;k<m-1;k++) sum += p[0][k]; for(int k=1;k<m-1;k++) sum += p[m-1][k]; return sum; } 这是大体想法 纯手

说一下思路吧: 这里的“周边元素”是指的四边形的四条边吗?如果是这样的话,那么即是求[0][]、[m-1][]、[][0]、[][n-1]这几行(列)的元素总和,再减去这几个元素[0][0]、[0][n-1]、[m-1][0]、[m-1][n-1]的和. 将以上计算结果作为fun的返回值return一下,fun的形参可以设为规定数组大小的m、n以及一个指针,由这个指针在fun中给二维数组赋值(顺序记不大清楚,书上应该有) 至于主函数嘛,输入可以通过一个一维数组在循环中实现,当然首先要规定大小为mn(最先由键盘输入) 最后就是将这个数组的首地址及m、n作为实参带入fun即可,然后将fun赋给什么什么变量,printf一下

// circ, 计算二元数组周边和 // a [in], 二元数组 // mo,no, [in/out], 输入a的行列数, 输出最大元位置 int circ(int*a, int* mo, int *no){ if(!a || !mo || !no || *mo<1 || *no<1) return 0; int m=*mo, n=*no; int ic=m*n, s=0, k, r,c; for(int i=0; i<ic; i++){ r=i/n;

#include#include // ny 是行数, nx 是列数,a 是 2维数组首地址 float fun(float *a, int ny, int nx){ float sum=0.0; int j,i; for (i=0;ifor (j=1;jreturn sum; } main() { float a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; // 假定 3行4列 数组,和数值 int i,j;// 打印数组 for (j=0;j{ for (i=0;iprintf("\n"); }// 输出周边元素之和.printf("%g\n",fun(&a[0][0],3,4) ); }

程序我就不写了.我告诉你思路:这和等于第一行加最后一行再加上中间元素.中间元素求法:for(i=1;i 评论0 0 0

#include<stdio.h> int fun(**a,m,n) { int i,j; int sum=0; for(i=0;i<n;i++) { sum+=a[0][i]+a[m-1][i]; } for(i=1;i<m;i++) { sum+=a[m][0]+a[m][n-1]; } } int main() { int a[10][10],i,j; for(i=0;i<10;i++) for(j=0;j<10;j++) { scanf("%d",&a[i][j]); } printf("%d\n",fun(a,10,10)); return 0; }

#include<stdio.h>#include <stdlib.h>// NY 是行数, NX 是列数,a 是 2维数组首地址 float fun(float *a, int NY, int NX){ float sum=0.0; int j,i; for (i=0;i<NX;i++) sum=sum+a[i]+a[(NY-1)*NX + i]; // 首行,末行 for (j=1;j<NY-1;j++) sum = sum + a[j*NX]+a[j*

我已经测试 结果61! int fun ( int a[M][N] ){ int i,j,sum=0; for(i=1;i<M-1;i++){//将边上的两列元素除了首尾两行其余相加 sum+=(a[i][0]+a[i][N-1]); } for(j=0;j<N;j++){//将首尾两行元素相加 sum+=(a[0][j]+a[M-1][j]); } return sum;} 你还有疑问? 明白了就采纳了吧 谢谢

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.nnpc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com