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

读入优化

时间:2019-12-17 20:49:25      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:假设   针对   code   char   处理   etc   amp   std   hellip   

首先,读入优化这里是只是针对整数,getchar读字符是非常快的,所以我们就用getchar了。(下面都假设输入的数为x)

负数处理

很简单,用一个标志变量f,开始时为1,当读入了’-’时,f变为-1,最后x*=f即可

绝对值部分处理

显然getchar每次只能读一位,所以,每当读了一位时x*=10,为这一位“留位置”。 
举个例子:现在读入了123,x为123,再读入了一个4,x*=10,变为了1230,现在它的最后一位空出来了,正好留给4,x+=4,x就变为了1234,当然,这里的’4’是char类型,需要减去’0’才是4,即:x=x*10+s-‘0‘(s为当前输入的字符)

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 using namespace std;
 5 int read()
 6 {
 7     int x = 1,a = 0;
 8     char ch = getchar();
 9     while(ch < 0 || ch > 9){//如果读进来的不是数字……
10         if(ch == -)x = -1;//判断负号
11         ch = getchar();
12     }
13     while(ch <= 9&&ch >= 0){//如果读进来的是数字……
14         a = a * 10 + ch - 0;
15         ch = getchar();
16     }
17     return x*a;
18 }
19 int main()
20 {
21     while(1){
22     int a = read();
23     printf("%d\n",a);}
24     return 0;
25 }

读入优化

标签:假设   针对   code   char   处理   etc   amp   std   hellip   

原文地址:https://www.cnblogs.com/very-beginning/p/12056501.html

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