c语言使用结构数组输入10本数的名称和单价,调用函数按照书名的字母顺序进行排序,在主函数输出排序结构
时间: 2024-03-02 11:51:22 浏览: 72
好的,可以参考下面的代码实现:
```c
#include <stdio.h>
#include <string.h>
#define N 10 // 数组长度
// 书本结构体
struct Book {
char name[20]; // 书名
float price; // 单价
};
// 交换两个结构体的值
void swap(struct Book *a, struct Book *b) {
struct Book temp = *a;
*a = *b;
*b = temp;
}
// 按照书名的字母顺序进行排序
void sort(struct Book books[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(books[i].name, books[j].name) > 0) {
swap(&books[i], &books[j]);
}
}
}
}
int main() {
struct Book books[N]; // 书本数组
int i;
// 输入书本信息
printf("请输入%d本书的名称和单价:\n", N);
for (i = 0; i < N; i++) {
printf("第%d本书:\n", i + 1);
scanf("%s%f", books[i].name, &books[i].price);
}
// 按照书名的字母顺序进行排序
sort(books, N);
// 输出排序结果
printf("按照书名的字母顺序进行排序后的结果为:\n");
for (i = 0; i < N; i++) {
printf("%s\t%.2f\n", books[i].name, books[i].price);
}
return 0;
}
```
在主函数中,首先声明一个结构体数组 `books`,然后输入每本书的名称和单价,接着调用 `sort` 函数对 `books` 数组进行排序,最后输出排序后的结果。在 `sort` 函数中使用了冒泡排序算法,通过 `strcmp` 函数比较两个字符串的大小关系,从而实现按照书名的字母顺序进行排序。
阅读全文