所以我有3个int类型数组,A,B和C.程序检查数组A元素是否为素数,如果数字是数组中的素数,它会被复制到数组B,如果不是数组C.后来它打印所有三个阵列。
这是有问题的代码:
if(onalg)
{
B[i]=A[i];
}
else
{
C[i]=A[i];
}
然后使用qsort对数组B和C进行排序(完成此操作)。 毕竟它必须打印所有这样的数组:
for(i=0;i<n;i++)
{
printf("%d %d %d\n", A[i],B[i], C[i]);
}
如何在阵列中打印空白点?目前,当B [i] = A [i]时,它会在数组C [i]中打印一些随机数;当C [i] = A [i]时,它会在数组B [i]中打印。
答案 0 :(得分:1)
你不能。
您需要为数组成员分配一些值,表明它未初始化,然后检查该值并在打印时将其视为空白。
if(onalg)
{
B[i]=A[i];
C[i]= //Some place holder value indicating unfilled;
}
else
{
C[i]=A[i];
B[i]= //Some place holder value indicating unfilled;
}
答案 1 :(得分:1)
在开始填充数组之前初始化数组B
和C
(例如,使用memset
),或者在每个条件中设置它们。
if(onalg)
{
B[i]=A[i];
C[i]=-1; // or some other constant
}
else
{
C[i]=A[i];
B[i]=-1; // or some other constant
}
如果你没有常量可以用作“守卫”,可以考虑使用另外两个正确初始化的数组来存储B
和C
中的索引。是否设定。
您需要在显示代码中使用更多逻辑,以便为“未设置”值打印空白。
答案 2 :(得分:0)
CString strA, strB, strC;
for(i=0;i<n;i++)
{
if (A.GetLength() > i+1)
strA = Format(%d, A[I]);
else
strA = "";
if (B.GetLength() > i+1)
strB = Format(%d, B[I]);
else
strB = "";
if (C.GetLength() > i+1)
strC = Format(%d, C[I]);
else
strC = "";
printf("%s %s %s\n", strA, strB, strC);
}