可以用EOF来判断,自己测试的时候用ctrl+z结束输入
下面是一个示范:
#include<stdio.h>
int main() {
int i = 0;
int a[1001];
while (scanf("%d", &a[i]) != EOF) {
++i;
}
for (int j = 0; j < i; ++j) {
printf("%d ", a[j]);
}
}
在这个程序中,数组 a 的大小是固定的,为 1000。因此,在循环中使用的 i 变量的有效范围是 0 到 999。若要让循环条件根据数组的大小动态调整,可以使用数组的 length 属性。例如,可以把上述代码改写为:
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
// 在这里处理数组元素
}
这样,就可以在程序运行时动态调整数组的大小,并且循环条件也会相应地调整。
但是,需要注意的是,使用 sizeof 运算符获取数组大小的方法仅适用于数组,对于指针,它只能返回指针类型的大小。因此,如果数组是用指针动态分配的,那么就不能使用这种方法。此时,可以使用另一种方法,即在分配数组时记录数组大小,然后使用一个变量来记录数组的大小。
int* a = new int[1000];
int n = 1000;
for(int i = 0; i < n; i++) {
// 在这里处理数组元素
}
这样,就可以根据需要动态调整数组的大小,并且循环条件也会相应地调整。