是不是一到 C 语言上机考试就手忙脚乱?明明在纸上写好的代码,输进电脑里要么编译报错,要么运行结果一团糟,调试半天也找不出问题在哪。眼看着时间一点点过去,题还没做完,急得满头汗?兔子哥当年第一次上机考就栽了跟头,后来总结了一套从输入到调试的流程,今天就分享给你,附带不少同学踩过的坑,一起往下看吧!
拿到题目后,第一步该做什么?
很多人拿到题就急着敲代码,结果写一半发现理解错题意,白费功夫。正确的第一步是把题目读三遍,圈出关键词。比如 “输入 5 个整数,用冒泡排序从小到大输出”,关键词是 “5 个整数”“冒泡排序”“从小到大”。有个叫小李的同学上次上机,把 “从小到大” 看成 “从大到小”,排完序才发现错了,改的时候耽误了十分钟。
为什么要先写思路再敲代码?
就像盖房子得先画图纸,写代码也得先理思路。比如做 “求素数” 的题,思路应该是:输入 n→判断 n 是否大于 1→从 2 到 sqrt (n) 循环取余→如果有余数为 0 就不是素数。把这个思路写在草稿纸上,再翻译成代码,能少犯一半错。要是不写思路直接敲,很容易写着写着就乱了,比如忘了循环条件该写到哪。
代码输入:这些细节不能错
打开编译器(一般是 Dev-C++ 或 VC6.0),新建文件后就可以输代码了。但输入时总有小错误,比如:
- 括号不配对:写 for 循环时,左括号多写一个,或者右括号少写一个,编译肯定报错。有个女生习惯写完左括号就马上补右括号,再在中间填内容,这办法挺管用。
- 分号用成中文的:输入法没切对,分号变成 “;”,编译器不认,会提示 “语法错误”。遇到这种情况,先检查所有分号是不是英文的。
- 变量名拼错:把 “sum” 写成 “sums”,虽然看着像,但编译器会认为是两个不同的变量,可能提示 “未声明的标识符”。
要是这些小错误不注意,编译时会跳出一堆报错,光改错就得花半天。
编译:报错了该怎么办?
点编译按钮(一般是 F9)后,下方会显示错误信息。很多人看到报错就慌了,其实不用怕,错误信息里藏着线索。
比如提示 “‘printf’ undeclared”,意思是不认识 printf,这时候想想,是不是忘了加 #include
要是提示 “array index out of bounds”,说明数组下标越界了,比如定义了 arr [5],却用到了 arr [5]。这时候回去检查循环条件,是不是把 i<5 写成 i<=5 了。
调试:找不到错误在哪?
代码能编译通过,但结果不对,这时候就得调试了。调试最有用的是设断点,怎么设?在要检查的行左边点一下,会出现红色圆点,运行时程序会在这停下。
比如求 1 到 10 的和,结果总是不对,就在 sum += i; 这行设断点,然后一步一步运行(按 F10),看 sum 每次加的是不是正确的 i 值。有个同学就是这么发现,自己把 i 的初始值设成了 0,导致多算了一次 0。
还有个小技巧,输出中间结果。在循环里加一句 printf ("i=% d, sum=% d\n", i, sum); 能清楚看到每一步的变化,比瞎猜强多了。
运行结果不对,可能是什么原因?
最常见的是逻辑错误,比如循环条件反了、判断符号弄混了。比如 “输出 100 以内的奇数”,有人写成 for (i=1; i<100; i+=2),这是对的,但要是写成 i+2,i 的值不变,就会一直输出 1,进入死循环。这时候得强行关闭程序,不然电脑可能卡住。
还有输入输出格式不对,比如题目要求输出 “sum=25”,你只输出 “25”,虽然数值对,但格式错了也会扣分。上次期末就有同学因为这个丢了 2 分,特别可惜。
该怎么练习上机操作?
兔子哥觉得,考前至少得完整练 5 套上机题,从读题到运行成功,按考试时间来。练的时候把遇到的错误记下来,比如 “今天犯了数组越界的错,原因是循环条件写反了”,下次看到类似错误就知道怎么改。
还有,熟悉编译器的快捷键很重要,比如编译 F9、运行 F10、设断点 F5,熟练了能省不少时间。有个学长说他考前特意练了快捷键,考试时比别人快了十分钟做完。
其实上机考试考的不只是代码能力,还有细心和心态。只要按步骤来,先理思路再写代码,遇到错误不慌,一步步排查,肯定能发挥出水平。兔子哥当年就是靠这套方法,上机考拿了满分。你要是按这个流程练,肯定也没问题,加油!
标签: 手忙脚乱 undeclared
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~