1,变量未定义就使用,中英文符号混用,单词拼写错误,计算公式书写错误,如乘法表达式2x-1, 次方表达式 2^4。
解决方法:注意c语言语法,使用oj系统的测试用例或本地的编译器对代码进行运行测试,如有编译错误,注意观察错误信息,对错误进行定位。 2 * x - 1, 使用pow(2, 4) (包含头文件math.h)。
2,格式错误,输出格式与题目要求不一致。
解决方法:注意题目的输出格式要求,按要求进行输出,不要多输出或少输出。对于输出一段固定的话,可以直接将输出语句复制到输出语句的代码中。
3,类型使用错误,float double的使用错误。
解决方法:float double为单精度和双精度,精度不同,需要根据题目要求进行选择。
4,多个if条件分支导致可能会出现重复判断。
解决方法:使用if,多个else if条件分支保证只执行一个条件分支。
5,判断条件写为if(a==b==c)以及if(1<=a<=3)。
解决方法:正确书写为if(a==b&&b==c)以及if(a>=1&&a<=3),注意数学表达式和计算机表达式的区别,同理还有相乘时不要忘记*,是a*b,而不是直接写成ab。
6,浮点数判断等于0直接用==。
解决方法:浮点数是近似值,一般用精度判断,取绝对值函数fabs(x)<1e-6,这样就可以近似为0了。
7,定义错误int y(1900<=y&&y<=2500);int a>=1900&&a<=2500;以及赋值语句不能是不等式,例如n<=10000;这些都是不被允许的。
8,==错用为=,&&错用为&,||错用为|,常见书写错误,中英文逗号,分号不分,输入函数scanf里的读取类型写错,忘记&。
9,运行超时,未控制好循环变量,如忘记对循环变量进行操作:忘记i++、i--。以及循环次数问题注意,出现很多多一次或少一次的问题。
解决方法:循环体中注意对循环变量进行修改,注意循环结束条件,可以自己使用一个案例去模拟一下循环过程,看看是否会造成死循环的条件。注意循环的执行次数,可以使用一个例子进行测试,注意循环变量的取值范围。
10,判断一个字符是否在'a'-'z'和'A'-'Z'中,注意'a'-'z'和'A'-'Z'的ASCII码是两段,是不连续的,注意'0'和0的区别。
解决方法:判断字符ch是否在'0'和'9'之间,ch >= '0' && ch <= '9'。
11,错误:int类型越界问题。
解决方法:注意int类型变量的取值范围。
12,二层for循环使用同一个循环变量,导致死循环。
解决方法: 在使用嵌套的for循环的时候注意不要在多层for循环中使用同一个循环变量,每一层循环使用不同的循环变量。
13,定义数组时,例如int a[n]时n是不确定的例如n是接下来要读取的值,这样是错误的。
解决方法:如果事先不知道需要的空间大小,可以通过一些数据结构来实现,比如链表,通过动态分配空间,可以自由添加删除元素。
14,/n错用为/r。
解决方法:多个字符的连续输入的结束是\n。\n是在下一行输入输出;\r是擦除本行前面的所有内容,光标回到本行第一字符开始输出。
15,函数缺少函数头,函数头书写错误:如缺少返回值、末尾有多余的分号,函数体中缺少return语句(对于返回值不为void类型的函数,return语句不可缺少)
解决方法:函数定义为:
// 返回类型 函数名 (参数列表)
return_type function_name( parameter list )
{
body of the function // 函数体
return variable; // variable的类型为 return_type
}
函数声明为: return_type function_name(parameter list)。
Comments