如何制作,以便我可以在数组中输入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;
}
答案 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;
}