山东网站建设公司哪家权威,自动推广软件下载,直通车代运营,广东seo网站设计多少钱一进考场设置devc快捷键
设置注释和取消注释快捷键设置代码自动补全快捷键开启devc调试功能#xff0c;详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648比赛过程中#xff0c;如果不相信自己是否做对#xff0c;没有把握的#xf…一进考场设置devc快捷键
设置注释和取消注释快捷键设置代码自动补全快捷键开启devc调试功能详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648比赛过程中如果不相信自己是否做对没有把握的可以打印出过程来检验一下在有些情况下是有用的。。。千万不能辛辛苦苦做了居然因为最后一步错了因为考场是不知道结果的不能知道结果去验证靠近结果而是要不断怀疑自己的结果是不是正确的
注意事项
1、不要能用字符串直接输出的就不要还用数组来判断当数据量大的时候就会超时明明都判断了可以直接运行了就不要多此一举放在数据里因为它只有三个变量又不是很多所以完全可以各自单独列出来。
if(s[i] Mccree) coutGenji;
else if(s[i] Hanzo) coutMccree;
else coutHanzo;错误示范
if(s[i]des[0][0]) sa[i]des[1][0];
else if(s[i]des[0][1]) sa[i]des[1][1];
else sa[i]des[1][2];sprintf、memset()函数
用来格式化字符串注意格式化的是字符数组 头文件#include cstdio
#includeiostream
#includecstdio
using namespace std;
int main(){char s[15];sprintf(s, %08d, 123);coutsendl;return 0;
}sprintf(s, “%08d”, 123);可以使得字符串的输出格式为右对齐以0补齐00000123
memset函数 参考学习链接https://blog.csdn.net/qq_25406563/article/details/83303371?depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3
memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 ); memset(结构体/数组名 , 用于替换的字符“ , 前n个字符 ); 函数解释将s中的前n个字节用ch替换并且返回s 函数作用在一段内存块中填充某一个给定的值常用于较大的对结构体和数组的清零操作。
注意闰年
闰年判断方法
1.能被4整除而不能被100整除。
2.能被400整除。
平年是365天,闰年是366天
闰年2月29天平年2月28天有关日期的题目很喜欢在2月份埋坑要特别注意闰年平年
set容器、vector、map容器
构造set集合的主要目的是为了快速检索使用set前需要在程序头文件中包含声明“#include set” 它不会重复插入相同键值的元素而采取忽略处理。 而且只要把元素放进set里面去用for循环读取就可以按序读取 注意初始化的方法和输出的方式
//定义set容器排序、避免冗余 setstringe;for(setstring::iterator ite.begin();it!e.end();it) {coutit: *itendl;
// cout*itendl;另外在买不到的糖果数的题目中也有用到set容器
if(s.find(i)s.end()){//i不在set中那么i就是答案coutiendl;break;//找到后跳出循环 }stl容器set成员函数:find()–返回一个指向被查找到元素的迭代器
另外在跳蚱蜢的题目中也有用到set容器
setstring visited;//已经搜索过的局面
if(visited.count(s)0)//如果没有搜索过这个局面{visited.insert(s);} stl容器set成员函数:count()返回集合中某个值元素的个数
set容器用 s.insert(temp);进行元素的插入
跟vector不一样插入跟查找特定元素不一样
#include algorithm
vectorint vec;
vec.push_back(1);
vec.push_back(2);
vectorint::iterator ret; ret std::find(vec.begin(), vec.end(), 15); if(ret vec.end()) cout not found endl; else cout found it endl;erase函数
https://blog.csdn.net/leo_csdn_/article/details/82221721
scanf()的好用处
scanf()在头文件#include cstdio里作为有一定格式输入时更好用如要输入02/03/04 int a[3],b[3];scanf(%d/%d/%d,a[0],a[1],a[2]);getline和cin对string的输入
getline(cin,string)读取一行以回车为结束,空格不会当成是结束的 但cinstring;读取至空格或回车. 所以要每次读取一个单词时候用cinstring即要把空格识别作为结束所以用cinstring。
常用的函数及其头文件
strlen()函数在 cstring头文件里CCTYPE函数系列包含了判断是否是字符等函数sqrt()求平方根函数atan2()函数可根据x和y的值计算角度。#include algorithm 里面有sort()排序函数min函数比较两个数值的大小返回他们的之间最小值。头文件#include algorithm。如 num min(currentNum, num);编程填空题可用的万能头文件#includebits/stdc.h绝对值函数 fabs()的头文件 #include cmath全排列函数 next_permutation(a,a10)头文件#include algorithmdo{ 放置内容…… }while(next_permutation(a,a10)); 虽然有10个元素最后一个的下标也是a[9],但是区间的话是[a,a10)所以还是以元素个数做为加多少的结尾gcd函数 gcd(x,y);最大公约数函数 int、long long类型都可以需要注意的是两个类型必须要相同还有不能用浮点型当然手写gcd函数也是可以的它头文件是algorithm。
while (cin income)问题
double income;
while (cin income)当输入的不是数字的时候压根不会进入while循环因为不满足cin income的条件。cin被用于测试表达式中将根据输入是否成功被转换为bool值true或false。cin将知道输入的如字符那些表示数字从而将其留在队列中并返回一个将被转换为false的值这时while循环将会终止。
#includeiostream
#includestring
#includesstream
//新学的头文件using namespace std;
int main(){string s;while(getline(cin,s)){int sum 0,x;int count 0;int i 0;stringstream ss(s);//复制字符串s到stringstream ss while(ssx){sumx;couti: iendl;}coutcount: countendl;coutsum: sumendl;}return 0;
} getline (cin, stri)返回cin,cin再转换为bool值true(读入成功)或者false(读入失败),所以此次循环结束的就是按下ctrlz
要注意类型以及溢出等问题
有时候不注意int跟double或者忽略了隐式类型转换即使声明是double但也可能被隐式转换为int了
double cal (int x,int y){double ave;
// 注意类型转换double不然x和y会以int 类型进行计算计算的ave的结果也是int ,不过有2.0跟2的差别
// ave 2.0 * double(x * y) / (x y);ave 2.0* x * y / (x y);
// 当乘以的是2的时候是整数乘以是2.0的时候结果是浮点数
// ave 2* x * y / (x y);return ave;
}包括一些声明的是long long类型但是相乘的两个数是long类型这样子long long就被隐式转换为long了就会溢出
STL容器学习
STL容器学习
比如在错误的票据这道题里用了vector模板类注意头文件和声明因为可以不用事先声明大小而只需要一直把元素v.push_back(x);进去就好还可以利用sort(v.begin(),v.end());快速的对容器的元素进行排序。还可以通过v.size()知道容器元素数量然后通过for(int i1;iv.size();i)遍历容器队列的学习和使用学习链接
#includeiostream
#includequeueusing namespace std;int main(){queuestring q;
// 入队如例q.push(x); 将x 接到队列的末端。q.push(zhangsan);q.push(lisi);q.push(wangwu);
// 判断队列空如例q.empty()当队列空时返回true。while(!q.empty()){
// 访问队首元素如例q.front()即最早被压入队列的元素。coutq.front()endl;
// 出队如例q.pop(); 弹出队列的第一个元素注意并不会返回被弹出元素的值。q.pop();}
}string字符串
查找字串的函数 str.find(subStr1) ! string::npos 如果找到了返回string::npos subStr1需要是字符串
#include cstring//头文件
string str abc;
string subStr1 bc;
string subStr2 cd;
str.find(subStr1); //返回1第一个匹配的下标
str.find(subStr2);
//当str.find(subStr1) ! string::npos时说明是子串
//当str.find(subStr1) string::npos时说明不是子串
if(str.find(subStr1) ! string::npos){coutsubStr1 是 str 的子串endl;
}stringstream
可以方便地实现了字符串与数字的互相转化
#include sstream//头文件
string i2s(int i){stringstream ss;string s;//把数字i存到ss中ssi;//把ss中有的转换为字符串ssss;return s;
}涉及到多位数字相乘之类的
要把一个多位数看出多个位的单位数组成用
for(int i1;i9;i)for(int j0;j9;j)for(int k0;k9;k)for(int l0;l9;l){
而不是
for(int x1;x999;x)for(int y1;y999;y)比如在排他平方数里也是这样子。 有几位数就会用到几个for循环比如四位数用四个for循环找出四个数之后再用*1000*100*10之类的变成几千几百几十的数
编程题技巧
认真读题认真分析题目不要害怕编程大题如果不会千万不要放弃因为有很多测试用例可以暴力保证一些用例的测试是对的这样子能赚一点分能赚一点是一点要有多拿一分是一分的想法不能放弃掉