写一段 C语言 输入表格 并对表格数据排序 输出新表格
时间: 2024-05-11 15:17:02 浏览: 175
好的,让我来回答您的问题。
以下是一个简单的 C 代码,可以让用户输入一个表格,然后对表格中的数据进行排序,最后输出新的表格。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROWS 50
#define MAX_COLS 20
#define MAX_LEN 50
// 表格结构体
typedef struct {
char data[MAX_ROWS][MAX_COLS][MAX_LEN];
int rows;
int cols;
} Table;
// 比较函数,用于排序
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
Table table;
char buffer[MAX_LEN];
int i, j;
// 读取表格
printf("请输入表格数据(以逗号分隔,回车表示一行结束):\n");
for (i = 0; i < MAX_ROWS; i++) {
fgets(buffer, MAX_LEN, stdin);
if (buffer[0] == '\n') {
break;
}
char *token = strtok(buffer, ",");
j = 0;
while (token != NULL && j < MAX_COLS) {
strcpy(table.data[i][j], token);
token = strtok(NULL, ",");
j++;
}
}
table.rows = i;
table.cols = j;
// 对表格数据进行排序
for (i = 0; i < table.rows; i++) {
qsort(table.data[i], table.cols, sizeof(char[MAX_LEN]), compare);
}
// 输出新表格
printf("排序后的表格为:\n");
for (i = 0; i < table.rows; i++) {
for (j = 0; j < table.cols; j++) {
printf("%s\t", table.data[i][j]);
}
printf("\n");
}
return 0;
}
```
代码的主要思路是先定义一个表格结构体,然后读取用户输入的表格数据,并对表格数据进行排序,最后输出新的表格。
需要注意的是,这段代码中使用了 C 标准库函数 `qsort()` 对表格数据进行排序。`qsort()` 函数的第一个参数是要排序的数组,第二个参数是数组中元素的个数,第三个参数是每个元素的大小,第四个参数是一个比较函数,用于比较两个元素的大小。在本代码中,比较函数 `compare()` 用于比较两个字符串的大小。
阅读全文