news 2026/3/11 3:16:09

华为OD机试真题双机位C卷 【采购订单】C语言实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题双机位C卷 【采购订单】C语言实现

采购订单

2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

题目描述

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

具体规则如下:

如果PR状态为"审批通过",则将其商品加入到PO中。如果PR的状态为"审批拒绝"或"待审批",则忽略改PR。

对于单价高于100元的商品,每个商品单独生成一条PO记录。对于单价低于100元的商品,将相同商品的数量合并到一条PO记录中。

如果商品单价<100且商品数量>=100,则单价打9折。

输入描述

第一行包含整数N,表示PR的数量。

接下来N行,每行包含五个用空格分割的整数,按顺序表示:商品ID,数量,单价,PR状态(0表示审批通过,1表示审批拒绝,2表示待审批)

输出描述

输出若干行,每行表示一条PO记录,按以下格式输出:

对于单价高于100元的商品:商品ID 数量 单价

对于单价低于或等于100元的商品: 商品ID 总数量 打折后的单价(向上取整)

输出的PO记录按商品ID升序升序排列,相同商品按照数量降序排列

补充

  • 2 <= n <= 1000
  • 1 <= 商品价格 <= 200
  • 1 <= 商品数量 <= 1000
  • 2 <= 商品编号 <= 1000

用例1

输入

2 1 200 90 0 2 30 101 0

输出

1 200 81 2 30 101

说明

商品1的原始单价为90,审批通过,生成一条PO,满足打折条件,打折后单价为81。

商品2的单价为101,审批通过,生成一条PO

用例2

输入

3 1 10 90 0 1 5 90 0 2 8 120 0

输出

1 15 90 2 8 120

说明

PR1和PR2均为商品1,单价90,审批通过,单价低于100元,合并数量为150.

PR3为商品2,单价120元,审批通过,单价高于100元,单独生成一条PO记录。

用例3

输入

4 1 5 80 0 2 3 120 0 3 2 90 1 4 10 150 2

输出

1 5 80 2 3 120

说明

PR1:商品1,单价80元,审批通过,单价低于100元,合并到PO中。PR2:商品2,单价120元,审批通过,单价高于100元,单独生成一条PO记录。PR3:审批拒绝, 忽略。PR4待审批忽略。

题解

思路

使用模拟进行处理:

  1. 循环处理输入的PR,两种策略处理审批通过不同单价产品:
    • 单价> 100的PR: 直接生成一条最终PO记录。
    • 单价 <= 100的PR:可以使用一个中间数组累计对应商品总数目
  2. 处理1中暂存数组中每个单价低于100的商品,为它们生成PO,如果该商品累计总数目大于等于100,折扣之后价格为ceil(price * 0.9)向上取整,添加一条新的PO记录。
  3. 对于1 2 得到的最终PO记录,进行自定义排序.排序规则为商品ID升序升序排列,相同商品按照数量降序排列
  4. 按顺序和题目要求规则输出PO记录。

code

#include <stdio.h> #include <math.h> #include <stdlib.h> #define MAXN 1000 typedef struct { int id; int num; int price; int discountPrice; } Product; typedef struct { int id; int num; int price; } LowProduct; /* 排序规则:id 升序,num 降序 */ int cmp(const void *a, const void *b) { Product *x = (Product *)a; Product *y = (Product *)b; if (x->id != y->id) return x->id - y->id; return y->num - x->num; } int main() { int n; scanf("%d", &n); Product res[MAXN]; int resCnt = 0; LowProduct low[MAXN]; int lowCnt = 0; for (int i = 0; i < n; i++) { int id, num, price, status; scanf("%d %d %d %d", &id, &num, &price, &status); if (status != 0) continue; if (price > 100) { // 高价商品,直接入结果 res[resCnt].id = id; res[resCnt].num = num; res[resCnt].price = price; res[resCnt].discountPrice = price; resCnt++; } else { // 低价商品,按 id 合并 int found = 0; for (int j = 0; j < lowCnt; j++) { if (low[j].id == id) { low[j].num += num; found = 1; break; } } if (!found) { low[lowCnt].id = id; low[lowCnt].num = num; low[lowCnt].price = price; lowCnt++; } } } // 处理低价商品合并结果 for (int i = 0; i < lowCnt; i++) { res[resCnt].id = low[i].id; res[resCnt].num = low[i].num; res[resCnt].price = low[i].price; if (low[i].num >= 100) { res[resCnt].discountPrice = (int)ceil(low[i].price * 0.9); } else { res[resCnt].discountPrice = low[i].price; } resCnt++; } // 排序 qsort(res, resCnt, sizeof(Product), cmp); // 输出 for (int i = 0; i < resCnt; i++) { printf("%d %d %d\n", res[i].id, res[i].num, res[i].discountPrice); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/7 19:51:49

降ai率从80%降到15%!免费降ai率工具实测,降低ai效果炸裂。

国庆假期一过&#xff0c;又到“论文人”的修罗场。朋友们&#xff0c;你是不是也被AIGC检测折磨过&#xff1f; 明明一行一字都自己写的&#xff0c;结果检测报告红得像过年&#xff1a;AI率99%&#xff01;那一刻真的想原地删库跑路。 不过话说回来&#xff0c;这两年确实有…

作者头像 李华
网站建设 2026/3/9 16:36:32

半导体集成电路详解:数字IC、逻辑器件。

半导体集成电路详解&#xff1a;数字IC、逻辑器件、微处理器与模拟IC 一、 数字IC与模拟IC&#xff1a;两大核心门类 根据WSTS分类&#xff0c;半导体芯片主要分为集成电路、分立器件、传感器和光电子器件。其中&#xff0c;集成电路&#xff08;IC&#xff0c;俗称“芯片”&am…

作者头像 李华
网站建设 2026/3/3 19:25:33

【毕业设计】基于python的遥感图片识别沙漠湖泊和森林基于CNN深度学习的遥感图片识别沙漠湖泊和森林

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/10 12:12:24

dy x-tt-session-dtrait 逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由 此产生的一切后果均与作者无关&#xff01; 部分pyhon代码 url "aweme/v1…

作者头像 李华
网站建设 2026/3/10 18:46:29

mysql的存储引擎

关于 MySQL 插件式的存储引擎啊&#xff0c;这个插件式的存储引擎也让它非常灵活的能在不同的具体的业务场景来选择对应的存储引擎&#xff0c;使得它的性能也是非常的灵活强大。我介绍一下我知道的就是经常被对比的的存储引擎是什么&#xff1f; myisam、 Innodb 跟 memory&am…

作者头像 李华
网站建设 2026/3/4 9:45:24

基于java的SpringBoot/SSM+Vue+uniapp的无人机飞行数据管理平台的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 &#x1f31e;博主介绍&#xff1a;✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华