2011-12-11 180 views
0

所以我有3个int类型数组,A,B和C.程序检查数组A的元素为素数,如果数字是数组中的素数,则将其复制到数组B,如果不是数组C,阵列。如何在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]); 
} 

我怎样才能使打印阵列空点?目前,当C [i] = A [i]时,它在数组C [i]点中打印一些随机数,当C [i] = A [i]时,在数组B [i]中打印一些随机数。

回答

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; 
} 
+0

那个占位符是什么,表示数组未填充?我到处搜索过,找不到任何可以做到的事情:S – Andr3az

+0

@ user1092141:占位符表示您决定的数值永远不会成为数组中的有效值(例如-999),然后在打印到知道何时打印空白。 –

1

要么初始化数组BC开始填补他们(与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 
} 

如果没有恒定的,你可以作为“看守”使用,可以考虑使用两个阵列,正确初始化,存储无论在BC RESP该索引。是否设置。

您需要在显示代码中使用更多逻辑,以便为“未设置”值打印空白。

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); 
}