c语言有如下结构体: struct book { char strName[100]; // 图书名称 int nQuantity; // 图书销量(册数) float fPrice; // 图书单价 double fSales; // 图书销售额 }; 定义一个结构体数组,输入五本书的信息(图书销售额 = 图书销量 * 单价),然后按照图书销量排序,输出排序结果;再按照图书销售额排序,输出排序结果。
时间: 2023-06-14 21:02:54 浏览: 123
下面是实现该功能的代码:
```c
#include <stdio.h>
#include <string.h>
struct book {
char strName[100]; // 图书名称
int nQuantity; // 图书销量(册数)
float fPrice; // 图书单价
double fSales; // 图书销售额
};
void sort_by_quantity(struct book books[], int n);
void sort_by_sales(struct book books[], int n);
int main()
{
struct book books[5];
int i;
// 输入五本书的信息
for (i = 0; i < 5; i++) {
printf("请输入第%d本书的信息:\n", i + 1);
printf("图书名称:");
scanf("%s", books[i].strName);
printf("图书销量(册数):");
scanf("%d", &books[i].nQuantity);
printf("图书单价:");
scanf("%f", &books[i].fPrice);
// 计算图书销售额
books[i].fSales = books[i].nQuantity * books[i].fPrice;
}
// 按照图书销量排序并输出
sort_by_quantity(books, 5);
printf("\n按照图书销量排序的结果:\n");
for (i = 0; i < 5; i++) {
printf("图书名称:%s,图书销量:%d,图书单价:%.2f,图书销售额:%.2f\n",
books[i].strName, books[i].nQuantity, books[i].fPrice, books[i].fSales);
}
// 按照图书销售额排序并输出
sort_by_sales(books, 5);
printf("\n按照图书销售额排序的结果:\n");
for (i = 0; i < 5; i++) {
printf("图书名称:%s,图书销量:%d,图书单价:%.2f,图书销售额:%.2f\n",
books[i].strName, books[i].nQuantity, books[i].fPrice, books[i].fSales);
}
return 0;
}
// 按照图书销量排序
void sort_by_quantity(struct book books[], int n)
{
int i, j;
struct book temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (books[j].nQuantity < books[j + 1].nQuantity) {
temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
}
// 按照图书销售额排序
void sort_by_sales(struct book books[], int n)
{
int i, j;
struct book temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (books[j].fSales < books[j + 1].fSales) {
temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
}
```
该程序定义了一个 `book` 结构体,包含图书名称、图书销量、图书单价和图书销售额四个成员变量。然后定义了两个排序函数 `sort_by_quantity` 和 `sort_by_sales` 分别按照图书销量和图书销售额排序。主函数中首先输入五本书的信息,并计算图书销售额,然后调用 `sort_by_quantity` 和 `sort_by_sales` 函数进行排序并输出结果。
阅读全文