给定一个整数数组,我试图打印数组,并将所有零移动到数组的左侧。剩余数字的顺序并不重要。我一直得到奇怪的输出,如" { - 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)
答案 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];
}
如果您使用此代码,则不需要malloc
,realloc
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");