C++编程题-职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来
题目描述
输入描述:
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。 接下来的N行有N个职工的信息: 包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
输出描述:
可能有多组测试数据,对于每组数据, 输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。 关键字顺序:年龄>工号>姓名,从小到大。
输入例子:
5 501 Jack 6 102 Nathon 100 599 Lily 79 923 Lucy 15 814 Mickle 65
输出例子:
501 Jack 6 923 Lucy 15 814 Mickle 65
可以用三个数组来存取职工的职工号、姓名、年龄等信息,也可以用结构体来做。
注意:定义员工姓名时,需要用一个二维数组来定义,如
char
name[30][10];因为每
个名字都相当于一个一位数组。
主要思路: 遍历三次,第一次遍历找到年龄最小的,若年龄相等,就比较职工号,若
职工号相等,则继续比较员工姓名,姓名比较是字符串比较,所以需要可以用
strcmp
函数直接比较(需要加include<string.h>头文件),如
strcmp
(name[i],name[k]),若前
者小于后者,则返回一个小于0的数字,当第一次遍历结束后,可以找到最小的一个值(有
可能第一个就是最小),输出,并将当前年龄赋值为101,目的是此处的最小值已经输出,
第二次遍历找次最小值时,第一次输出值的位置是不用考虑的。接着输出第二次找到的最
小值(也就是整个输入的次最小值),并将此位置的年龄赋值为101,第三次遍历是同样的
道理。
方法一:
#include<iostream>
#include<string.h>
using
namespace
std;
int
main()
{
int
i,j,n,k;
int
number[30];
char
name[30][10];
int
year[30];
while
(cin>>n)
{
for
(i=0;i<n;i++)
cin>>number[i]>>name[i]>>year[i];
for
(j=0;j<3;j++)
{
k=0;
if
(n>3)
{
for
(i=0;i<n;i++)
{
if
(year[i]<year[k])
k=i;
else
if
(year[i]==year[k])
{
if
(number[i]<number[k])
k=i;
else
if
(number[i]==number[k])
{
if
(
strcmp
(name[i],name[k])<0)
k=i;
}
}
}
}
cout<<number[k]<<
" "
<<name[k]<<
" "
<<year[k]<<endl;
year[k]=101;
}
}
}
方法二:
#include<iostream>
#include<vector>
#include<string>
#include<string.h>
#include<algorithm>
using
namespace
std;
typedef
struct
person
{
int
number;
string name;
int
year;
}person;
static
bool
comp(person a,person b)
{
if
(a.year<b.year)
return
true
;
else
if
(a.year==b.year)
{
if
(a.number<b.number)
return
true
;
else
if
(a.number==b.number)
{
//if(strcmp(a.name,b.name)<0)
// return true;
if
(a.name<b.name)
return
true
;
}
}
return
false
;
}
int
main()
{
int
n;
//vector<person> vec; 注意:如果在这里定义会出错,因为输入多组数据时一直都保存,而不是每次新建一个容器
while
(cin>>n)
{
person worker;
vector<person> vec;
for
(
int
i=0;i<n;i++)
{
cin>>worker.number>>worker.name>>worker.year;
vec.push_back(worker);
}
sort(vec.begin(),vec.end(),comp);
//sort里面可以自定义比较函数
for
(
int
i=0;i<3;i++)
{
cout<<vec[i].number<<
" "
<<vec[i].name<<
" "
<<vec[i].year<<endl;
}
}
return
0;
}
C++编程题-职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来相关推荐
- 假设一个公司的医疗保健数据库有如下 3 个关系: 职工(职工号,姓名,性别,职务,家庭地址,部门编号) 部门(部门编号,部门名称,办公地址,电话) 保健(保健卡编号,职工号,检查身体日期,健
假设一个公司的医疗保健数据库有如下 3 个关系: 职工(职工号,姓名,性别,职务,家庭地址,部门编号) 部门(部门编号,部门名称,办公地址,电话) 保健(保健卡编号,职工号,检查身体日期,健康状况) ...
- Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数
10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...
- Java编程题小练习(初级):输入10个整数并进行排序输出。
程序代码: package com.xingzhao.Test; /** 题目描述:输入10个整数,排序后输出.* * 分析:* 1.输入10个整数,存储为数组* 2.使用冒泡排序法将数组排序* 3. ...
- 学生结构体,学生有姓名 学号 三门成绩 班级人数为五人 。实现 1:第一门成绩的平均分;2:找出两门以上不及格的学生,输出他们的姓名学号及三门成绩; 3:找出平均分在90分以上或者全部成绩在85分以上
#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 5 #define ...
- 笔试算法题(28):删除乱序链表中的重复项 找出已经排好序的两个数组中的相同项...
出题:给定一个乱序链表,节点值为ASCII字符,但是其中有重复项,要求去除重复项并保证不改变剩余项的原有顺序: 分析:创建一个256(2^8)大小的bool数组,初始化为false,顺序读取链表,将字 ...
- 十二个球称三次C语言编程,十二个球,有一个不知轻重,现有一个天平,称三次,找出此球!...
平均分成A.B.C三组,每组4个: 第一秤:A.B两组先分别放天平左右: 情况一:平衡.则问题出在C组,A.B组共8个为标准球. 第二秤用3个标准球和C组的3个球对比, 如果第二秤平衡,剩下的一个就是 ...
- c语言编程输出1000以内能被3整除的数,【C语言】找出1000以内可以被3整除的数
分别用while,do-while,for语句实现 方法一:while #include int main() { int m; m = ; while (m<=) { if (m % == ) ...
- 题7.15:要求输入一个职工号,用折半查找法查找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。按职工号由小到大顺序排序,姓名顺序也随之调整
题目 本题是谭浩强<C程序设计课后习题>题7.15. 题目: 写几个函数: 1.输入10个职工的姓名和职工号. 2.按职工号由小到大顺序排序,姓名顺序也随之调整 3.要求输入一个职工号,用 ...
- PTA练习 Java模拟题 编程题
7-1 各类字符数 (20 分) 从键盘输入一个字符串,程序输出该字符串中的大写英文字母数,小写英文字母数以及非英文字母数 输入格式: 字符串 输出格式: 大写英文字母数 小写英文字母数 非英文字母数 ...
最新文章
- 中国计算机学会论坛上5专家激辩:量子计算机10年内成熟?中美之间还有5-6年差距...
- 大型数据中心蓄电池规划与应用中的痛点及展望
- 搜索引擎的选择—百度还是谷歌?
- 用jQuery实现网页卷轴的效果
- 原创 | 科普一个 Star 数为 28.5k 的云原生网关
- Nokia 920全部CODE
- python utc 时间
- [翻译] ZLHistogramAudioPlot
- Linux 30岁了~我们也老了
- python中什么是主要数据类型_python中基本数据类型是什么
- 富士康被黑客攻击,索要 2.3 亿元赎金:已加密约1200台服务器,窃取了100 GB的未加密文件,并删除20~30TB的备份
- mysql .myi权限_Day02-a.m.-MySQL体系结构与用户权限管理
- UVA763 LA5339 Fibinary Numbers【大数】
- 【渝粤教育】国家开放大学2018年秋季 2115T人体解剖学与组织胚胎学 参考试题
- 智能时代 什么样的家庭安防系统更靠谱?
- 【js】js获取今日和昨日0点和23点59分59秒
- 在Excel里快速插入目录
- uis向3d投影全息界面的连续演化。
- hapi mysql项目实战路由初始化_hapi框架搭建记录(三):Joi数据校验和Sequelize(数据迁移、填充数据)...
- 记录配置Jupyter kernels