XDOJ 销售冠军 C

编程入门 行业动态 更新时间:2024-10-24 01:59:49

XDOJ 销售<a href=https://www.elefans.com/category/jswz/34/1765028.html style=冠军 C"/>

XDOJ 销售冠军 C

前言

坚持。


题干

问题描述 

某公司的市场部有n名销售员,现输入某年度每个销售员每个季度的销售业绩,试统计该市场部该年度每个季度的销售冠军及其业绩。

输入说明

输入数据的第一行为一个正整数n(0<n≤20),表示销售员的数目;

接下来有n行,每行5个整数,表示一个销售员的工号及其一至四季度的销售业绩,销售员工号为5位数的正整数,每个季度的销售业绩为4位数以内的正整数。

输出说明

输出数据分为4行,第一行是一季度的销售冠军工号和业绩,若本季度有多人的销售业绩与冠军业绩相同,则按输入时的工号次序输出他们的工号,最后输出业绩,各整数之间用一个空格分隔,第二行至第四行分别为二季度、三季度和四季度的统计结果,输出格式同上,详见输出样例。

测试样例:

输入样例1

3

10001  210  145  258   488

10002  45   128  304   417

10003  210  200  232   497

输出样例1

10001 10003 210

10003 200

10002 304

10003 497


解析

本解答核心创意:

  1. 将 两个for循环嵌套排序 转化为 一个while内含一个for
  2. 巧用tmp,简化代码

解答

#include<stdio.h>
typedef struct{int id;int sale[4];
}INFO;
int main(){int n,i=0,k,tmp,winner[4]={0};scanf("%d",&n);INFO a[20];while(i<n){tmp=0;scanf("%d",&a[i].id);for(k=0;k<4;k++){scanf("%d",&tmp);   a[i].sale[k]=tmp;if(tmp>winner[k]){winner[k]=tmp;}}i++;}for(i=0;i<4;i++){for(k=0;k<n;k++){if(a[k].sale[i]==winner[i]){printf("%d ",a[k].id);}}printf("%d\n",winner[i]);}return 0;
}

总结

  1. 熟悉 typedef 用法
  2. 各季度销售冠军要分别排名,适合加一个循环
  3. 不适合qsort,因为不需要排序,只需要挑出各个季度的最大值,用winner[4]存储

更多推荐

XDOJ 销售冠军 C

本文发布于:2024-02-11 20:59:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683445.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:冠军   XDOJ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!