include"stdio.h"
void main()
{
int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
int i=0,j=0,s=0;
while(i++<4)
/*
当型循环,当i>4时,结束循环(此时i++,自身加1,所以一维的[0]没有参与。 */
{
if(i==2||i==4)/* 当i值为2或者为4时,不执行下面的运算,直接跳到下一循环 */
continue;
j=0; /* j赋值为0,也就是二维数组的第二维的下标置为 0 */
do /* 直到型循环 */
{
s+=a[i][j]; /*这行代码等价于: s=s+a[i][j]; */
j++;
/* j值自加,为结束循环创造条件 */
}while(j<4); /* 直到型循环的结束条件,直到j>4时结束 */
}
printf("%d\n",s);/* 打印s值 */
}
---------------------------------------------------------
这个程序很简单明了,就是要求出{5,6,7,8},{11,12,13,14},{15,16,17,18}这几组数据中若干组的累加和。根据i的条件可以看出,一维下标为2为4时,不参与运算。这是个a[4][4]的数组,i为4时是不可能的,所以这就是a[1],a[3]这几组数据累加,最后输出s值。由此可以得出s=5+6+7+8+15+16+17+18=92,所以最后输出:92。
-------------------------------
希望我讲的可以让你明白,其实这就是一个简单的循环问题——貌似简单,其中却另有玄机。唉~多谢那位朋友的提醒,下次一定再认真些,把程序运行一遍再说。我犯了一个很主观的错误,很自以为然,请大家批评。
[[it] 本帖最后由 广陵绝唱 于 2008-11-11 00:18 编辑 [/it]]