运用字符串排序,将数据呈现出按生产厂家排序的状态。其中药品信息有药品编号,药品名称,生产厂家,定价,生产日期,药品功效等
这个用结构体排序就可以了。
#include <stdio.h>
#include <string.h>
#define MAX_LEN 50 // 最大字符串长度
#define MAX_NUM 10 // 药品信息数量
// 药品信息结构体
typedef struct {
int id; // 药品编号
char name[MAX_LEN]; // 药品名称
char producer[MAX_LEN]; // 生产厂家
float price; // 定价
char date[MAX_LEN]; // 生产日期
char effect[MAX_LEN]; // 药品功效
} Drug;
// 交换两个药品信息的函数
void swap(Drug *a, Drug *b) {
Drug temp = *a;
*a = *b;
*b = temp;
}
// 冒泡排序的函数
void bubble_sort(Drug drugs[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
// 如果前一个药品的生产厂家大于后一个,则交换二者位置
if (strcmp(drugs[j].producer, drugs[j+1].producer) > 0) {
swap(&drugs[j], &drugs[j+1]);
}
}
}
}
int main() {
Drug drugs[MAX_NUM]; // 药品信息数组
char temp_str[MAX_LEN]; // 临时字符串数组,用于存储从键盘输入的字符串
int temp_int = 0; // 临时整数,用于存储从键盘输入的整数
float temp_float = 0.0; // 临时浮点数,用于存储从键盘输入的浮点数
// 从键盘输入药品信息
printf("请输入%d个药品信息,每个药品的信息依次为:药品编号 药品名称 生产厂家 定价 生产日期 药品功效\n", MAX_NUM);
for (int i = 0; i < MAX_NUM; i++) {
scanf("%d %s %s %f %s %s", &temp_int, temp_str, drugs[i].producer, &temp_float, temp_str, drugs[i].effect);
drugs[i].id = temp_int;
strcpy(drugs[i].name, temp_str);
drugs[i].price = temp_float;
}
// 按生产厂家排序
bubble_sort(drugs, MAX_NUM);
// 输出结果
printf("\n按生产厂家排序后结果如下:\n");
for (int i = 0; i < MAX_NUM; i++) {
printf("%d %s %s %.2f %s %s\n", drugs[i].id, drugs[i].name, drugs[i].producer, drugs[i].price, drugs[i].date, drugs[i].effect);
}
return 0;
}
教程点击进去将会有目录
《看聊天记录都学不会Python到游戏实战?太菜了吧》(1)加载Python神器!亮剑!
《看聊天记录都学不会C#?太菜了吧》(1)从今天开始我是一个游戏开发者
【小白进】大佬们学习为什么简单?小白该如何学习?学历不高如何找工作?副业很好赚?了解后少走弯路