- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的计算机科学期末学习指南中的另一个问题(我发布了另一个问题,去看看!)。我不确定如何在没有计算机的情况下获取 x[2] 或 x[5] 的值(考试期间没有使用计算机)。有人可以解释一下如何通过阅读代码来计算出这些值吗?谢谢!
int x[SIZE] = {5, 3, 4, 5, 2, 4, 3, 5, 1, 2};
int i;
int j;
for(i = 0; i < SIZE / 2; i++)
{
for(j = x[i]; j < SIZE; j++)
{
x[j]++;
}
}
printf("x[2] = %d\n", x[2]);
printf("x[5] = %d\n", x[5]);
最佳答案
首先,数组是
int x[SIZE] = {5, 3, 4, 5, 2, 4, 3, 5, 1, 2};
并且SIZE
是10(或者我假设它是10)。
外部 for 循环是
for(i = 0; i < SIZE / 2; i++)
因此它从 i=0
迭代到 i=4
。
现在,让我们看看内部 for 循环
for(j = x[i]; j < SIZE; j++)
{
x[j]++;
}
为j
分配的值为x[i]
。
首先,在 i=0
时,j
的值为 x[0]
,即 5
>。因此,内部 for 循环从 j=5
执行到 j=9
。在循环中,它执行x[j]++
,即x[5]++
,即4++
,给出5
。现在,在内部循环的下一次迭代中,j=6
和 x[6]++
,因此 3++
,因此给出4
。因此,数组中从 x[5]
到 x[9]
的所有值都会递增一次。
所以,数组现在变成了
5 3 4 5 2 5 4 6 2 3
如果您查看此模式,您会注意到,要更改 x[2]
的值,j
必须变为 2
因此,x[i]
必须是 2
,但是查看循环的进行方式,您可以看到 x[0 ]
、x[1]
和 x[2]
不会改变。因此,x[2]
将保留为 4
。
现在,继续外循环的下一次迭代,i=1
,因此 j=x[1]
,因此从 j=3
到 j=9
,增加 x[j]
的值,因此数组变为
5 3 4 6 3 6 5 7 3 4
对于 i=2
处的下一次迭代,内循环从 j=4
迭代到 j=9
,因此数组变为
5 3 4 6 4 7 6 8 4 5
对于 i=3
处的下一次迭代,内循环从 j=6
迭代到 j=9
,因此数组变成
5 3 4 6 4 7 7 9 5 6
现在,对于外部循环的最后一次迭代,在 i=4
处,内部循环从 j=4
迭代到 j=9
,数组就变成了
5 3 4 6 5 8 8 10 6 7
因此,程序的输出将是
x[2] = 4
x[5] = 8
这是如何在没有编译器的情况下解释此类程序。
关于有人可以帮我解释一下这段C代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045419/
嗨,我是第一次玩 Pig,我很好奇如何处理将一个字段拆分成多个其他字段。 我有一个包,A,如下图: grunt> Dump A; (text, text, Mon Mar 07 12:00:00 CD
如何添加架构中未定义的固定字段(例如日期或月份)?我运行了以下 pig 脚本以将固定日期添加到我的结果表中,并收到以下错误消息:Invalid field projection。方案中不存在投影字段
我是一名优秀的程序员,十分优秀!