C语言struct book { char strName[100]; // 图书名称 int nQuantity; // 图书销量(册数) float fPrice; // 图书单价 double fSales; // 图书销售额 }; 定义一个结构体数组,输入五本书的信息(图书销售额 = 图书销量 * 单价),然后按照图书销量排序,输出排序结果;再按照图书销售额排序,输出排序结果。 解题思路:一个排序可以使用排序算法,定义一个struct book 结构体变量temp,用于排序中的交换;两个结构体变量可以直接赋值,如:list[i] = temp;
时间: 2023-06-12 22:06:30 浏览: 77
单链表_c语言/单链表_
可以参考以下代码实现:
```c
#include <stdio.h>
#include <string.h>
struct book {
char strName[100]; // 图书名称
int nQuantity; // 图书销量(册数)
float fPrice; // 图书单价
double fSales; // 图书销售额
};
void sortQuantity(struct book list[], int n);
void sortSales(struct book list[], int n);
int main() {
struct book list[5];
int i;
// 输入五本书的信息
for (i = 0; i < 5; i++) {
printf("请输入第%d本书的信息:\n", i+1);
printf("名称:");
scanf("%s", list[i].strName);
printf("销量:");
scanf("%d", &list[i].nQuantity);
printf("单价:");
scanf("%f", &list[i].fPrice);
list[i].fSales = list[i].nQuantity * list[i].fPrice; // 计算销售额
}
// 按照图书销量排序
sortQuantity(list, 5);
printf("按照图书销量排序的结果:\n");
for (i = 0; i < 5; i++) {
printf("名称:%s,销量:%d,单价:%.2f,销售额:%.2f\n", list[i].strName, list[i].nQuantity, list[i].fPrice, list[i].fSales);
}
// 按照图书销售额排序
sortSales(list, 5);
printf("按照图书销售额排序的结果:\n");
for (i = 0; i < 5; i++) {
printf("名称:%s,销量:%d,单价:%.2f,销售额:%.2f\n", list[i].strName, list[i].nQuantity, list[i].fPrice, list[i].fSales);
}
return 0;
}
// 按照图书销量排序
void sortQuantity(struct book list[], int n) {
int i, j;
struct book temp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (list[j].nQuantity > list[i].nQuantity) { // 交换位置
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
// 按照图书销售额排序
void sortSales(struct book list[], int n) {
int i, j;
struct book temp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (list[j].fSales > list[i].fSales) { // 交换位置
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
```
这段代码定义了 struct book 结构体,其中包含图书名称、图书销量、图书单价和图书销售额等信息。通过输入五本书的信息,计算并存储了每本书的销售额。然后分别按照图书销量和图书销售额进行排序,并输出排序结果。
阅读全文