C:数组输出

时间:2016-02-08 23:38:55

标签: c arrays

给定一个整数数组,我试图打印数组,并将所有零移动到数组的左侧。剩余数字的顺序并不重要。我一直得到奇怪的输出,如" { - 1073741824,1049472,1,49,63,1055984,1}"对于在main中硬编码的数组。

  training_data_list = df_array[:i] + df_array[i+1:]
  mDF=pd.DataFrame()
  for df in training_data_list:
        mDF.appened(df)

2 个答案:

答案 0 :(得分:2)

您可以替换:

int *array = malloc(0);
for (int j = 0; j < count; ++j)
{
    array = realloc(array, (j + 1) * sizeof(int));
    array[j] = 0;
}

有类似的东西:

int array[10]; //malloc(0);
int j = 0;
for (j = 0; j < count; ++j)
{
    array[j] = 0;
}

for (j = 0; j < n; ++j)
{
    if(a[j]!=0)
        array[count++] = a[j];
}

如果您使用此代码,则不需要mallocrealloc free

答案 1 :(得分:0)

代码看起来过于复杂 - 您不需要使用%s传递字符串,您可以直接打印它。所以

printf("%s", "{");

可以是:

print("{");

完成第一步后,您可以打印出已找到的零个数,然后单步执行并打印所有非零整数。有点像这样的东西

int a[10] = {3, 0, 1, 4, 0, 0, 7, 20, 1, 5};
int n = 10;
int count = 0;
for (int i = 0; i < n; ++i)
{
    if (a[i] == 0)
    {
        ++count;
    }
}
printf("{");
for(int i=0; i < count; i++)
{
     printf("0,");
}
for(int i=0; i < n; i++)
{
     if (a[i]!=0) {
         printf("%d", a[i]);
         if (i < n-1) {
             printf(",");
         }
     }
}
printf("}\n");