《N诺机试指南》(八)日期、字符串、排序问题
1.日期问题:
输入:
例题:
代码:
#include <stdio.h>
#include <bits/stdc++.h>
struct node{
int year, mouth, day;
}p;
int f[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main(){
while( scanf("%d%d%d", &p.year, &p.mouth, &p.day)!=EOF ){
//1.首先判断是不是闰年
if( (p.year%400==0)||(p.year%4==0 && p.year%100!=0) ){
f[2] = 29;//是闰年,二月为29天
}else{
f[2] = 28;//不是闰年
}
//2.判断输入的年月日是否合法
int flag = 0;
//2.1.判断月份
if( p.mouth<1 || p.mouth>12 ){
flag = 1;
}
//2.2.判断日
for( int i=1; i<=12; i++ ){
if( p.day<1 || p.day>f[i] ){
flag = 1;
}
}
if( flag ){
printf("Input Error\n");
}
//3.计算当前日子是第多少天
int sum = 0;
int nowDay = p.day;
for( int i=1; i<p.mouth; i++ ){
sum += f[i];
}
sum += nowDay;
printf("%d\n", sum);
}
return 0;
}
注意点:
怎么判断闰年:
(p.year%400==0)或者(p.year%4==0 && p.year%100!=0)
2.字符串问题:
例题:
代码:
#include <stdio.h>
#include <string.h>
#include <bits/stdc++.h> int main(){
char s[105];
gets(s);//输入一行文本
int len = strlen(s);
for(int i=0; i<len; i++){
//大写字母or小写字母
if(s[i]>='A' && s[i]<='Z'){
s[i] += 3;
}else if(s[i]>='a' && s[i]<='z'){
s[i] += 3;
}else{
//其他的不处理
continue;
}
}
puts(s);//输出一行文本
return 0;
}
3.排序问题:
sort函数:
例题:
解析:
代码:
#include <bits/stdc++.h>
using namespace std; /*
//问题一:稳定排序
struct Student{
string name;
int score, id;
}stu[1005]; //自定义:从小到大函数
bool FromShortToBig(Student a, Student b){
if( a.score==b.score ){
return a.id < b.id;//一样大,根据id判断
}
return a.score < b.score;//哪个小哪个在前面
}
//自定义:从大到小函数
bool FromBigToShort(Student a, Student b){
if( a.score==b.score ){
return a.id < b.id;//一样大,根据id判断
}
return a.score > b.score;//哪个大哪个在前面
} int main(){
int n, model;
cin >> n;
cin >> model;
//输入数据
for(int i=0; i<n; i++){
cin >> stu[i].name >> stu[i].score;
stu[i].id = i;//给id赋值
}
//判断哪种模式
if( model==0 ){
sort(stu, stu+n, FromBigToShort);
}else{
sort(stu, stu+n, FromShortToBig);
}
//打印
for(int i=0; i<n; i++){
cout << stu[i].name << " " << stu[i].score << endl;
}
return 0;
}
*/ //问题二:先奇后偶、再按从小到大顺序排序
bool cmp(int a, int b){
if( a%2==b%2 ){//同为奇数or偶数:按从小到大顺序排序
return a < b;
}else{
return a%2 > b%2;//不同:按先奇后偶顺序排序
}
} int main(){
int n;
cin >> n;
int a[n];
for(int i=0; i<n; i++){
cin >> a[i];
}
sort(a, a+n, cmp);
for(int i=0; i<n; i++){
cout << a[i] << " ";
}
cout << endl;
return 0;
}
《N诺机试指南》(八)日期、字符串、排序问题的更多相关文章
- 《N诺机试指南》(五)进制转化
进制转化类题目类型: 代码详解及注释解答: //进制转化问题 #include <bits/stdc++.h> using namespace std; int main(){ // 1 ...
- 《N诺机试指南》(二)C++自带实用函数
1.排序sort函数: 2.查找: 实例: 3. 队列:
- 《N诺机试指南》(三)STL使用
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
- 《N诺机试指南》(七)排版类问题
1.菱形问题: 解析: 主要通过打印空格和星形来打印整个图形,将整体分为=上三角形+下三角形 首先观察上三角形可以发现:第一行2个空格1个星.第二行1个空格3个星.第三行0个空格5个星 空格数 ...
- 《N诺机试指南》(一)数组妙用
题目A: 大家思路有可能是这样: 将输入数据全部存储到一个数组里,然后可以冒泡排序一波,从小到大排序 那么怎么找到重复次数呢:我是这样想的,新定义数组b,原数组a,首先b[0] = a[0],定义指针 ...
- 机试指南第二章-经典入门-Hash的应用自解
Hash的应用: Hash即散列,不像数据结构与算法中讲的各种Hash方法和冲突处理等过多的阐述,以下主要介绍Hash在机试试题解答中的作用. 例2.5 统计同成绩学生人数 Hash解法AC代码:(一 ...
- 王道机试指南题解(C/C++版)
第 2 章 经典入门 一 排序 例 2.1 排序 代码 2.1 冒泡排序(时间复杂度 \(O(n^2)\)) #include <iostream> using std::cin; usi ...
- 华为机试001:字符串最后一个单词的长度(华为OJ001)
华为机试 字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开. 提交网址: http://www.nowcoder.com/practice/8c949ea5f36f422594b ...
- 2014华为机试西安地区A组试题
2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...
随机推荐
- log4j日志配置和使用
一.日志配置变量参数说明 1. 日志设置说明:# log4j.rootLogger = debug,stdout,D,E# 等号之后的值表示appender对象,每个apperder对象表示一个日志输 ...
- HttpServletReqeust、HttpServletResponse
HttpServletRequest:一次来自客户端的请求的相关信息 请求行 request.getMethod() 获取http请求方式 request.getR ...
- 三十、sersync高级同步工具实时数据同步架构
一.项目介绍 Sersync项目利用inotity与rsync技术实现对服务器数据实时同步的解决方案,其中inotity用于监控sersync所在服务器上的文件变化. Sersync项目的优点: 1. ...
- 十九、linux--RAID详解
一.什么是RADI Raid是廉价冗余磁盘阵列,简称磁盘阵列. 运维人员就叫RAID.Raid是一种把多块独立的磁盘(物理磁盘)按不同方式组合起来形成一个磁盘组,在逻辑上看起来就是一个大的磁盘,从而提 ...
- hdu 6035 Colorful Tree(虚树)
考虑到树上操作:首先题目要我们求每条路径上出现不同颜色的数量,并把所有加起来得到答案:我们知道俩俩点之间会形成一条路径,所以我们可以知道每个样例的总的路径的数目为:n*(n-1)/2: 这样单单的求, ...
- pycharm2018后版本执行Flask app.run()深坑
在2018年以前的版本,以上配置在app.run()里面的内置方法
- [LC] 103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- UFT场景恢复
场景恢复: 在脚本运行中可能会出现一些非预期事件.错误.程序崩溃等情况,阻止脚本继续执行下去,在此情况下脚本可能暂停执行, 直到某些界面被操作之后才会继续执行下去,为了处理这一类事件因此存在场景恢复. ...
- 陈天奇XGBoost文章解读(未完成)
这个是我下载的原文在看,然后结合一些网上的资料学习,先贴一个网上的资料. 终于有人说清楚了XGBoost算法 XGBoost阅读之Weighted quantile sketch XGBoost论文翻 ...
- 点分治——POJ 1741
写的第一道点分治的题目,权当认识点分治了. 点分治,就是对每条过某个点的路径进行考虑,若路径不经过此点,则可以对其子树进行考虑. 具体可以看menci的blog:点分治 来看一道例题:POJ 1741 ...