C语言书本上一个例题,二维数组.看不懂.!

输出二维数组中每一行的最小元素及其行列号
代码
{
int a[5][5]={{11,22,33,42,53},
{51,41,31,21,11},
{44,54,24,34,74},
{93,59,17,64,74},
{96,45,39,65,58}};
int i,j,col;
for(i=0;i<5;i++)
{
col=0; //找到最小的元素
for(j=0;j<5;j++)
if(a[i][j]<a[i][col])
col=j; //用变量col保存最小的元素所在的列数
printf(''row:%d,min:#d,col:%d\n'',i+1,a[i][col],col+1);
}
return 0;
}

后几个循环都能看懂, 第一个循环 i=0时, 进入循环 j=0
a[0][0]<a[0][0]不成立
j=1
a[0][1]<a[0][0] 不成立
j=2
a[0][2]<a[0][0]不成立
j=3
a[0][3]<a[0][0]不成立
j=4
a[0][4]<a[0][0]不成立

第一个循环 看上去就不成立啊, 因为 a[0]行里 最小的数在a[0][0]啊, 我哪理解错了,

如果最小的数在a[i][0],每一次循环if语句括号里都是零,最后变量col的值就不改变,还是零,但是还是能表示第零个元素a[i][0]是最小的数啊
不过第一次比较是不可能成立的,多余了,可以把循环改成从1开始
for(j=1;j<5;j++)
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-10
你的理解没有错滴。虽然看上去第一个循环就不成立,但是如果每一行有50个数字而不是5那你还能看出来吗?这就是程序的通用性了。

求C语言二维数组问题。。(30分)
1.元素array[i][j]前面有i*m+j个元素。2.数组第一维的大小是2。3.对 4.a[0][0]、a[1][2]、a[1][0]是正确引用。5.int a[2][]={{1,2,3},{4,5,6}};一维可省,二位不可省;int a[2][4]={{1,2,3},{4,5},{6}};越界了,只定义了两行却赋了三行的值;int a...

C语言二维数组的问题
6 6 7 8 6 4 5 7 a[0][0]=1,a[0][1]=2,a[0][2]=3,a[0][3]=4 a[1][0]=6,a[1][1]=6,a[1][2]=7,a[1][3]=8 a[2][0]=6,a[2][1]=4,a[2][2]=5,a[2][3]=7 你应该一个一个标上就不会犯错误啦,你的书没看透啊,书上这方面的知识都...

C语言 二维数组小问题
因为对于int **p,*p是int *类型,所以*p+2代表指针步进2个,每个长度为4,所以值为1+4*2=9;对于int *p = a[0],*p是int型,所以直接按整形加法,值为3

C语言二维数组 int a[2][3]={{1,2},{4,5}};{}里的是什么意思啊_百度知 ...
这个是一个二维数组,最外面的括号就是总的数据 里面的每个括号都是下标中1的内容,举个例子 你上面的 哪样的话 那就是a[0][0] = 1; a[0][1]=2; a[0][2] 没赋值 a[1][0] = 4 ; a[1][1]= 5;其他的都没赋值

呵呵,问一个C语言中二维数组的问题。
几维可以考虑理解为矩阵。a[2][3]是一个二行三列的矩阵。这个是数据的“形状”。“字符”数组是指这数组中的数据是“字符”这种数据“类型”。类型和形状讲的2回事。当然了,实际上a[x][y]中指的有这么一个数组a[x],x中y个元素。如果按矩阵来理解则 |[0][0],[0][1],[0][2]| a[...

c语言的一个二维数组的题,求大神帮我写一下
include<stdio.h>int main(){ int n = 5,i = 0; printf("输入层数(9层以内比较好):"); scanf("%d",&n); int a[2*n-1][2*n-1]; int temp = n; while(temp != 0){ for(i = n-temp;i < n+temp-1;i++){ int j; for(j = n-temp;...

一个关于C语言中二维数组的问题(如何判断数组中的数全为1?)
最直接的办法就是调用函数,将该数组作为实参传递,然后在函数中定义一个变量flag作为标记,用循环遍历这个二维数组 如果数组元素为1则将flag置为1继续扫描,否则置为0并退出循环 返回flag,flag为1则表示数组元素全为1,否则不全为1

C语言中二维数组的定义问题
1. 二维数组的第一个维度缺省是:举个例子:int tar[][2] = {1,2,3,4};因为大括号中有4个元素,而且第二个维度是2,所以就可以计算出来第一维度是2.所以是可以缺省的。2. 你的这个例子中,第一维缺省的应该是(7*8+1)\/(__MAXITERMLEN__+1) 向上取整。3. 因为fd_jpf1[i]是一个...

C语言二维数组int a[4][3]={{1,2},{4,5},{7},{10}};
就是给你的数组赋值,就像你所举例的,是个四行三列的数组,第一行的初值为1,2,0;第二行的初值为4,5,0,第三行的初值为7,0,0;(未附到的元素默认值为0)

C语言的一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。3.由取下标运算的含义:x[j]实际上是*(x+j),即先找地址后进行间接运算。而x是a+i,代进去就得到*(a+i+j)...

相似回答