鱼C论坛

 找回密码
 立即注册
查看: 1491|回复: 7

[已解决]这是该怎么办

[复制链接]
发表于 2022-6-23 22:33:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个该根据哪个来呀 求助
最佳答案
2022-6-24 01:53:14
答案是D因为:
一开始的时候x和y都是10,
然后就进入了for循环,
for循环里面的初始化语句是i=0,所以i就i=0;for循环里面的条件是x>8,也就是10>8,条件成立,所以就进入循环
然后循环里面说printf(“%d %d”,x--,y);
上面的意思就是说把x和y的值打印出来
所以就打印出来了10 10
之后因为后面有写着x--,所以x变成了9,(x--的意思就是说先把之前x的值用了它才会-1,这也就是为什么上面x的值是打印了10)
然后呢就继续循环,
i的初始值是0,而y=++i,所以y就变成了1,(首先i=0,然后y被赋值++i,意思就是y=1+i,也就是y=1+0,所以y=1)
(补充:x--和++i的区别就是;x--是先把之前x的值用了它才会-1,而++i是先把原本的值+1了,再拿来用)
接下来就在看for循环里面的条件是x>8,也就是9>8,条件成立,所以就进入循
然后循环里面说printf(“%d %d”,x--,y);
所以就打印出来了9 1
之后因为后面有写着x--,所以x变成了8,
然后又y=++i,所以y就变成了2,注意上面的i的值已经变1了,所以又在++i就是y=1+1
接下来就在看for循环里面的条件是x>8,也就是8>8,条件不成立,所以就结束循环
最后打印出来的结果就是10 10 9 1


这里补充一下for循环:
for(初始化语句; 循环条件; 自增或自减)
{
语句块;
}
每次执行for循环都是先执行初始化语句(每次进入for循环初始化语句只执行第一次)再看循环条件是否成立,条件成立就执行语句块(条件不成立就结束循环),执行完语句块后在执行自增或自减,接着再看循环条件是否成立,就一直这样重复下去,直到循环结束。
顺序:初始化语句——>循环条件——>语句块——>自增或自减——>循环条件——>语句块——>自增或自减——>循环条件——>直到循环条件不成立

原题

原题

网上解法

网上解法

网上解法

网上解法

试卷答案

试卷答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-23 22:40:00 | 显示全部楼层

回帖奖励 +2 鱼币

第二个对的,试卷答案对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-23 22:45:09 | 显示全部楼层

回帖奖励 +2 鱼币

  1. for (A;B;C) {
  2.     D
  3. }
复制代码

这样的结构可以看成是
  1. for (A;B;) {
  2.     D
  3.     C
  4. }
复制代码

所以 y=++i 的首次执行在第一遍 printf() 之后
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-23 23:13:43 | 显示全部楼层

回帖奖励 +2 鱼币

冲着渔币来的,我个人看法,手写的分析明显有问题,第一次输出 10 10     由于 x--是先用后减减 先输出10再减减x = 9 ,这时候还没执行y = ++i;  y的值是10  第二次输出   9 1   也很好理解x=9也是先用后减减   先输出9 再减减 x = 8  , y 的值是 y = ++i 而i的值是0 ++i就是1   这时候还没执行y = ++i  而i的值是1 ++i就是2;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-24 01:53:14 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币

答案是D因为:
一开始的时候x和y都是10,
然后就进入了for循环,
for循环里面的初始化语句是i=0,所以i就i=0;for循环里面的条件是x>8,也就是10>8,条件成立,所以就进入循环
然后循环里面说printf(“%d %d”,x--,y);
上面的意思就是说把x和y的值打印出来
所以就打印出来了10 10
之后因为后面有写着x--,所以x变成了9,(x--的意思就是说先把之前x的值用了它才会-1,这也就是为什么上面x的值是打印了10)
然后呢就继续循环,
i的初始值是0,而y=++i,所以y就变成了1,(首先i=0,然后y被赋值++i,意思就是y=1+i,也就是y=1+0,所以y=1)
(补充:x--和++i的区别就是;x--是先把之前x的值用了它才会-1,而++i是先把原本的值+1了,再拿来用)
接下来就在看for循环里面的条件是x>8,也就是9>8,条件成立,所以就进入循
然后循环里面说printf(“%d %d”,x--,y);
所以就打印出来了9 1
之后因为后面有写着x--,所以x变成了8,
然后又y=++i,所以y就变成了2,注意上面的i的值已经变1了,所以又在++i就是y=1+1
接下来就在看for循环里面的条件是x>8,也就是8>8,条件不成立,所以就结束循环
最后打印出来的结果就是10 10 9 1


这里补充一下for循环:
for(初始化语句; 循环条件; 自增或自减)
{
语句块;
}
每次执行for循环都是先执行初始化语句(每次进入for循环初始化语句只执行第一次)再看循环条件是否成立,条件成立就执行语句块(条件不成立就结束循环),执行完语句块后在执行自增或自减,接着再看循环条件是否成立,就一直这样重复下去,直到循环结束。
顺序:初始化语句——>循环条件——>语句块——>自增或自减——>循环条件——>语句块——>自增或自减——>循环条件——>直到循环条件不成立
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-24 01:56:10 | 显示全部楼层
leletatann 发表于 2022-6-24 01:53
答案是D因为:
一开始的时候x和y都是10,
然后就进入了for循环,

其实这道题你只要懂for循环的运作方式及--和++放在前后的结果,就知道是怎么样解出来的了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-24 08:13:12 | 显示全部楼层
++Y是先执行再自减
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-24 08:14:07 | 显示全部楼层

回帖奖励 +2 鱼币

这都不能中一个???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表