【问题标题】:Why is array not printing?为什么数组不打印?
【发布时间】:2022-01-25 09:11:37
【问题描述】:

我知道这很简单,但我无法弄清楚为什么一旦用户输入大小和整数后我的数组不打印。我终于能够让用户确定数组的大小并输入他们自己的整数,但现在程序马上返回。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    //Declare a size variable
    int size = 0;
    
    //Ask user how many numbers are in list:
    printf("How many integers?");
    scanf("%d", &size);
    
    printf("Please enter integers:");
    int arr[size];
    scanf("%d", arr);
    
    //Calculate length of array
    int length = sizeof(arr)/sizeof(arr[0]);
    
    //Test print to see if array is returning the right amount of integers.
    //printf("%d", length);
    
    //Print original array
    for(int i = 0; i > length; i++)
    {
        printf("%d", arr[i]);
    }
    
    printf("\n");
    return 0;
}

【问题讨论】:

  • i &gt; length -> i &lt; length。顺便说一句,你真的不需要length。只需使用size;
  • scanf("%d", arr); 也需要进入循环。与您为 printf 循环所做的类似。 for(int i = 0; i &lt; size; i++) scanf("%d", &amp;arr[i]);

标签: arrays c loops


【解决方案1】:
scanf("%d", arr);

因为arr 现在是指向arr[0] 的指针,所以scanf("%d", arr); 将只输入数组的第一个元素。

你必须把它放在for循环中:

for(int i = 0; i < size; ++i)
{
    scanf("%d", &arr[i]);
}

这个for 循环:

for(int i = 0; i > length; i++)
{
    printf("%d", arr[i]);
}

永远不会执行,因为length总是大于0,所以当i = 0i &gt; length就是false

你应该使用:

for(int i = 0; i < length; i++)
{
    printf("%d", arr[i]);
}

另外,length 只是size,所以你不需要length

所以你的代码应该是:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int size = 0;
    
    printf("How many integers?");
    scanf("%d", &size);
    
    printf("Please enter integers:");
    int arr[size];

    for(int i = 0; i < size; ++i)
    {
        scanf("%d", &arr[i]);
    }    

    for(int i = 0; i < size; i++)
    {
        printf("%d", arr[i]);
    }
    
    printf("\n");
    return 0;
}

【讨论】:

  • 我刚刚运行了代码,它打印出可能是内存编号而不是用户输入的整数。有什么想法吗?
  • @NickyReds 适合我。你的意见是什么?
  • 这是我的操作员错误。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 2020-11-09
  • 2017-05-11
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多