C语言,麻烦写下过程,为啥选b?

单选(2.5分)执行下面程序,输出结果是( B )
#include <stdio.h>
void main()
{
int i,j=3,a[]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<5;i++)
a[i]=i*(i+1);
for(i=0;i<4;i++)
j+=a[i]*3;
printf("%d",j);
}
A.33 B.63 C.123 D.48

第1个回答  2020-03-10

第一个for循环是重新对数组a的前五个数进行重新赋值,而第二个for循环是将数组a前四个值分别乘3后累加到j上

第2个回答  2020-03-10
这里需要注意两个for循环是分开的,第一个for循环执行完后才执行第二个for循环,第一个for循环结束后,再j=j+a[i]
第3个回答  2020-03-10
第一个for循环,将a数组赋值,前5个元素(下标0~4)元素的值为其(下标和下标+1的乘积), a[0]=0*1, a[1]=1*2, a[2]=2*3, a[3]=3*4, a[4]=4*5 因此a数组在第一个循环结束后的值为:
{0,2,6,12,20, 6,7,8,9,10}
第二个循环,将a数组前4个数(下标0~3)的三倍求和,再加给j(j的初值为3,也就是再加3),所以j=3+0*3+2*3+6*3+12*3 = 63
第4个回答  2020-03-10
拆开来看,一共两个for循环。注意,没有花括号不是嵌套循环。
第一个for:将数组a前五个赋值为:0,2,6,12,20;
第二个for:将数组a前四个值*3,并以初值j=3赋值求和。
(3+0*3)+(2*3)+(6*3)+(12*3)=63
第5个回答  2020-03-10
执行第一个for循环
i=0,a[0]=0

i=1,a[1]=2

i=2,a[2]=6

i=3,a[3]=12

i=4,a[4]=20

执行第二个for循环
i=0,j=j+a[0]*3=3+0*3=3

i=1,j=j+a[1]*3=3+2*3=9

i=2,j=j+a[2]*3=9+6*3=27

i=3,j=j+a[3]*3=27+12*3=63
随意最终结果j=63