介绍C语言的常见错误

2010-08-28 10:44:50来源:西部e网作者:

  1. 注意大、小写是两个不同的变量。

  如:int a=2;

  printf("%d",A);

  在编译时会出现错误,认为A没有定义。

  

  2. 一定要注意分子式中分子的书写。

  如:有一个公式为c=5(f-32)/9,5、9整除结果为0,不论f取何值,其结果都为0。后来我把5改为5.0,再运行ok!另外,还有“%”是求余符号,两个数必须要求都是整数,若是实数,必会出错。所以一定要注意数学公式的书写与C语言公式的区别。

  

  3. 要注意“=”与“==”的使用。

  “=”是赋值运算符,“==”是关系运算符。

  如:if (a==x) a=x+2;

  前者是进行比较,a是否和x相等,后者表示如果a和x相等,把x+2值赋给a。

  

  4. 输入输出的数据类型与所使用的格式说明符不一致。

  例:若a已定义为整型,b已定义为实型。

  a=3;b=3.2;

  printf("%f%d",a,b);

  编译时不给出错误提示,但运行结果与题意不符。

  

  5. 文件名中不能出现空格。

  若出现空格,就会出现这样的错误提示:“Unable to open input file”。

  

  6. 应注意分号(;)的使用。

  在包含头文件后面和main()后面以及自定义函数头后面不能加分号。若是出现“;”,错误提示为:“Declaration syntax error”。

  

  7.若程序中要用到一些库函数,在main()前面必须要包含相应的头文件。

  如在程序里用到sqrt()函数,而在前面没有包含头文件math.h,在编译时不会给出错误提示,但其运行结果是错误的。

  

  8. 在定义变量时,数组名和变量名不允许重名。

  如:float x[2],x=4.0;

  

  9. 数组长度只能是常量,不能是变量。

  如:int n=10,m[n];

  定义方式是错误的。

  

  10.注意“%s”与“%c”的使用。

  前者是输出字符串,后者是输出单字符。

  

  11.多个字符串的输入,可以通过scanf函数和gets函数。

  例如:scanf(" %s%s%s",str1,str2,str3),在多个字符串之间用一个或多个空格分隔;若使用gets函数,应为(gets(str1);gets(str2);gets(str3);)字符串之间用回车符作分隔。通常情况下,接受短字符用scanf函数,接受长字符用gets函数。而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。

  

  12.注意字符与字符串的区别。

  如:char c; c="a";这样书写是错误的。字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以"\0"作字符串结束标志,它是由系统自动加上的,所以字符串"a"实际上包含两个字符:'a'和'\0',而把它赋给一个字符变量是不行的。

  

  13.进行定义数组时,若想赋值,应直接赋值。

  如:int a[5]; a[5]={1,2,3,4,5};这样书写是错误的而且也不容易检查。根据需要,若需要5个变量,要求从a[1]开始到a[5],可以定义int a[6]。

  

  14.注意if (表达式)与 while (表达式)中的圆括号( )不能省略,否则也会出现编译错误。

  

  15.在printf函数中,除了输出字符串常量可以不用格式控制外,其余的都不能省略。

  如:printf("china")这样书写是正确的,而printf(a)就是错误的。

  

  16.要注意“,”与“;”的使用。

  逗号一般有三个用途:第一,用于变量定义之间的间隔,如int x=0,y,z;第二,用于for 循环时多个变量初始化之间的间隔;第三,用于函数像printf 与scanf中格式控制与地址列表之间的间隔,其他情况下一般用分号。

  

  17.注意scanf的使用。

  若要输入多个变量,一定要注意格式控制之间的间隔与输入的字符或数值型数据之间的间隔要一致。如:scanf("%d,%d",&&a,&&b),应当这样输入数据“12,23”,如果scanf("%d %d",&&a,&&b),应当输入“12 23”,中间有一个或多个空格都可以。

  18.C语言中的标点符号都是半角标点符号。

  总之,要想学好、掌握好一门程序设计语言,没有什么好的快捷方法,只有不断地练,不断地实践,在不断地犯错误中积累经验,实践出真知。我相信,只要坚持不懈的努力,设计程序的能力会有很大的提高。
关键词:c