C语言:答案是15,该怎么理解
答案:4 悬赏:50 手机版
解决时间 2021-03-26 03:33
- 提问者网友:龅牙恐龙妹
- 2021-03-25 23:54
C语言:答案是15,该怎么理解
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-03-26 01:14
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的。
然后经过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的。
全部回答
- 1楼网友:舍身薄凉客
- 2021-03-26 04:40
第一次进入循环体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
第二次进入循环体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
- 2楼网友:傲气稳了全场
- 2021-03-26 03:14
这样理解试试。
先进入循环内,此时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吗?
先进入循环内,此时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吗?
- 3楼网友:蓝房子
- 2021-03-26 02:42
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
还需要解释吗?
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
还需要解释吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯