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 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析