博主是个大三的老学长,不想再继续这样平淡下去了,打算在在毕业前疯狂(皮)一下,再走下ACM竞赛的路。ACM是个啥呢?可以参考下百度百科上的解释ACM国际大学生程序设计竞赛,大致就是一个针对大学生的程序设计竞赛这样子,ACM搞的好了,差不多就是拿几张国家证书,保保研,拿拿高薪的样子(小声BB,博主羡慕的一比)。为了督促自己学习,在网上各种大神的吊打下有点长进,博主决定从从今天开始每天做练习,主要是从洛谷、Vijos还有VScode(最近登不上去了??)上选取题。因为是大三了,所以说不一定每天都有时间去更新博客,尽量做到每周两篇博客吧。
- Vijos:1000 A+B problem
没错,我已经菜到连基本的C语言的语法都忘记了,简直是耻辱啊,所以这题还是分享下代码。
#include<stdio.h>
int main(){
int x,y;
// 循环获取输入
while(scanf("%d %d",&x,&y)!=EOF){
printf("%d\n",x+y);
};
}
这题的基本没算法可言,语法也比较简单就不说了。不过有个好玩的需要提一下:就是C语言在输入的时候没有检查机制,比如说这题要求我输入两个数x和y但是如果我在第一次输入的时候输入了三个数会怎样呢?会不会影响道后面的结果呢?下面Po上博主测试的结果和分析。
首先呢,先测试两个数据123 321,结果显示444没问题。然后当我第二次异常输入的1 2 3的时候结果似乎没受什么影响,但是,当我第三次正常输入的时候,结果却跟设想的7不一样而是6,这显然是受到了第二次异常输入的影响计算的结果时候3+3,而不是3+4。也就是说C语言的IO输入输出流是独立于程序计算的,异常的输入并没有被舍弃,而是暂时存储等待下次程序的计算的调入(博主自己的理解)。因此在最后一次,仅仅输入一个数1程序也没有报错,并计算了4+1的结果,算是对博主理解的一个验证。当然这里还有一个问题,就是现在很多程序是并行运算的,CPU对一个程序进程执行时对IO调度的会影响的其他程序进程嘛?(猜测:对同一程序中的IO流有影响,对另一程序无影响)。