我正在自学 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++ )
要解决此问题,您可以通过运行从 0
到 i
的循环,仅打印用户在输入 0
之前输入的数字:
for (int j =0; j < i; j++ )
关于c - 读取整数数组并将其打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4537113/