(1)忘记定义变量
例如:
int main()
{
x = 3;
y = 6;
printf("%d\n", x + y);
}
c语言要求对程序中用到的每一个变量都要定义其类型,上面程序中没有对x,y进行定义,应该在函数的开头加上int x,y;
(2)输入输出的数据类型与我们输入输出的格式不一样
例如:
int a = 10;
float b = 4.5;
printf("%f, %d\n", a, b);
这显然是错误的
(3)未注意int和short数据的数值范围 (-2^15~2^15-1)
举例:
int a = 89034;
printf(”%d\n“, a);
此时a的值已经超出了整形的范围,打印出来的值是错误的,对于超过范围的数要用long型
printf(”%ld\n“, a);
(4)在使用scanf函数时,忘记用取址符&
举例:
scanf(”%d%d“,a,b);
这是个很常见的错误,没有加取址符应该为
scanf(”%d%d“,&a, &b);
还要注意的是scanf函数里不用”\n“结尾
scanf(”%d%d\n“, a, b);
这是错误的,要去掉\n
(5)输入数据的形式与要求不符
scanf(”%d%d“, &a, &b);
有人按照这种方法输入:
6,8 中间用逗号分开的这是错误的
这种数据应该用回车来输入。
scanf(“%d,%d”, &a, &b);
这种输入时才采用加逗号的形式
6,8
(6)用scanf函数输入数据时,在数组名前加了取址符&
例如:
char a[20];
scanf("%s", &a);
这种写法是错误的,在对变量输入数据时应该加&,意思是把数据传到这个地址去,而数组名a本身就是地址,再加&就是多余了。
(7)用scanf函数向数值型数组输入数据时,用数值型数组名
例如:
int a[20];
scanf("%s", a);
这是错误的,正确的如下:
int a[20] = {0};
for(int i = 0; i < 20; i++){
scanf("%d",&a[i]);
}
(8)语句后面没加分号
例如:
a = 3
b = 4;
系统在检查到第二行时会报错,但是是第一行的结尾没有加分号导致的,很不好发现
(9)在不该加分号的地方加了分号
例如:
if(a > b);
{
printf("a 比b 大\n");
}
由于在(a > b)后面多加了一个分号,前后没有关联性,函数都会答应”a比b大“,失去了它原本的判断的意义。
(10)容易混淆”=“ 和”==“
注意这是两个不同的运算符”=“是赋值运算符,把右边的值赋给左边,是一个值拷贝的过程,”==“是关系运算符,用来判断两个表达式是否相等。
(11)括号不配对
在一个程序中存在多个括号时容易出现这种错误,在建立括号时,我们最好一次把左右括号打全,避免出现错误。
(12)在使用标识符时,混淆了大写字母和小写字母的区别
例如:
int main()
{
int A, B, C ;
a = 2;
b = 3;
c = a +b;
printf("%d\n", a , b, c);
}
本题定义了大写字母,使用时用了小写字母,系统把大小写看做两个不同的变量,认为小写字母未经定义使用出错。