7-1 sdut-C语言实验-宣传部招聘 分数 25 全屏浏览 切换布局 作者 马新娟 单位 山东理工大学 2023年的烧烤让全国的人民了解到了淄博,来自天津的小杨同学也被淄博的温暖所吸引考入了山东理工大学。小杨同学具备天津人的幽默和乐观,于是顺利地进入到学校学生会的宣传部工作,并且协助招聘1名宣传委员。 报名的人很多,每人首先交1张照片,小杨同学需要从n个照片里根据特征值选择1人(序号从 0 到 n - 1),每个参加招聘的同学都有自己的风格,可以按特征划分出 3 个特征值 w1 , w2 , w3 ,宣传部需要 w1 特征值高的同学,不太看重 w3 ,于是小杨同学对于每个特征都赋予一个权重,分别对应为0.7 0.2 0.1,你能帮小杨同学选出宣传部需要的人吗? 输入格式: 第一行给出一个整数 n (n <= 1000) ,之后有 n 行数。 每行数有三个整数 w1, w2, w3,表示三个特征值。 不存在权值和相等的情况。 输出格式: 输出n 个应聘同学中权值和最高的序号。 输入样例: 3 1 5 10 5 1 10 10 5 1 输出样例: 2 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB
时间: 2025-03-14 17:13:30 浏览: 36
### 实现加权计算以找到最大权值对应的序号
以下是基于给定需求编写的 C 语言程序,该程序通过读取一组带有三个特征值的数据,并按照指定的权重 (0.7, 0.2, 0.1) 计算每个条目的综合得分。最终输出具有最高综合得分的条目序号。
```c
#include <stdio.h>
int main() {
int n, i, j;
double sum, max = 0;
struct node {
int w1, w2, w3;
} beauty[1000];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %d %d", &beauty[i].w1, &beauty[i].w2, &beauty[i].w3);
sum = 0.7 * beauty[i].w1 + 0.2 * beauty[i].w2 + 0.1 * beauty[i].w3;
if (sum > max) {
j = i;
max = sum;
}
}
printf("%d\n", j);
return 0;
}
```
此代码片段定义了一个 `struct` 类型用于存储每个条目的三个特征值 \(w_1\), \(w_2\), 和 \(w_3\) 的数据[^2]。随后,在输入阶段依次读入各条目的特征值并即时计算其加权和。如果当前条目的加权和大于已知的最大值,则更新记录下的索引位置以及新的最大值。最后打印出满足条件的条目序号。
#### 关键点解析
- **结构体的应用**:利用结构体可以方便地管理多个相关联的数据项,这里用来保存每位候选人的三项特征值及其可能扩展的信息。
- **动态比较机制**:在遍历过程中实时维护一个变量来跟踪目前发现的最佳候选人编号及相应的分值。
上述方法不仅解决了题目中的特定场景问题,还展示了如何灵活运用基础数据类型与控制流语句构建解决方案的能力[^5]。
阅读全文
相关推荐




















