永发信息网

C语言:答案是15,该怎么理解

答案:4  悬赏:50  手机版
解决时间 2021-03-26 03:33
C语言:答案是15,该怎么理解
最佳答案
j=0时,sum=1;
然后经过j++,++j之后,j=2;

j=2时,sum=sum+j*sum=1+2*1=3;
然后经过j++,++j之后,j=4;
j=4时,sum=sum+j*sum=3+4*3=15;
然后经过j++,++j之后,j=6,此时循环结束;

所以最后的结果是15.追问第一次的j不应该等于1吗,因为++j?追答++j是大括号里面执行完,再去执行for里面的++j的。
全部回答
第一次进入循环体sum=1+1x0
第二次进入循环体sum=1+1x2
第三次进入循环体sum=(1+1x2)+(1+1x2)*4追问为什么第一次的 j 等于0?追答j++是先使用j的初始值再进行自加运算;++j先进行自加运算 再使用本身的值
int j=0;
printf("%d",j++);输出0
printf("%d",++j);输出1
这样理解试试。
先进入循环内,此时j=0,sum=1,求和过程中j++,此时j=1,再回到循环的第三条表达式,++j,此时j=2,再进行循环的第二条表达式的判断2<5,循环继续;j=2时,sum=3,此时j=3,回循环第三条表达式,j=4,循环第二个判断条件4<5,循环继续;j=4时,sum=3+3*4=15,此时j=5,再回循环,++j,j=6,
6>5循环结束,退出, return15. 希望讲清楚了追问不是要先判断j是否小于5后才执行++j吗?
public class Testsome {

public static void main(String [] args ){
int sum =1;
for (int j = 0; j < 5; ++j){
System.out.print(j+" ");
System.out.print(sum+" ");
sum += (j++) * sum;
System.out.println(sum);
}

}
}
结果是这样的

0 1 1
2 1 3
4 3 15

还需要解释吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
牛顿真正的名字是什公?
白眼球上的胎记能去除吗
win8.1更新到win10时候总是出现0x800704
迪奥口红大红中带橘色是哪个色号
农村的火炕怎么弄 我家的炕一点火就倒烟
曼西顿全铝家居是厂家吗?
用思念造句
若分式的值为零,则b的值为________.
南平北到广州的高铁走哪条线
中国人为什么特别能忍
遇到处处想炫耀自己,有处处出丑的人怎么办
“八字”的确定规律
双刺彭刚知道豆豆不是自己亲生的么
人能听到的频率范围是多少
立沟在什么地方啊,我要过去处理事情
推荐资讯
相邀在渡头 (打一字)湘
耐火砖多少钱一块
心胸没看齐以后能长好吗
一键ghost备份之后无法开机,出现try (hd0,0)
景区里的移动厕所必要吗
小金理财和联币哪个好用
兴城古城的故事作文300字
高亢反义词是什么
数据x,6,4,0,1,7,5的极差为10,则x=___
35x102怎么简便运算
苏州学思堂教育和学大教育哪家老师工资高??
塑钢窗是属于金属门窗还是塑料门窗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?