刷题小tips
自从认真做题以后,结合自己的做题体验以及网上前人的总结经验贴,罗列下列的小建议:
1.为了避免每一次都要重复输入测试数据的麻烦,利用输入重定向文件
我是只把标准输入stdin重定位到in.txt,然后标准输出stdout依旧是输出到屏幕
所以就加了#include<stdio.h> freopen("in.txt","r",stdin); fclose(stdin);
当要提交的时候记得把首尾加的这两行代码注释掉或者删掉!!
这里顺便提一下我的傻吊经历,我一开始在路径下建了一个叫in.txt的文件,结果发现输入根本没有效果,最后发现是这一台电脑的文件名显示效果坑了我一把
这是一台电脑根本不显示后缀,就是我命名为in.txt的文件他的完全名是in.txt.txt,所以当我把名字改回in后就正常了
2.使用scanf,printf会快一点,数据量大时用cout,cin会慢一点点,虽然大多数时候都是没有什么讲究的,我本人一直以来也更喜欢简洁的cout、cin,但是多学一点也没有什么坏处
scanf的时候如果不是数组类型的话,变量名前不要忘记加&,不然有可能就是segment fault
3.如果申请的是数组的话,申请空间最好比要求的大一点,特别是如果是字符串类型的话char a[n],n一定要比读取的空间大1,要给末尾'/0'预留位置
4.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!如果在代码里面把标准输出输入流重定向了,在最后一定一定要把那两行代码删掉,不要像我一样没删掉,然后出现段错误,还花了好长时间检查是不是数组越界,scanf是不是少写&,痛心疾首!!!!!!!!!!!!!!
5.还是在循环的时候,那些数量之间的关系要理清楚,特别是什么0开始还是1开始
6.结构体内部数据是没有初始化的,可能会出现一堆垃圾数据(像下图一样),所以尽量还是要自己初始化一下
使用struct的构造函数来初始化,用memset(object,0,sizeof(object))
7.string末尾追加字符
str+='c'; str=str+'c'; str=""+'c';
8.0==false 非0(包含负数)==true
9.使用<algorithm>中的fill(a.begin(),a.end(),value)可以避开memset的按照字节初始化方式,直接进行对象级别(如容器)的初始化
最新文章
- JDBC增删改查,PreparedStatement和Statement的区别
- nodejs 下载,安装,测试(windows环境下)
- Startssl 现在就启用 HTTPS,免费的!
- HttpContext.Current.User.Identity.IsAuthenticated
- 四、XML映射配置文件
- C# DLL文件注册问题(涉及AxInterop.WMPLib.dll等)
- 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
- CSS背景图拉伸自适应尺寸
- Linq序列间的操作
- require.js 源码解读——配置默认上下文
- FreeRTOS——错误排查
- zabbix web监控模板
- Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
- 修改android 开机画面
- Redux进阶(Redux背后的Flux)
- No cached version of cn.lightsky.infiniteindicator:library:1.2.2 available for offline mode.
- 你确定你真的懂Nginx与PHP的交互?
- 2018秋寒假作业6- -PTA编程总结3
- 【Java并发编程六】线程池
- vue 刷新当前页面
热门文章
- 08点睛Spring MVC4.1-Spring MVC的配置(含自定义HttpMessageConverter)
- 解决RedisDesktopManager连接不上redis问题
- Spring Boot 初学避免犯不必要的错误
- Appium移动自动化测试-----(九) appium API 之应用操作
- Appium移动自动化测试-----(六)1.appium-desktop下载安装
- 通用mybatis单表操作接口
- Spring之22:DefaultListableBeanFactory
- 数组模拟循环队列(java实现)
- windows下安装phpredis扩展
- SringMVC笔记