c - 读取整数数组并将其打印出来

标签 c

我正在自学 C 并做了一些练习。
以下代码读取 来自用户的整数数组。当用户输入“0”或数组已填满时,将打印出整数。现在的问题是输出。
当我输入 3 位数字后输入“0”时,例如1 2 3 输出如下:1 2 3 -858993460 -858993460。我不确定为什么我得到值“-858993460”,但我已经找到了避免它的解决方案。现在我的问题是这些值的含义是什么,以及是否有比我的解决方案更智能的解决方案(如下评论所示)。

#include <stdio.h>
#include <string.h>
#define arraylength 5


int main ()

{
    //const int arraylength = 21; //alternative possibility to declare a constant
    int input [arraylength] ;
    int temp = 0;
    //int imax = 0;

    printf("Please type in a your digits: ");
    for (int i = 0; i < arraylength; i++)
    {
        scanf("%d", &temp);
        if ( temp !=0)
        {
            input[i]= temp;
            //imax= i;
        }
        else
        {
            //imax= i;
            break;
        }

        if (i < arraylength-1)
             printf("Next: ");

    }

    for (int i =0; i < arraylength; i++ )   // switch arraylength with imax
    {
            printf("%d", input[i]);
    }



    getchar();
    getchar();
    getchar();

}

最佳答案

发生这种情况是因为无论何时输入0,您都会打印所有5数字:

for (int i =0; i < arraylength; i++ )

要解决此问题,您可以通过运行从 0i 的循环,仅打印用户在输入 0 之前输入的数字:

for (int j =0; j < i; j++ )

关于c - 读取整数数组并将其打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4537113/

相关文章:

使用 poll() 时正确处理 Ctrl-C

c - 为什么我不能填充并返回我用 rb_ary_new 创建的数组?

c++ - 什么是POSIX,有什么其他的接口(interface)标准可以替代它?

c - 如何在考虑性能的情况下最好地用C编写体素引擎

关于如何为 lwip 堆栈中声明的一个全局数组计算大小的困惑

c - 什么是 "column independent code"?

C 函数返回数组和指针而不进行强制转换

c - 为什么我们通常忽略SIGCHLD

c - 如何在 Posix 上使用 C 创建具有正确权限的目录

c - 指向函数的指针如何影响排序?