簡體   English   中英

C - 將用戶輸入掃描到要排序的數組中

[英]C - scan user inputs into an array to be sorted

原諒我,我是C編程新秀。 我需要做的是從標准輸入中獲取值並將它們存儲在一個數組中,該數組稍后將在線上進行排序。

用戶輸入的方法是一次一行一個號碼(即輸入一個號碼,按回車鍵,輸入號碼,按回車鍵等)。 當用戶輸入數字時,他們按ENTER而不提供數字。

我接受值並存儲它們的代碼如下。 您可能會立即看到問題,但我沒有看到它。

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];

    printf("Enter a list of integers\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
        if (scanf("%d", &n) == -1)
            break;
        else
            scanf("%d", &n);
            array[i] = n;
    }

    printf("The array is %d", *array);
    return 0;
}

下圖是程序應該如何運行。 我已經有了排序代碼,它看起來效果很好。 非常感謝您的幫助。

在此輸入圖像描述

你有它做你想要的,你只需要一些調整。 首先,輸入不返回-1,為了保持簡單,你需要輸入ctrl+d來停止輸入。 在最后輸入之后,只需按ctrl+d 看一看:

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];

    printf("Enter a list of integers [ctrl+d] to end\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
        if (scanf("%d", &n) == -1)
            break;
        array[i] = n;
    }
    puts ("");

    int z;
    for (z = 0; z < i; z++)
        printf("The array is %d\n", array[z]);

    return 0;
}

輸出:

Enter a list of integers [ctrl+d] to end
> 1
> 2
> 3
> 4
> 5
>
The array is 1
The array is 2
The array is 3
The array is 4
The array is 5

這是在enter上退出的更新的先前答案。

#include <stdio.h>
#define MAX 100

int main()
{
    int n, i, array[MAX];
    char num[MAX];
    int res;

    printf("Enter a list of integers [ctrl+d] to end\n");

    for(i = 0; i <= MAX; ++i){
        printf("> ");
    fgets(num, sizeof(num), stdin);
    res = sscanf(num, "%d", &n);
    if(res != 1)
     break;
    n = atoi(num);
        array[i] = n;
    }
    puts ("");

    int z;
    for (z = 0; z < i; z++)
        printf("The array is %d\n", array[z]);

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM