题解 | #牛牛的书#

牛牛的书

https://www.nowcoder.com/practice/30bb969e117b4f6d934d4b60a2af7489

#include <stdio.h>
#include <malloc.h>
typedef struct {
    char  bn[50];
    int   price;
} book;

int main() {
    int i, n, m;
    scanf("%d",&n);
    book *bookn=(book*)malloc(sizeof(book)*n), k;  //构造book类型结构数组(一般编译器都会报错,因为n不是常量,所以使用malloc函数);
    for (i = 0; i < n; i++) { //存储书目;
        scanf("%s %d", bookn[i].bn, &bookn[i].price);
    }
    
    //按照排序方法直接以price排序各数组元素
    //假设最坏情况,刚好各元素都是降序排列
    for (i = 0; i < n; i++) {
        //第一个for是从每次更新的数组的首元素开始左右互换,假设最坏情况每次首元素都是本轮最大的,需要丢到最后去
        for (m = 0; m < n - i-1;
                m++) { //m=n-i是因为每轮最大的丢到最后总会比上一轮最大的小,在上一轮最大的前面换不动了,所以只需要比上轮少换一次
            //比较price 成员
            if (bookn[m].price > bookn[m + 1].price) 
			{ 
                k = bookn[m];
                bookn[m] = bookn[m + 1];
                bookn[m+1] = k;
            }
        }

    }
    //用for循环输出排序后的数组元素即可
    for (i = 0; i <n; i++)
        printf("%s\n", bookn[i].bn);
    return 0;
}

全部评论

相关推荐

03-14 16:04
已编辑
安徽农业大学 算法工程师
痴心的她allin秋...:啥笔试都挂怎么办,某9本考研下岸,练也没时间了,对算法也不感兴趣,大部分大厂笔试只能A0-1个😄
米哈游笔试
点赞 评论 收藏
分享
钱嘛数字而已:辅导员肯定不能同意,不然你出事了,他要承担责任。但是,脚和脑子都长在你自己身上,使用它还需要向辅导员报告么? 辅导员必须按流程拒绝你,然后你拿出成年人的态度,做自己的选择。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务