2017-05-26 48 views
-5

非常多。我需要向用戶詢問元素的數量,然後詢問他們想要的整數,最後打印出所有整數。C我需要使用malloc和一個動態分配的數組,但是我需要打印用戶輸入

這是我到目前爲止的代碼:

int main(void) 
{ 
    int user_input = 0, elements = 0; 
    printf("How many int elements will you enter?\n"); 
    scanf("%d", &elements); 

    int* dynamic_array = (int *)malloc(sizeof(double)* elements); 

    for (int i = 0; i < elements; i++) 
    { 
    printf("Element %d?\n", i + 1); 
    scanf("%d", &dynamic_array[i], i + 1); 
    } 

    for (int printf_number = 1; printf_number <= elements; printf_number++) 
    { 
    printf("Element %d: %d\n", printf_number, (dynamic_array[user_input])); 
    } 

    free(dynamic_array); 
    dynamic_array = 0; 
    return 0; 
} 
+0

請在這裏發表的代碼。 – haltode

+1

你的代碼有什麼問題?你能否詳細說明一下?請花一些時間[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –

+0

它說代碼太長,錯誤是隻有一個元素打印,而不是所有的元素,我不知道如何打印所有的元素。 –

回答

0

問題1:你是分配sizeof(double)存儲INT
問題2:你是不是遍歷數組打印數字

int main(void) 
{ 
    int user_input = 0, elements = 0; 
    printf("How many int elements will you enter?\n"); 
    scanf("%d", &elements); 

    int* dynamic_array = (int *)malloc(sizeof(int)* elements); 
    if(dynamic_array == NULL) { 
    perror(" Out of memory "); 
    return 0; 
    } 

    for (int i = 0; i < elements; i++) 
    { 
    printf("Element %d?\n", i + 1); 
    scanf("%d", &dynamic_array[i]); 
    } 

    for (int printf_number = 0; printf_number < elements; printf_number++) 
    { 
    printf("Element %d: %d\n", printf_number+1, dynamic_array[printf_number]); 
    } 

    free(dynamic_array); 
    dynamic_array = 0; 
    return 0; 
} 
+0

此代碼不起作用。對不起,它實際上只是犯了一個錯誤 –

1
for (int printf_number = 1; printf_number <= elements; printf_number++) 
{ 
    printf("Element %d: %d\n", printf_number, (dynamic_array[user_input])); 
} 

您的索引printf_number應該從零開始,條件必須是printf_number < elements。您必須使用printf_number來索引陣列,而不是user_input。請注意0​​未初始化。

爲什麼在只讀取int時分配一個數組與sizeof(double)

+0

等一秒鐘 –

+0

它不應該是一個雙。在我的屏幕上,我沒有雙重 –

相關問題