码迷,mamicode.com
首页 > 其他好文 > 详细

ACM札记

时间:2015-08-29 16:48:25      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

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
}

 

ACM札记

标签:

原文地址:http://www.cnblogs.com/fengyubo/p/4769254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!