Zeta_c的ACM入门

基本输入输出

1.输入输入函数

C++中的标准输入语句是cin,标准输出是cout。
C语言中输入输出函数有:
putchar():把一个字符常量输出到显示器屏幕上;
getchar():从键盘上输入一个字符常量:
printf():把数据按格式控制输出到显示器屏幕上:
scanf():从键盘上输人各类数据:
puts():把一个字符串常量输出到显示器屏幕上:
gets():从键盘上输入一个字符串常量:
sscanf():从一个字符串中提取各类数据。
在竞赛由默认体用标准输入stdin 和标准输出 stdout。

2.输入结束方式

(1)默认结束

“文件结束”(EOF)

while(scanf("%d%d", &a, &b) != EOF){}
while(~scanf("%d%d", &a, &b)){} //竞赛时推荐

(2)在输入数据中指定了数据个数

(3)以特定元素作为结束符

如0;

while(~scanf("%d%d", &a, &b) && n){}

3.输入输出的效率

C++里的输入输出优点是方便,但是效率很低速度很慢。
如果有大量的测试数据,用cin、cout输入和输出慢,可能导致TLE,在这种情况下应该使用scanf()、printf()。

测试

为了操作方便,可以将构造出的输入数据放在文件test.in里,将结果输出到文件test.out里

(1)在程序中加入测试代码

# define mytest
# ifdef mytest
	freopen("test.in", "r", stdin)
	freopen("test.out", "w", stdout)
#endif

在提交是去掉 # define mytest 即可

(2)在行命令中重定向

例如生成的可执行程序是abc,在Windows或Linux的行命令中这样输入输出到文件:
abc<test.in>test.out

(3) 对比测试数据

对于复杂的,能需要写两个程序:一个是提交到OJ的“好”程序;另一个是暴力法程序,目的是用它成测试数据。这种方法称为”对拍”。
Windows系统下,可以用行命令比较两个程序的输出是否一致。例如在Windows系统下比较它们的输出是否一致

abe.exe<test.in> test1.out
abe_1.exe<test.in> test2.out
fc test1.out test2.out/n

编码

技巧

(1)读题(英文)加大英语阅读量练习
(2)熟练编辑器或IDE(vim和Code:Blocks)
(3)减少调试,尽量使用不容易出错的方法,例如少用指针,使用静态数组,把逻辑功能模块化。不要使用动态调试,不要用单步跟踪和断点等工具,用printf()打印调试信息
(4)使用STL。
(5)编码技巧 如长字符定义成短字符。

typedef long long ll;
ll a=1234567890; // long long a=123456789

规范

(1)header。使用万能开头文件“#include<bits/stdc++.h>”,不要用C语言风格的header。
(2)判断结尾不要用EOF,用‘~’。
(3)换行用K&R风格。
(4)定义变量在调试用的最近的地方。
(5)最好不用宏。不用#define而用const定义常量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值