C语言编程:使用指针编程求3X4的二维数组{1,3,5,7,9,11,13,15,17,19,21,23,25}的所有元素对角线之和

如题所述

以下程序求4X4矩阵的主对角线和次对角线之和:

#include <stdio.h>

int main()

{int i,j,s1=0,s2=0;

 int a[4][4]={1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31};

 for(i=0;i<4;i++)

 {for(j=0;j<4;j++)

   printf("%3d",a[i][j]);

  printf("\n");

 }; 

 for(i=0;i<4;i++)

 {s1+=a[i][i];

  s2+=a[i][3-i];

  }

 printf("主对角线之和=%d\n",s1);

 printf("次对角线之和=%d\n",s2); 

 return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-16
输出结果为60。 简单说p和a是一个东西。也就是说把p换成a结果也是一样的。 具体解释一下: 二维数组的结构是这样的:a[3]这个第二维数组记录的是第一维数组的开始地址。即,a[0]的值和(&a[0][0])的值是一样的。a[1]的值和(&a[1][0])的值是...

3.c语言程序设计 编程输出3×4的二维数组中的最大值、最小值及其所在...
int main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},max,min,i,j,k[5]={0};max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){ if(a[i][j]>max){ max=a[i][j];k[1]=i;k[2]=j;} if(a[i][j]<min){ min=a[i][j];k[3]=...

...{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i...
先说说i,j的值 i=0.j=0 i=0,j=1 i=1,j=0 i=1,j=1 第一组:k=k+*(*(p+i)+j)第二组:k=k+*(*(p+i)+j) 注意k的值已变化 第三组:k=k+*(*(p+i)+j) 注意k的值已变化 第四组:k=k+*(*(p+i)+j) 注意k的值已变化 一时忘记怎么算(*p)[4]=a,i,j,k=0...

...{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i...
即a[i]和*(p+i)是一样的。因此*(p+i)+j就是a[i][j]的地址。因此*(*(p+i)+j)就是a[i][j]的值。也就是说,这个程序求的是各行前两列的数之和。1 3 5 7 9 11 13 15 17 19 21 23 1+3+9+11+17+19=60 由于本人嘴笨,给你简单画一下存储结构,帮助你理解。括号...

c语言二维数组问题
int main(){ int a[5][5]={{1,3,5,7,9},{11,13,15,17,19},{21,23,25,27,29},{31,33,35,37,39},{41,43,45,47,49}};int b[5][5]={{2,4,6,8,10},{12,14,16,18,20},{32,34,36,38,40},{42,44,46,48,50},{52,54,56,58,60}};int i,j;printf("a...

...值最大的元素值,以及它的行号和列号(C语言编程)
intmain(){ inta[3][4]={1,2,3,4,5,6,7,8,23,48,11,12};inti,j,max=a[0][0],row,colum;printf("数组为:\\n");for(i=0;i<3;i++){ for(j=0;j<4;j++)printf("%4d",a[i][j]);printf("\\n");} for(i=0;i<3;i++){ for(j=0;j<4;j++){ if(a[i][j...

使用列指针输出二维数组元素
&列指针 —— 行指针 下面言归正传,给出一个用列指针输出二维数组的例子:include <stdio.h> void main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int *p= a[0]; \/\/ 列指针的定义法 for(; p < a[0] + 12; p++){ printf("%d ",*p);} return;} ...

用C语言编程:3行4列的二维数组中输出每一行的最大值怎么编程呀
int a[3][4],m=0;for(int i=0;i<3;i++;){ for(int j=0;j<4;j++;){ if(m

c语言编写一个程序,实现一个3×4矩阵转置。
思路:定了两个二维数组分别存储转置前后的矩阵,接着for循环依次转置即可。\/\/参考代码#include<stdio.h> int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},b[4][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) b[j][i]=a[i][j]; for(...

C语言有一个3*4的矩阵,用c语言编写程序找出其中值最大的元素,并输出最...
int a[2]={1,2,3,} \/\/数组a[0]=1,a[1]=2,a[2]=3 max=a[1] \/\/max=1 if (max<a[2]) max=a[2] 因为max 原来的值等于1,小于a[2],所以,现在要把大的数a[2]给max if(max

c语言输出二维数组中指定列的和 如输入二维数组: 1 2 3 4 5 6 7 8...
int main(){ int array[ROW][COL]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};int pos;for(int i = 0;i<ROW;i++){ for(int j = 0; j<COL;j++){ printf("%d\\t",array[i][j]);} printf("\\n");} printf("请输入指定列:");scanf("%d",&pos);if(pos<0|...

相似回答