C中数组问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 00:27:15
若有以下程序:
main()
{int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
.int i,j,s=0;
for(i=0;i<4;i++)
...{for(j=0;j<4;j++)
.....{if(a[i][j]<0) continue;
......if(a[i][j]==0) break;
......s+=a[i][j];
.....}
...}
printf("%d\n",s);
}
执行后输出结果是58,请从for以下逐个分析程序,关键是两个IF的判断,怎么会
得到58呢,请把过程写下吧,我弄不明白。

第一个for为行循环,第二个for为列循环。
continue为结束本次循环(列数加1)
break为结束整个循环(行数加1)
本题:
{if(a[i][j]<0) continue; //遇到负数就结束
循环,使列数加1
后,再判断此句

if(a[i][j]==0) break; //遇到0就结束整个for
循环,第一个for
循环中行数加1。

最后s=1+2+23+32=58

前一个if是遇到负数则跳过(不计入总和), 

即if(a[i][j]<0),就不执行if(a[i][j]==0) break; s+=a[i][j];,进入下一个循环的判断for(j=0;j<4;j++) 

后一个if是遇到0则跳入下一行,即跳出for(j=0;j<4;j++) ,执行for(i=0;i<4;i++) 

整个程序就是计算各行0之前的正数的总和 

遇到负数则跳过 

遇到0则跳入下一行

c语言中数组的问题 C语言中关于数组的问题。 C语言中,数组的问题。 C语言数组中元素排列问题 c语言中数组的简单问题。 C语言中结构数组问题 C中数组插入 C语言中二维数组中指针的问题 c语言数组问题 C语言数组问题