将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文件格式而异,需要根据实际情况进行调整。
思路
我一直很颠倒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文件,将里面的数存入一个数组中。
对数组进行从高到低排序。
将排序后的数组输出为c语言中的数组格式。
具体代码实现如下:
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("};")
完整代码如下:
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
命令进行安装。