一个排序方式用一个源文件,我不会打
比如用名称 编号 种类 购买时间 购买价格 所属实验室啥的进行编码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DEVICES 100
struct Device {
char name[30]; // 设备名称
int id; // 设备编号
char type[20]; // 设备种类
char buy_date[20]; // 购买时间
float buy_price; // 购买价格
int lab_no; // 所属实验室编号
};
int main() {
int n; // 设备数量
struct Device devices[MAX_DEVICES];
printf("请输入设备数量:");
scanf("%d", &n);
// 输入设备信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个设备的信息:\n", i+1);
printf("名称:");
scanf("%s", devices[i].name);
printf("编号:");
scanf("%d", &devices[i].id);
printf("种类:");
scanf("%s", devices[i].type);
printf("购买时间:");
scanf("%s", devices[i].buy_date);
printf("购买价格:");
scanf("%f", &devices[i].buy_price);
printf("所属实验室编号:");
scanf("%d", &devices[i].lab_no);
}
// 按购买时间排序
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (strcmp(devices[j].buy_date, devices[j+1].buy_date) > 0) {
// 交换两个设备的位置
struct Device temp = devices[j];
devices[j] = devices[j+1];
devices[j+1] = temp;
}
}
}
// 输出排序后的设备信息
printf("\n按购买时间排序后的设备信息:\n");
printf("名称\t编号\t种类\t购买时间\t购买价格\t所属实验室编号\n");
for (int i = 0; i < n; i++) {
printf("%s\t%d\t%s\t%s\t%.2f\t%d\n", devices[i].name, devices[i].id,
devices[i].type, devices[i].buy_date, devices[i].buy_price, devices[i].lab_no);
}
return 0;
}