标签:
1. 逗号表达式
在“计蒜客“的ACM教程中,看到这样一段很好的代码:
int n; while (scanf("%d", &n), n) { //do something }
解释如下:
scanf后面有个逗号,这就是所谓的逗号表达式。整个表达式的结果就是用逗号分隔的最后一个表达式的值。当n的值为0时,整个表达式的值就是0,此时退出循环。
2. #include <bits/stdc++.h>
引用
#include <bits/stdc++.h>
而无需引用两个头文件
#include <iostream>
#include <cstdio>
这种方法并不是所有平台都适用的,用之前记得查阅平台的FAQ。不过在国内oj中,poj,hdu 不支持这个函数,这几个oj的编译器问题,其他国外的oj,还有台湾的oj都支持,CF(http://codeforces.com/),Topcoder也都支持。
3. scanf 与 gets 读取终端输入的字符串
输入样本如下:
I promise I will no more cheat in tests.
2
1
在这里
scanf("%s", str);
是行不通的,因为文章——第一行的字符串——的内部会有空格,而这样的语句只能把空格之前的内容读入到str。
因此我们要使用读取一整行的函数,如下:
gets(str);
多提醒读者一句,使用gets的时候如果发生溢出的话程序是不会报错的,所以读者在使用gets的时候一定要小心哦!
4. scanf 函数
while (scanf("%d", &cnt) == 1) { //do something }
当scanf正确读入时,返回值是和读取的变量数目相等的。而当读取出错、读到文件末尾时,scanf函数会返回-1,因此当读到文件结束时,上述while循环就会中止。当然啦,也可以写成如下样式,效果是等价的。
while (scanf("%d", &cnt) != -1){ //do something }
标签:
原文地址:http://www.cnblogs.com/fengyubo/p/4769254.html