快速读入(特殊处理)

一般地来说,C语言和C++还是有一定区别的,比如在读入方面,C语言就采用了scanf("%d",&a);这种形式的读入方式,功能强大。C++则提供了cin和cout的两种流输入输出方式,但是相对于scanf而言还是满了许多。
因为使用getchar()最为快捷,所以竞赛中常常使用快速读入的方式来提高效率。

下面贴上代码(比较 简单明了,看得懂就行哈)

#include<stdio.h>
#include<iostream>

using namespace std;

int x;//最终得到的完整的输入数字 

int read()
{
	int f=1,ans=0;//f为符号标记,ans为最终读入的绝对值 ,记得ans一定要赋值为0,局部变量,都是乱码,为了这个调试半天(笑哭)...
	char c;
	c=getchar();
	while(c<'0'||c>'9')//若c为符号 
	{
		if(c=='-')
		{
			f=-1;//改变符号标记 
		}
		c=getchar();//反复读入,直到读入数字为止 
	}
	while('0'<=c&&c<='9')//若c为数字 
	{
		ans=ans*10+c-'0';//将c从字符型修改为数字整型 
		c=getchar();
	}
	return ans*f;//加上符号标记 
}

int main()
{
	x=read();
	printf("%d",x);
	return 0;
}
这样就可以使用快速读入,利用char型的读入代替int型,getchar()速度更快,如何转换是关键,达到加速的效果。

猜你喜欢

转载自blog.csdn.net/doc_wu/article/details/80849995
今日推荐