关于期中考试的感悟和反思
在经过100分钟的上机后,第一学期的期中考试就此落下帷幕。紧接着是新生赛,大脑CPU本就已经烧坏的我更是无力招架,没有AC一道题。这次考试可谓惨烈至极,究其原因,主要还是心态以及审题不仔细。第一道题,我信心满满地编写了程序,结果实际输出的结果总是和预期结果不一致。之后才明白,原来赋值语句a=b输出的时候必须加括号,且输出的是a的值,并将b的值赋给了a,此时a和b的值相等,这也就是为什么之后输出a!=b的结果会是0。可以说,这道题错了,我不遗憾。但这也让我的心态有些崩了。接着第二、三、四题都很简单,主要考查if语句。但一到第五题,又让我的心凉了一截。明明再熟悉不过的斐波那契数列,测试用例顺利通过,但提交后却是只有90%用例通过。后来我才明白,原来当来到斐波那契第48项与第47项的比值输出时,由于数组类型是int类型,而此时斐波那契数列第48项的数据长度已经超过了int类型,所以会导致比值输出错误,只需将数组类型改成long或者long long就可以了。之后是敲7游戏,当时太紧张了,愣是没想出来,最后只有10%测试数据通过。之后就是小明学密码学(其实就是大素数分解问题),当时直接蒙了,心态炸裂。后来我想出了一个绝佳的方法:
#include<iostream> using namespace std; int main() { int i,n; cin>>n; for(i=2;i<=n;i++) { if(n%i==0) { cout<<i<<" "<<n/i; break; } } return 0; }这么写虽说不严谨,但是也能通过全部测试数据,是不是很简单?
之后就是判断数据重复(判断一个数组中是否有重复元素)。当时同样毫无头绪,后来仔细一想,立刻顿悟:无非就是运用双层循环,将第i(i=1~10)个数与其他9个数依次比较,如果有重复,立刻将状态变量flag从1变成0,即可解决。
下一道题是小明求和(由n个正整数组成的数组a,出了t道题,每道题求和范围为数组中第L元素到第R个元素之间的和)代码打到一半,时间到了,没能打完,可惜了。
然而,当我知道最后一道题是输出五智会的吉祥物“智多星”图案时,顿时懊恼不已。这也让我吸取了一条教训:在考试刚开始的时候,一定要把所有题都看一遍再做题。
总结一下,就是考试开始先莫急,先看题目后做题。遇到不会的题切勿慌,心态若崩全盘输。遇到难题切勿恋战,做题一定由易到难。审题一定记于心,否则后果很严重。
总结一下,就是考试开始先莫急,先看题目后做题。遇到不会的题切勿慌,心态若崩全盘输。遇到难题切勿恋战,做题一定由易到难。审题一定记于心,否则后果很严重。