【发布时间】:2017-07-12 05:37:23
【问题描述】:
#include <stdio.h>
int main(void) {
int n,i;
int str[n];
scanf("%d\n",&n);
for(i=0;i<=n;i++)
{
scanf("%d",&str[i]);
printf("%d th %d\n",i,n);
}
return 0;
}
输入:
10
8 9 2 1 4 10 7 6 8 7
输出:
0 th 10
1 th 10
2 th 10
3 th 10
4 th 10
5 th 10
6 th 10
7 th 6
为什么输出是 6?
【问题讨论】:
-
C 是一种命令式编程语言,而不是声明性的。这大致意味着您的程序是逐行执行的。您不能声明一个在
n更改时会自动更新其大小的数组,您只能声明一个大小在n在声明点的数组。 -
问题 (i) 写得很好,(ii) 包含简短的可编译代码,(iii) 记录实际输出,(iv) 记录预期输出。两个老用户提交了很好的答案,这增加了问题的可信度。那么为什么要投反对票呢?
-
@Bathsheba 可能是因为这个问题表明他没有得到 C 的“基本概念”,因此这是一个糟糕的问题,他是一个坏人 ;)
-
@Bathsheba - 老实说,我认为不赞成票是由于帖子的第一版中的可怕格式。我修复了它,我希望人们现在重新评估他们的投票,但你知道......投票和运行在 SO 上很受欢迎。
标签: c loops variable-length-array