关于C语言实现输入多行数字每行代表一个数组

如何实现输入多行数字,每行代表一个数组呢,每行输入用什么作为结束标志呢?
查了下这原来好像是python的题,但是用C语言该如何实现输入呢?🤔

img

用个换行符回车也行:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void *a, const void *b) {
    return *(int *)a - *(int *)b;
}

int main() {
    char input[1000];
    while (fgets(input, 1000, stdin) != NULL) {
        int a[100000] = {0};
        int j = 0;
        char *token = strtok(input, " \r\n");
        while (token != NULL) {
            a[j++] = atoi(token);
            token = strtok(NULL, " \r\n");
        }
        qsort(a, j, sizeof(a[0]), cmp);
        int p = 1;
        for (int m = 1; m < j; m++) {
            if (a[m] * 2 != a[m - 1] + a[m + 1]) {
                p = 0;
                break;
            }
        }
        if (p)
            printf("True\n");
        else
            printf("False\n");
    }
    return 0;
}


C语言的话也是可以的逻辑一样的就是用的方法可能不同 可以一起讨论一下

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7713079
  • 除此之外, 这篇博客: 数据结构之C语言的数组与python列表的比较中的 C语言中的数组特点 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (1)在C语言中,数组一旦被定义后,占用的内存空间就是固定的,容量就是不可改变的,既不能在任何位置插入元素,也不能在任何位置删除元素,只能读取和修改元素,我们将这样的数组称为静态数组。反过来说,如果数组在定义后可以改变容量,允许在任意位置插入或者删除元素,那么这样的数组称为动态数组。

    1、PHP、JavaScript 等解释型的脚本语言一般都支持动态数组,而 C、C++ 等编译型的语言一般不支持动态数组。

    2、总之,C语言中的数组是静态的,一旦定义后长度就不能改变了,不要尝试去插入或删除元素。

    (2)C语言中的数组不能存放不同类型的数据,这种特性是由计算机的存储机制与读取决定的。

    详细的具体实现内容如下:
    以32位系统为例,一个整数的存储大小为4字节,C语言定义一个数组a,数组中都是整数,则每个整数的存储占据计算机内存的4个字节。假如第一个整数的开始存储位置是100,则第二个整数的开始存储位置是104,以此类推。当读取数组a的第三个整数时,a[2],此时计算机计算存储位置是数组a开始的100位,100+4*2=108,读取108存储位置的4字节数据。同理,相同的浮点数也可以这样读取。

  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析:题目要求输入多行数字,每行代表一个数组,但没有说明具体的输入格式,需要我们自行设计。同时,需要考虑每行输入的结束标志应该是什么。

    解决方案:一个常用的方法是使用EOF作为每行输入的结束标志,即输入完一行之后按下Ctrl+Z(在Windows系统下)或Ctrl+D(在Linux系统下)。我们可以使用while和scanf语句来实现多次输入,并通过动态数组和二维数组的方式来存储这些数字。

    示例代码如下:

    ```c

    include

    include

    int main() { int row = 0, col = 0, i, j; int arr = NULL; // 动态数组的指针 while (scanf("%d", &col) != EOF) { // 每行输入以EOF结束 if (arr == NULL) { // 第一次输入时需要为动态数组分配空间 arr = (int ) malloc(sizeof(int )); } else { // 后续输入需要重新分配空间 arr = (int ) realloc(arr, sizeof(int ) * (row+1)); } arr[row] = (int *) malloc(sizeof(int) * col); // 为每一行分配空间 for (i = 0; i < col; i++) { scanf("%d", &arr[row][i]); // 读取每一个数字 } row++; // 行数自增 }

    // 输出二维