scanf和cin的区别
2016-06-15 16:41
393 查看
今天刷题,在线提交,很简单的一个找规律题。
题目见:http://www.nowcoder.com/pat/2/problem/250
于是很快写出了代码:
int main(void)
{
int F[MAX];
F[0]=7;F[1]=11;
int n;
while(cin>>n)
{
for(int i=2;i<=n;i++)
F[i]=F[i-1]+F[i-2];
if(F
%3==0)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
提交上去,发现是超时的,郁闷,递归是很简单但是又很低效的一种做法。于是就去找规律。写了几个数发现如果(n%4==2)的话,就可以被3整除,反之,则不可以,于是又写出代码:
int main(void)
{
int n;
while(cin>>n)
{
if(n%4==2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}结果还是超时,郁闷,看到讨论区有人说换成scanf就可以了,于是换成scanf.;
它们的区别是什么呢:
数据量大时scanf效率高,因为scanf是格式化输入是实时的,而cin是字符流输入,需要先存入缓冲区再输入,scanf需要自己写格式,是一种格式化输入,scanf是用指针操作的,没有类型安全机制,比如一个char类型数据你就可以用%f获得输入,而不会报错,但在运行时会出现异常。cin是自动判断你的变量类型,比如一个char数据只能用默认的char方法取数据。
cin通过缓冲区输入,即输入首先存入缓冲区,等到缓冲区满时再自动刷新,这样cin的效率就很低了,但是保证了安全。
题目见:http://www.nowcoder.com/pat/2/problem/250
于是很快写出了代码:
int main(void)
{
int F[MAX];
F[0]=7;F[1]=11;
int n;
while(cin>>n)
{
for(int i=2;i<=n;i++)
F[i]=F[i-1]+F[i-2];
if(F
%3==0)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
提交上去,发现是超时的,郁闷,递归是很简单但是又很低效的一种做法。于是就去找规律。写了几个数发现如果(n%4==2)的话,就可以被3整除,反之,则不可以,于是又写出代码:
int main(void)
{
int n;
while(cin>>n)
{
if(n%4==2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}结果还是超时,郁闷,看到讨论区有人说换成scanf就可以了,于是换成scanf.;
#include <iostream> #include <stdio.h> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { if(n%4==2) printf("Yes"); else printf("No"); printf("\n"); } return 0; }这样就提交通过了,根本区别就在于scanf和cin的区别。
它们的区别是什么呢:
数据量大时scanf效率高,因为scanf是格式化输入是实时的,而cin是字符流输入,需要先存入缓冲区再输入,scanf需要自己写格式,是一种格式化输入,scanf是用指针操作的,没有类型安全机制,比如一个char类型数据你就可以用%f获得输入,而不会报错,但在运行时会出现异常。cin是自动判断你的变量类型,比如一个char数据只能用默认的char方法取数据。
cin通过缓冲区输入,即输入首先存入缓冲区,等到缓冲区满时再自动刷新,这样cin的效率就很低了,但是保证了安全。
相关文章推荐
- MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)
- css盒子模型
- 聚合索引和非聚合索引简单介绍
- 图片内存复制性能对比
- 什么是浮动IP
- SqlServer调用CLR服务
- 上田雅美是个 4000 汉子,心然的那首神曲竟然出自reset
- JSON简介
- 图片上传出现的问题
- java nio中buffer缓冲区一些方法
- ZBrush中的皮肤纹理是怎么雕刻出来的
- spring框架的项目报错:No mapping found for HTTP request with URI [ ] in DispatcherServlet with name 'spring'
- 获取String中的所有数字并转化为int类型
- JavaScript专题(二):深入理解iframe
- python lib error
- Spring Boot 打开jsp页面 乱码解决方法
- 进程的关系
- 控制器
- 缓存常规使用方式分析
- Autofac.Configuration 3.3.0不稳定