2017-05-26 49 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

它不应该是一个双。在我的屏幕上,我没有双重 –

相关问题