c语言求详细过程

如题所述

第1个回答  2015-01-09
第一句:定义整形数组:a[0][0]=1,a[0][1]=2,a[0][2]=0;
a[1][0]=3,a[1][1]=4,a[1][2]=0;
a[2][0]=5,a[2][1]=6,a[2][2]=0;
定义整形变量:i,j;(未赋初值) s=0;

首先,循环体确定:
for(i=1;i<3;i++) //一级循环

{

for(j=0;j<=i;j++) //二级循环

{

s+=a[i][j];

}

}

当i=1时,i<3成立,执行后续操作,即:j=0,j<=1成立,执行s=s+a[1][0]=0+3=3;
j=1,j<=1成立,执行s=s+a[1][1]=3+4=7;

j=2,j<=1不成立,结束二级循环,这时回到一级循环的i++语句执行,即:i=2;

当i=2时,i<3成立,执行后续操作,即:j=0,j<=2成立,执行s=s+a[2][0]=7+5=12;
j=1,j<=2成立,执行s=s+a[2][1]=12+6=18;

j=2,j<=2成立,执行s=s+a[2][2]=18+0=18;
j=3,j<=2不成立,结束二级循环,这时回到一级循环的i++语句执行,即:i=3;
当i=3时,i<3不成立,结束一级循环。
执行printf("\n%d",s);
即打印18追问

那些0+3 3+4 7+5怎么来的啊

第2个回答  2015-01-09
答案选A,18。

首先看形成的数组a[3][3],它定义是这样子的:
1 2 0
3 4 0
5 6 0
因为每行只给出了两个数字,第三个数字没有给出,系统默认是0。

再看执行情况:
i的循环只是从1到2,j的循环从0到i,即:
当i=1时,j=0、1,做和的数字是a[1,0]和a[1,1]
当i=2时,j=0、1、2,做和的数字是a[2,0]、a[2,1]和a[2,2]
它们的和就相当于:s=a[1,0]+a[1,1]+a[2,0]+a[2,1]+a[2,2]=3+4+5+6=18

有什么问题请留言。本回答被网友采纳
第3个回答  2015-01-09
a数组存储数据为:
j=0 j=1 j=2
i=0 1 2 0
i=1 3 4 0
i=2 5 6 0
双层循环:外层i=1时,j从0变到1,即:s=0+a[1][0]+a[1][1]=7
i=2时,j从0变到2,即:s=7+a[2][0]+a[2][1]+a[2][2]=18
答案为A本回答被提问者采纳
第4个回答  2015-01-09
3+4+5+6+0 = 18