C语言题,大家帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/06/24 01:32:22
#include <stdio.h>
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)
{
if(i==2||i==4) continue;
j=0;
do{ s+= a[i][j]; j++; } while(j<4);//a[j]改成a[i][j]
}
printf("%d\n",s);
}
我想知道这个结果是怎么算出来的?

在第一次进行判断进入外循环时,i=0<4,然后i进行自加变为1;
此时if条件不成立,j=0;进入内层循环,将a[1][0],a[1][1],a[1][2],a[1][3]求和之后送给s;退出第一次内循环,进入第二次外循环,此时i=1<4,然后i进行自加变为2;此时if条件成立,退出当前循环,进入下一次外循环,此时i=2<4,然后i进行自加变为3;此时if条件不成立,j=0;进入内层循环,将a[3][0],a[3][1],a[3][2],a[3][3]依次累加给s;退出内循环,进入第四次外循环,此时i=3<4,然后i进行自加变为4;此时if条件成立,退出当前循环,此时i=4不小于4,所以进入printf,输出的结果就是5+6+7+8+15+16+17+18的结果92

先执行while循环,条件成立则往下运行。do while是无论跳进成不成立都会执行一次。,你就按照这个思路来一步一步分析吧。这个代码其实不怎么好分析,因为牵涉到数组

5+6+7+8 + 15+16+17+18= 92
应为ishi先加1的,所以就是a[1][0]、a[1][1]、a[1][2]、a[1][3],还有a[3][0]、a[3][1]、a[3][2]、a[3][3]

拿编程器去算额