1.main()
{
int i, sum = 0;
for (i = 1; sum < 1000000; i++)
{
sum = sum + iii;
}
printf("%d",i);
system("pause");
}
输出46
2.main()
{
int i, sum = 0;
for (i = 1; ; i++)
{
sum = sum + iii;
if (sum > 1000000)
{
break;
}
}
printf("%d",i);
system("pause");
}
输出45
3.main()
{
int i;
int sum = 0;
bool b = false;
for (i = 0; !b; i++)
{
sum = sum + iii;
b = sum > 1000000;
}
printf("当i为 %d 时,其立方和大于1000000", i);
system("pause");
}
输出46
4.main()
{
int i;
int sum = 0;
bool b = false;
for (i = 0; !b; i++)
{
b = sum > 1000000;
sum = sum + iii;
}
printf("当i为 %d 时,其立方和大于1000000", i);
system("pause");
}
输出47
5.书上给的源码是这个,不明白为什么i--
main()
{
int i, sum = 0;
for (i = 1; ; i++)
{
sum = sum + iii;
if (sum > 1000000)
{
break;
}
}
i--;
printf("%d",i);
system("pause");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个问题就是for(初始化;条件;调整)语句的执行顺序,第一次顺序:初始化->条件->语句;第二次顺序:调整->条件->语句;第三步顺序:调整->
条件->语句......最后一步也是一样。
1中最后一步从上一步得到i=44,i++,sum1000000,但是接下来的是调整,i++,所以i=46;
第2个就显而易见了,i=44时sum<1000000所以不会跳出,输出i=45
第3个和第1个一样
第4个明显i=44时,b=0;再循环一圈i=45时,b=0;在循环一圈i=46时,b=1继续执行下面的语句,然后进行调整i++得到47在进行!b判断。
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)