c语言快读(快读数据)
根本原理:计算机在读入数据的时候如果读入的是数据则读入的速度比较慢,而读入字符比较快。于是
我们可以考虑使用快读读入数据。
根据分块化的思想我们一般将这一部分作为一个字符串来进行调用
一、提前的准备:
#include<ctype.h>//用来调用下面的函数
isdigit(chr):一个相当强力的判断函数。使用这个可以判断chr是不是十进制数字,使用这个来判断字符是
否为数字。
isalpha(chr):一个判断函数,这个函数的用途与前面isdigit的用法是类似的,就是用来判断字符是否为字
母
二、代码的实现
long long read()
{
int neg=1,tol=0;
char chr;
chr=getchar();
while(!isdigit(chr))//如果输入的不是数字,那么要看一看是不是负号
{
if(chr=='-') neg=-1;
chr=getchar();
}
while(isdigit(chr))
{
tol=tol*10+chr-'0';//(chr-'0')代表的是字符到数字的转化;tol*10代表着进位;
chr=getchar();
}
return tol*neg;//前面为了处理负数的情况,于是使用了一个neg来判断是不是负数来保证最后结果的准确性
}
三、对于快读的一些进阶
`while(i<=n) {
char ch;
ch=getchar();
while(!isdigit(ch)) {
ch=getchar();
}
while(isdigit(ch)) {
sum=ch-'0';
ch=getchar();
while(isdigit(ch)) {//对于之后几位是不是数字进行判断
sum=sum*10+ch-'0';
ch=getchar();
}
a[i]=sum;
i++;
}
}`
快读的优越性不仅体现在可以更快的输入数据,更是体现在可以用来区分字符和真正的数字。
虽然使用getchar()进行单个字符的不断地输入,但是我们要注意最后可能会出现有几个数字连在一起
表示同一个数字。e.g.12da1ad5最后就会提取出来1、2、1、5,于是但是我们需要的数字是12、1、5,
于是如果上一位是数字,下一位也要是数字才可以。
c语言快读(快读数据)
最新推荐文章于 2024-07-25 15:54:02 发布