***前言: *今天是m大的机试 本来以为题目会爆难 结果题目没有想象中那么难 自己并没有走心准备 所以结果也很一般甚至很差 遇到唯一的很坑的点就是getchar()的使用 所以踏实地学学getchar()**的用法。
介绍:getchar():从内存缓存区一个一个地读入字符
1.getchar()函数进行字符的输入的读取,并不是直接从键盘这个输入设备读取,而是从输入内存缓存区区读入,顺序是输入设备->内存缓存区->程序getchar(); 2.getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) ,并非连续输入多个(while循环的作用); 3.getchar()会从输入缓冲区去读取内容,也就是说我们把所有的内容都输入完成并且按下了Enter键后,我们的输入才被送进去了输入缓冲区,这个时候,while循环才开始工作,每一次getchar()从输入缓冲区读取一个字符,然后如果不是换行符就输出。(Enter键是一个触发键,总闸的作用。) 4.附加:从缓冲区读走一个字符,相当于清除缓冲区
int x;
int k=0;
while(1)
{
scanf("%d",&x);
a[++k]=x;
if(getchar()=='\n')
{
break;
}
}
后记体会:这个问题曾经也是刚转专业到cs期末考试的第一个题的错误点,当时苦恼后匆匆了解一下原理就过了,并未真正地试图搞懂这个问题。当时水平有限,计算机知识并不系统理解内存缓存区等问题,导致当时好像就因为这一个题差点满分的期末成绩。如今回头看,又回到了起点,同样的问题3年后再次遇到,大概是命运问题也是概率问题吧。如今m大的初试败下阵来,机试水过,接下来的面试,是一场死局,我也决定去赴死了,真是勇气啊,直面惨淡的人生,惨淡的境地,回到了原点。 小小的感悟警醒着我今后面对人生的每一个重要的难题时刻时 切不可囫囵吞枣 学知识做人一定要脚踏实地,加入自己的理解与想法。放低姿态,清零。归零,未来的日子,一定要坚持下去啊,我不会放弃的!
|