m0_68426495 2022-05-31 16:21 采纳率: 66.7%
浏览 73
已结题

关于结构体的代码,如何使用排序算法来比较

有如下结构体:
struct book
{
char strName[100]; // 图书名称
int nQuantity; // 图书销量(册数)
float fPrice; // 图书单价
double fSales; // 图书销售额
};
定义一个结构体数组,输入五本书的信息(图书销售额 = 图书销量 * 单价),然后按照图书销量排序,输出排序结果;再按照图书销售额排序,输出排序结果。

解题思路:一个排序可以使用排序算法,定义一个struct book 结构体变量temp,用于排序中的交换;两个结构体变量可以直接赋值,如:list[i] = temp;

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-05-31 17:19
    关注

    供参考:

    #include <stdio.h>
    struct book{
        char strName[100]; // 图书名称
        int nQuantity; // 图书销量(册数)
        float fPrice; // 图书单价
        double fSales; // 图书销售额
    };
    void print(struct book B[])
    {
        int i;
        for (i = 0; i < 5; i++)
            printf("%s %d %f %lf\n", B[i].strName, B[i].nQuantity, B[i].fPrice, B[i].fSales);
    }
    int main()
    {
        struct book Book[5], temp;
        int  i, j;
        printf("输入五本书的信息:图书名称  图书销量  图书单价\n");
        for (i = 0; i < 5; i++)
        {
            scanf("%s %d %f", Book[i].strName, &Book[i].nQuantity, &Book[i].fPrice);
            Book[i].fSales = Book[i].nQuantity * Book[i].fPrice;
        }
        printf("按照图书销量排序:\n");
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4 - i; j++) {
                if (Book[j].nQuantity > Book[j + 1].nQuantity) {
                    temp = Book[j]; Book[j] = Book[j + 1]; Book[j + 1] = temp;
                }
            }
        }
        print(Book);
        printf("图书销售额排序:\n");
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4 - i; j++) {
                if (Book[j].fSales > Book[j + 1].fSales) {
                    temp = Book[j]; Book[j] = Book[j + 1]; Book[j + 1] = temp;
                }
            }
        }
        print(Book);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?