这是该怎么办
这个该根据哪个来呀 求助 第二个对的,试卷答案对的 for (A;B;C) {D
}
这样的结构可以看成是
for (A;B;) {
D
C
}
所以 y=++i 的首次执行在第一遍 printf() 之后 冲着渔币来的,我个人看法,手写的分析明显有问题,第一次输出 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; 答案是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循环初始化语句只执行第一次)再看循环条件是否成立,条件成立就执行语句块(条件不成立就结束循环),执行完语句块后在执行自增或自减,接着再看循环条件是否成立,就一直这样重复下去,直到循环结束。
顺序:初始化语句——>循环条件——>语句块——>自增或自减——>循环条件——>语句块——>自增或自减——>循环条件——>直到循环条件不成立 leletatann 发表于 2022-6-24 01:53
答案是D因为:
一开始的时候x和y都是10,
然后就进入了for循环,
其实这道题你只要懂for循环的运作方式及--和++放在前后的结果,就知道是怎么样解出来的了 ++Y是先执行再自减 这都不能中一个???
页:
[1]