【发布时间】:2017-10-21 09:52:08
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main() {
unsigned int n0;
scanf("%d", &n0);
const unsigned int n = n0;
short unsigned int A[n];
short unsigned int d, x, y, k;
short int l, r;
int i, j;
for (i = 0; i < n; i++) {
scanf("%d", &A[i]);
}
scanf("%d", &d);
for (i = 1; i <= d; i++) {
scanf("%d %d", &x, &y);
}
return 0;
}
您好,我是 C 的新手,偶然发现了一个让我很惊讶的情况。在上面的代码中,我想要求用户输入一些数字d,然后输入d对点坐标。但令我惊讶的是,程序在输入第一对 (x,y) 后结束执行,无论首先输入大于 1 的 d 的哪个值。如果我在代码中为d 赋值(例如d = 5;),则不会发生这种情况。可能是什么原因?通过scanf 语句分配给变量的值是否有所不同并且不能在循环条件中使用?
【问题讨论】:
-
for (i=0;i<n;i++){ scanf("%d",&A[i]); }是什么意思? -
@xing,成功了,谢谢!但为什么实际上 %d 不起作用?
-
@KrzysztofSzewczyk,这是为了进一步的功能,我忘了在这里删除它。