通过第二次编程作业的结果进行一个总结,包括出现的一些同学们经常犯的错误。

首先是同学们一些经常犯的错误:

①逻辑错误:应该使用 if , else if的分支结构,连续使用if(注意分支结构和连续使用多个if的区别),连续使用多个if if结构会进行多次判断,会造成错误答案。此外if 与 else同时使用,中间不能插入其他代码,else中有多条语句要执行时,用{}括起来。

②&&错用为&,||错用为|,==错用为=,中英文错用。

③运行时错误,输入格式与变量类型不符合。

④编译错误,int后不能直接定义一个范围的值,像是int y(1900<=y && y<=2500);和int a>=1900&&a<=2500;都是不被允许的。

⑤段错误,输入语句中缺少取地址符号&。

⑥此外相比于上一次的作业,这次作业中英文分号括号出现的错误很少,大部分的错误还是在if语句上,要搞懂if语句的逻辑,if和else if是一个分支的结构,举例说明,如果是if,else if,else这三个结构,那么最终只会执行一个的结果,而如果是if,if,else,前两个的if可能最后都会执行。

⑦在写if语句的时候,要注意缩进,保持代码的美观和直观,一眼就可以看到每个条件语句的分支。

最后以下一些具体的题目出现较多的错误:

7-7

逻辑错误,很多犯错的同学都是只简单的考虑了四年一闰的情况没有考虑百年不闰,四百年再闰的情况,还是对于闰年的逻辑判断不够明确,其实可以直接写出if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)这样一个语句就可以直接判断是不是闰年,符合四年一闰,百年不闰,四百年再闰的要求。

7-8

c语言浮点数取绝对值的函数为fabs,abs函数的参数为整型。注意包含相应的头文件,如:#include<math.h>。题目要求用double,使用float 判断浮点数是否为0不能使用==0来判断。做除法,要判断分母是否为0。使用绝对值函数错误,abs(int),fabs(),不能写数学绝对值符号。

7-9

在这道题目中,应该使用 if , else if的分支结构,因为运费只需付一次,连续使用if if (注意分支结构和连续使用多个if的区别),连续使用多个if if结构会进行多次判断,会造成错误答案。20 <= e < 30 编译器只会判断 20 <= e 不会对后面进行判断,存在逻辑错误。 || 与 &&乱用。题目要求的不是运费,而是运费+物品价格。边界判断错误, 注意审题,题目要求是小于等于还是小于。

7-10

变量类型使用不正确,应该使用double类型,使用int类型。变量重定义。sqrt拼写错误。逻辑错误:应该先判断是否能够构成三角形,再计算。必须等到变量输入值后,进行强制类型转换才有效。判断能否构成三角形,两边之和大于第三边,要判断所有的组合情况。要考虑不能构成三角形的情况。输入应该在计算前。多项式相乘在c语言中用*操作符,不可省略操作符,long double 输入为%llf。

7-11

逻辑错误,没有考虑完全情况,很多同学都没有考虑在比分为22的这种情况,常规时间内一队的比分可能为22但另一队的比分一定小于21,否则就是输出error,22也是常规时间内一队能获得的最大比分。

 

You have no rights to post comments