《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 ...
随机推荐
- 吴裕雄--天生自然python Google深度学习框架:Tensorflow实现迁移学习
import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...
- [原]how to view custom provider's events(collected without provider registered) by wpa
最近想使用etw作为高效的日志机制,也不想暴露机密信息(关键信息在msnifest文件中).也就是不能在客户机器上注册自己的provider,那需要manifest文件.这样采集回来的.etl文件如果 ...
- v-cloak使用
v-cloak:保持和元素实例的关联,直到结束编译后自动消失. v-cloak指令和CSS 规则一起用的时候,能够解决差值表达式闪烁的问题(即:可以隐藏未编译的标签直到实例准备完毕). 就拿上一段代码 ...
- binary-heap(二叉堆)原理及C++代码实现
二叉堆可以看做一个近似的完全二叉树,所以一般用数组来组织. 二叉堆可以分为两种形式:最大堆和最小堆.最大堆顾名思义,它的每个结点的值不能超过其父结点的值,因此堆中最大元素存放在根结点中.最小堆的组织方 ...
- iTOP-iMX6UL开发板-MiniLinux-CAN测试使用文档
本文档介绍的是迅为iMX6UL开发板在 MiniLinux 系统环境下 iTOP-iMX6UL CAN 实验调试步骤.给用户提供了“can_libs.rar”.“can_tools.zip”和“can ...
- mysql,主键与索引的区别和联系
关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成 ...
- linux_nano命令
nano是一个字符终端的文本编辑器,有点像DOS下的editor程序.它比vi/vim要简单得多,比较适合Linux初学者使用.某些Linux发行版的默认编辑器就是nano. nano命令可以打开指定 ...
- Rails Create--params说明
参考:https://ruby-china.github.io/rails-guides/getting_started.html 表单提交后,其字段以参数形式传递给 Rails,然后就可以在控制器动 ...
- VisualStudioAddin2016Setup.rar
本工具是用于Visual Studio 2010 /2012 的外接程序. 功能不太多,常用代码,引用管理等. 动态图: 下载地址: VisualStudioAddin2016Setup.rar
- iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码
iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...