关于数组逆序输出的问题,如何解决?

题目描述:
读入一些整数,逆序输出到每一行,已知整数不超过100个.
题目问题:请问为什么一直输入,不能停止输入,怎么输出
代码:
#include
#define maxn 105
int a[maxn];
int main() {

int  x,n = 0;
while(scanf("%d",&x)==1)
    a[n++]=x;
for(int i=n-1; i>=1; i--)
    printf("%d ",a[i]);
printf("%d\n",a[0]);
return 0;

}

望采纳

  • 你的代码 scanf 函数会不断读入整数,并将读入的数字存储到数组 a 中,直到输入的数字不是整数时才会停止。但是,代码并没有任何条件限制输入的数字个数,所以会导致程序一直进行输入操作,而无法停止输入。
  • 如果你希望在输入一定数量的数字后停止输入,可以在循环中加入一个限制条件,例如:
while(scanf("%d",&x)==1 && n < 100)
    a[n++]=x;
  • 上述代码当输入的数字个数达到 100 个时,就会停止输入。

另外,在输出数组 a 中的数字时,你需要注意最后一行末尾不要输出空格,因此在输出最后一个数字 a[0] 时,要使用 printf("%d\n",a[0]) 的形式,而不是 printf("%d ",a[0])。

要加上限制条件!

示例1:

img

#include <stdio.h>
#define maxn 105
int a[maxn];
int main(void)
{
    int n = 0;
    while (scanf("%d", &a[n++]) == 1 && n < 10)
        ;

    for (int i = --n; i >= 0; i--)
        printf("%d ", a[i]);

    return 0;
}





示例2:

img

img

#include <stdio.h>
#define maxn 105

int a[maxn];

int main(void)
{
    int n = 0;
    //空格键分隔输入,按回车键结束输入,最大不超过100个数。
    while (scanf("%d", &a[n++]) == 1 && getchar() != '\n' && n < 100)
        ;

    for (int i = --n; i >= 0; i--)
        printf("%d\n", a[i]);

    return 0;
}


ctrl+z结束输入

img