将Excel文件中的一堆数转化为c语言中的数组,再将数组按高到低顺序输出

将Excel文件中的一堆数转化为c语言中的数组,再将数组按高到低顺序输出

引入ChatGPT部分内容参考:

#include <stdio.h>
#include <stdlib.h>
#include "xlsxwriter.h"

#define ROWS 10
#define COLS 10

int main() {
    // 打开Excel文件
    lxw_workbook *workbook = workbook_new("data.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

    // 读取Excel文件中的数据
    int data[ROWS][COLS];
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            lxw_cell *cell = worksheet_find_cell(worksheet, i, j);
            if (cell) {
                data[i][j] = atoi(cell->value);
            } else {
                data[i][j] = 0;
            }
        }
    }

    // 将数据按高到低顺序排序
    for (int i = 0; i < ROWS; i++) {
        for (int j = i + 1; j < ROWS; j++) {
            if (data[i][0] < data[j][0]) {
                int temp[COLS];
                for (int k = 0; k < COLS; k++) {
                    temp[k] = data[i][k];
                    data[i][k] = data[j][k];
                    data[j][k] = temp[k];
                }
            }
        }
    }

    // 输出排序后的数组
    printf("int array[%d][%d] = {\n", ROWS, COLS);
    for (int i = 0; i < ROWS; i++) {
        printf("{");
        for (int j = 0; j < COLS; j++) {
            printf("%d", data[i][j]);
            if (j < COLS - 1) {
                printf(", ");
            }
        }
        printf("}");
        if (i < ROWS - 1) {
            printf(",");
        }
        printf("\n");
    }
    printf("};\n");

    // 关闭Excel文件
    workbook_close(workbook);

    return 0;
}

这个代码会将Excel文件中的数据读取到一个二维数组中,然后按照第一列的值从高到低排序,最后将排序后的数组输出为C语言中的数组格式。你可以根据需要修改ROWS和COLS的值,以适应你的Excel文件。

来自chatgpt的回答

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

#define ROWS 10 // 行数
#define COLS 5 // 列数

int main() {
    double data[ROWS][COLS]; // 定义数组
    int i, j, k;
    
    // 读取Excel文件数据
    FILE *fp = fopen("data.xlsx", "r");
    if (fp == NULL) {
        printf("Open file error!");
        exit(1);
    }
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLS; j++) {
            fscanf(fp, "%lf", &data[i][j]);
        }
    }
    fclose(fp);
    
    // 输出数组
    printf("double array[%d][%d] = {\n", ROWS, COLS);
    for (i = 0; i < ROWS; i++) {
        printf("    {");
        for (j = 0; j < COLS; j++) {
            printf("%lf%s", data[i][j], (j == COLS - 1 ? "" : ", "));
        }
        printf("},\n");
    }
    printf("};\n\n");

    // 按高到低顺序输出数组
    printf("double sorted_array[%d] = {", ROWS * COLS);
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLS; j++) {
            printf("%lf%s", data[i][j], (i == ROWS - 1 && j == COLS - 1 ? "" : ", "));
        }
    }
    printf("};\n");
    
    // 排序
    for (i = 0; i < ROWS * COLS - 1; i++) {
        for (j = i + 1; j < ROWS * COLS; j++) {
            if (sorted_array[i] < sorted_array[j]) {
                double temp = sorted_array[i];
                sorted_array[i] = sorted_array[j];
                sorted_array[j] = temp;
            }
        }
    }
    
    // 输出排序后的数组
    printf("\ndouble sorted_array[%d] = {", ROWS * COLS);
    for (k = 0; k < ROWS * COLS; k++) {
        printf("%lf%s", sorted_array[k], (k == ROWS * COLS - 1 ? "" : ", "));
    }
    printf("};\n");
    
    return 0;
}

上述代码中,我们首先定义了一个 ROWS 行、COLS 列的二维数组 data,用于存储Excel文件中的数据。然后,我们通过读取文件的方式将数据读入到数组中。

接下来,我们使用 printf() 函数输出数组,并按照高到低的顺序进行排序。最后,我们再次使用 printf() 函数输出排序后的数组。

需要注意的是,读取Excel文件数据的方式可能因不同的Excel文件格式而异,需要根据实际情况进行调整。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/769974
  • 这篇博客你也可以参考下:C语言中将需要输出的数据导入Excel中
  • 除此之外, 这篇博客: 链表,字符串题,模拟与高精度中的 ①171.转化为26进制,excel表中的字母转数字 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述

    思路
    我一直很颠倒ANSI码的使用,这里使用单引号作差可以得到数字差值,加一即表示 excel中字母的大小 ,再乘以26的位置次方可得到数字值

    int main()
    {
    	long long n=0,t=1,i=0;
    	char s[26] = {0};
    	printf("你将转化的字母是:\n");
    	scanf("%s",s);
    	int m=strlen(s);
    	for(i=m-1;i>=0;i--)
    	{
    	n += t*(s[i]-'A'+1);		//我一直很颠倒ANSI码的使用,这里使用单引号作差可以得到数字差值,加一即表示 excel中字母的大小 
    	t*=26; 						//①t=pow(26,0) ②t=pow(26,1)... 
    	}
    	printf("转化成数字是:%d\n",n);
    	return 0;
    }
    
  • 您还可以看一下 吴开斌老师的Excel公式与函数全套系列课程 数组公式 财务函数 查找统计函数课程中的 期与时间的本质以及时间日期之间换算计算小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    这个问题有点简单,具体思路如下:

    1. 读取Excel文件,将里面的数存入一个数组中。

    2. 对数组进行从高到低排序。

    3. 将排序后的数组输出为c语言中的数组格式。

    具体代码实现如下:

    1. 读取Excel文件中的数。
    import pandas as pd
    
    data = pd.read_excel('file.xlsx', sheet_name='Sheet1') 
    array = data.values      # 将 DF 转化成 numpy 数组 
    array = array.flatten()  # 将数组展成一个列表 
    
    1. 对数组进行从高到低排序。
    array.sort(reverse=True)
    
    1. 将排序后的数组输出为c语言中的数组格式。
    print("int arr[] = {", end="")
    for i, num in enumerate(array):
        if i != len(array)-1:  # 如果不是最后一个数,加个逗号
            print("%d, " % num, end="")
        else:
            print("%d" % num, end="") # 是最后一个数的话,不加逗号
    print("};")
    

    完整代码如下:

    import pandas as pd
    
    data = pd.read_excel('file.xlsx', sheet_name='Sheet1') 
    array = data.values      # 将 DF 转化成 numpy 数组
    array = array.flatten()  # 将数组展成一个列表
    
    array.sort(reverse=True)
    print("int arr[] = {", end="")
    for i, num in enumerate(array):
        if i != len(array)-1:  # 如果不是最后一个数,加个逗号
            print("%d, " % num, end="")
        else:
            print("%d" % num, end="")  # 是最后一个数的话,不加逗号
    print("};")
    

    其中,需要安装 pandas 库来读取 Excel 文件,可以通过 pip install pandas 命令进行安装。