2010-12-14 50 views
0

我已經編寫了代碼來生成一個範圍內的素數。然後試圖將產生質數存儲在數組中:將內容存儲在數組中並顯示

if(prime) 
    printf("\n%d", n); 
prime_array[k]=n; 
k++; 

然後試圖打印數組的內容:

for(z=0;z<6;z++) 
    printf("%d\n",prime_array[z]); 

,我得到的是不正確的輸出。哪裏不對?

+0

向我們顯示完整的代碼。 – codaddict 2010-12-14 11:56:12

+0

你看到了什麼?你期望看到什麼? – 2010-12-14 11:58:22

+7

你的'if'隻影響'printf'。我不確定,但可能你應該把'printf; prime_array [K] = N;在{{}'之間的一個塊中使用k ++'。 – khachik 2010-12-14 12:45:36

回答

0

在您發佈的代碼中,您嘗試在似乎是char的某個東西(prime_array [k])中投射一個整數(n),因爲'n'和'prime_array [ k]'不具有相同的類型,也因爲不能像這樣在數組中投射整數。

如果你想在數組中放置一個整數,你可以使用stdio.h中的函數sprintf。 此功能的人:http://man.cx/sprintf%283%29

Anhuin。

+2

什麼!?對不起,但那根本不對!首先,沒有理由認爲'prime_array [k]'是'char'或者'n'是一個整數。其次,即使是這樣,如果整數在「char」表示的範圍內(-128到127),您也可以將'int'強制轉換爲'char'。第三,你可以通過簡單賦值將一個整數放入一個整數數組(或一個char數組)中。如果你想要一個數字的字符串表示,可以使用'sprintf'。 – filipe 2010-12-14 14:28:40

+0

對不起,我沒有正確理解這個問題。我雖然他想在char數組中輸入一個整數。 是的,我同意你的觀點,你可以在字符中投一個整數,但你只需保留第一個字節(或最後一個取決於endian模式)。 – Anhuin 2010-12-14 16:41:34

2

假設一切都是正確的,你應該考慮以下內容:printf進入if塊,但其他一切都沒有。它可能應該是:

if(prime) { 
    printf("\n%d", n); 
    prime_array[k]=n; 
    k++; 
} 
相關問題