Ⅰ 假定一个二维数组的定义为“int a[3][4]={{3,4},{2,8,6}}”则a[2][0]的值为多少
a[2][0]的值为0
int a[3][4]表示定义一个3行4列的整型数组a;{{3,4},{2,8,6}}表示初始化数组。
最外围{}中的每一个{}表示依次对每一行赋值,不够的补0},所以{{3,4},{2,8,6}}表示对数组的前两行赋值,每行也是依次赋值,不足补0;
int a[3][4]={{3,4},{2,8,6}}
最终数组存储情况:数组的下标是从0开始的,如下图所示。
所以a[2][0]的值为0
(1)c语言a34a43的区别扩展阅读:
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。
对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。
参考资料:网络——二维数组
Ⅱ C语言求一简单程序,二维数组矩阵,按降序排列,输入矩阵
#include "stdio.h"
struct num //用一个结构体存,方便排序
{
int a[5];
};
int main ()
{
int i,j,sum;
struct num n[5],tem;
for (i = 0;i < 5;i ++)
{
sum = 0;
for (j = 0;j < 4;j ++)
{
scanf ("%d",&n[i].a[j]);
sum += n[i].a[j];
}
n[i].a[4] = sum/4;
}
for (j = 1;j < 5;j ++)
for (i = 0;i < 5 - j;i ++)
{
if (n[i].a[4] < n[i+1].a[4])
{
tem = n[i];
n[i] = n[i+1];
n[i+1] = tem;
}
}
for (i = 0;i < 5;i ++)
{
for (j = 0;j < 5;j ++)
printf ("%d ",n[i].a[j]);
printf ("\n");
}
return 0;
}
有什么看不懂的就问吧
Ⅲ 如何取出数组中所有不同行不同列的数据 用C语言
一个笨办法:
for (int i=0;i<[数组行数];i++)
{
for(int j=0;j<[数组列数];j++)
{
if(j==i){.........}
else{.........}
}
}
Ⅳ int *a[3][4]是什么意思
int **a[3][4]是双指针类型的2维数组,
int *a[3][4]是指针类型的2维数组,
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
(4)c语言a34a43的区别扩展阅读
在一维数组 b 中,数组名 b 代表数组的首地址,即数组第一个元素的地址,b+1 代表数组第二个元素的地址,…,b+n 代表数组第 n+1 个元素的地址。
所以既然 a[0]、a[1]、a[2]、…、a[M–1] 分别表示二维数组 a[M][N] 第 0 行、第 1 行、第 2 行、…、第 M–1 行各一维数组的首地址,
那么同样的道理,a[0]+1 就表示元素 a[0][1] 的地址,a[0]+2 就表示元素 a[0][2] 的地址,a[1]+1 就表示元素 a[1][1] 的地址,a[1]+2 就表示元素 a[1][2] 的地址……a[i]+j 就表示 a[i][j] 的地址。