如何打印数组中的元素数量?

时间:2014-11-18 06:41:06

标签: c arrays size

如何制作,以便我可以在数组中输入10个或更少的元素,然后打印数字或元素?

#include <stdio.h>

#define MAX_SIZE 10

int main()
{
    int a[MAX_SIZE], i;
    printf("Enter up to %d different numbers seperated by spaces: \n", MAX_SIZE);
    for(i=0; i < MAX_SIZE; i++)
        scanf("%d", &a[i]);


    printf("Length: %lu\n", sizeof(MAX_SIZE));

    return 0;
}

7 个答案:

答案 0 :(得分:1)

请在存储数据时关闭for循环,并在打印前添加另一个循环。

答案 1 :(得分:1)

检查此代码。

此代码采用最多 MAX_SIZE [10此处]整数输入并打印元素数量。您可以使用 CTRL + D [scanf()]停止EOF

恕我直言,这是结束输入的合理方法,因为如果您想根据某个特定数字结束输入,则不能将该数字存储在数组中。

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

#define MAX_SIZE 10

int main()
{
    int count = 0;
    int arr[MAX_SIZE] = {0, };       //initialize the array

    printf("Enter the numbers one by one ==> \n");

    for (count = 0; count < MAX_SIZE; count ++)
    {
        if (scanf("%d", &arr[count]) == EOF)
            break;
    }

    printf("Number of elements into the array %d\n", count);


    return 0;
}

答案 2 :(得分:0)

试试这个

int main()
{
    int a[MAX_SIZE], i,count=0;
    printf("Enter up to %d different numbers seperated by spaces: \n", MAX_SIZE);
    for(i=0; i < MAX_SIZE; i++)
    {
        scanf("%d", &a[i]);
        if(a[i] == -1)          // Use any number to break the loop
            break;              // Break the loop
        count++;                // Count number of elements
    }

    printf("Length: %d", count );  //Print number of elements

    return 0;
}

答案 3 :(得分:0)

通过使用任何计数器变量,您可以计算已扫描元素的数量,并使用该变量也可以打印..

int main()
{
int a[MAX_SIZE], i,count=0;
printf("Enter up to %d different numbers seperated by spaces: \n", MAX_SIZE);
for(i=0; i < MAX_SIZE; i++)
{
    scanf("%d", &a[i]);
    if(a[i] == 0)           // Use any number for breaking  loop
        break;              // break the loop
    count++;                // for Counting number of elements
}

printf("number of scanned elements: %d", count );  //Print number of elements

for(i=0;i<count;i++) // for printing upto scanned numbers
printf("%d\n",a[i]);

return 0;
}

我们无法找到一个阵列中的扫描元素。因为数组可以保存垃圾值。因此,保留任何计数器变量,用于计算扫描时扫描的元素数量,而不是实际的数组边界。

答案 4 :(得分:0)

您的尺寸将始终MAX_SIZE * sizeof(int);(在您的情况下为10 * 4-bytes per int)。将printf替换为:

进行测试
printf("Length: %d\nsize  : MAX_size * sizeof (int): %lu\n", MAX_SIZE, MAX_SIZE * sizeof (int));

<强>输出:

Length: 10
size  : MAX_SIZE * sizeof (int): 40

注意:整数的存储大小可能来自硬件到硬件,因此请始终在计算中使用sizeof(int)


我道歉,我知道,你想要一种输入少于10的方法并仍然打印数组:

#include <stdio.h>

#define MAX_SIZE 10

int main()
{
    int a[MAX_SIZE] = {0};
    int i = 0;;
    int cnt = 0;

    printf("Enter up to %d different numbers seperated by spaces (ctrl+d when done): \n", MAX_SIZE);

    while (i < MAX_SIZE)
    {
        if (scanf("%d%*c", &a[i]) < 1)
            break;
        i++;
    }

    cnt = i;
    i = 0;

    printf ("\nPrinting elements using while loop:\n\n");
    while (a[i])
    {
        printf ("a[%d] = %d\n", i, a[i]);
        i++;
    }

    /* or */
    printf ("\nPrinting elements using for loop:\n\n");
    for (i = 0; i < cnt; i++)
        printf ("a[%d] = %d\n", i, a[i]);


    return 0;
}

<强>输出:

$ ./bin/arrcnt
Enter up to 10 different numbers seperated by spaces (ctrl+d when done):
1 2 3 4 5

Printing elements using while loop:

a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5

Printing elements using for loop:

a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5

您可以保留count或将数组初始化为零,也可以使用while循环检查条目。 (注意:输入的&#39; 0&#39;不适用于while方法,因此它仅适用于值&gt; 0)同时注意:使用格式化scanf中的字符串以使用尾随newline。这可以在以后节省您的麻烦。

答案 5 :(得分:0)

只需将这些内容添加到您的代码

即可
for (i = 0; i< MAX_SIZE; i++)
{
    printf("%d",a[i]);
}

还在循环中添加大括号

for (i = 0; i<MAX_SIZE; i++)
{
    scanf("%d", &a[i]);
}

答案 6 :(得分:0)

您可以按照以下步骤操作,输入0作为您想要停止输入更多元素的输入。

#include <stdio.h>

#define MAX_SIZE 10

int main()
{
    int a[MAX_SIZE], i;
    int count = 0;

    printf("Enter up to %d different numbers seperated by spaces: \n", MAX_SIZE);
    for(i=0; i < MAX_SIZE; i++)
    {  
        scanf("%d", &a[i]);

        if(!a[i])
            break;

        count++;
    }


    printf("Length: %lu\n", count);

    return 0;
}