c语言使用结构数组输入10本数的名称和单价,调用函数按照书名的字母顺序进行排序,在主函数输出排序结构
时间: 2024-03-02 12:52:40 浏览: 11
好的,我理解了你的问题。以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
// 定义书的结构体
struct Book {
char name[50];
float price;
};
// 交换两个结构体的值
void swap(struct Book *x, struct Book *y) {
struct Book temp = *x;
*x = *y;
*y = temp;
}
// 按照书名的字母顺序进行排序
void sortBooks(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() {
int i, n = 10;
struct Book books[n];
// 输入10本书的名称和单价
for (i = 0; i < n; i++) {
printf("请输入第%d本书的名称和单价:", i+1);
scanf("%s%f", books[i].name, &books[i].price);
}
// 按照书名的字母顺序进行排序
sortBooks(books, n);
// 输出排序后的结果
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%s\t%.2f\n", books[i].name, books[i].price);
}
return 0;
}
```
这段代码中,我们首先定义了一个结构体 `Book`,它包含了书名和单价两个成员。然后在 `main` 函数中,我们定义了一个结构体数组 `books`,并通过循环输入了每一本书的名称和单价。
接着,我们调用了 `sortBooks` 函数,实现了按照书名的字母顺序进行排序的功能。具体实现方式是通过两重循环遍历每一个结构体,如果当前结构体的书名比后面的结构体的书名要大,则交换它们的位置。
最后,我们在 `main` 函数中输出了排序后的结果,即按照书名字母顺序排列的书名和单价。