c语言数组常犯的错误大汇总,浅谈初学C语言常犯的几点错误

【摘要】《C语言程序设计》课程是计算机专业的重要基础课程之一,C语言具有数据结构复杂,知识点繁多,较难掌握这一特点,它的理论性和实践性都很强,对于没有编程语言基础的学生来说学习起来非常困难。本文对初学者在学习C语言中常遇到的错误作以归纳总结,供初学者及教学者分析参考。

【关键字】C语言,初学,错误

1、分号的使用错误

1)忘记加分号。最初上机编写C程序,这几乎是每个人必犯的错误,分号是C语句的组成部分,是C语句的结束,忘记写分号是一个语法错误。

2)多加分号。随着学习的进行,有一些学生会对丢分号这个错误矫枉过正,会在不该加分号地方加分号。错误程序: int main();

{ …………….. }

Int main()后面的分号是多余的,在函数首部后面要直接写函数体,不能写分号。

错语程序段: 求1+2+……+100的程序优

S=0;i=1;

While(i<=100);

{s=s+i;i++;}

在这个错误中,while(i<=100)后面的分号被识别为一条空语句,做while语句的循环体,而下面真正该做循环体的语句会被识别为独立的语句。这个不是语法错误,但会形成死循环。

3)for结构中的分号换成逗号

在for结构中的表达式一和表达式二是要用分号间隔的,下面的程序是错误的。错语语句:for(i=1,i<=100,i++) s=s+i;

i=1和i++这两个表达式后面的逗号应改成分号,这是分作间隔符的一种情况。

2、scanf函数所使用错误

当输入项是变量时忘记加取地址运算符

错误语句:scanf(“%d%d”,a,b);

3、空格、逗号、双引号等间隔符和定界符的使用错误

初写C程序的人往往感到无从下手,什么地方该加空格或逗号间隔感到很不确定,对于双引号单引号这样的定界符则往往漏加。

1)未加空格间隔。错误语句: inta,b,c;

在这个错误的例子中,原本是要定义int型变量,int 和a应用空格分隔开。

2)漏加双引号。错误语句: printf(“a=%d,a);

在这个错误中%d后面漏写了双引号,会引起语法错误,在学习过程中应当养成成对键入双引号的习惯。

4、将关运算符误写成赋值运算符的错误

在学习C语言的过程中,要逐步克服自然思维并建立起计算机思维,这个错误就是由于自然思维习惯造成的。

错误程语句 if(x=y) printf(“x=y”);

在上面的程序中,是要判断x与y是否相等,而不是要把y的值赋给x,所以要把x=y,改为x==y。

5.流程控制语句当中内嵌语句的指定错误

C语言具有书写格式自由,程序结构简洁的特点,但也使编程人员不易用固定格式控制程序结构。如流程控制语句的内嵌语句,在书写上没有固定的格式,初学者往往因此分不清程序结构,从而出现错误。

错误程序段: 求1+2+……+100的程序

S=0;i=1;

While(i<=100)

s=s+i;i++;

很显然s=s+i;和i++;这两条语句都应做while的内嵌语句,但上面的程序虽然把它们写在一行,但并不能使两条语句的地位一致,只有s=s+I;被识别为内嵌语句,而i++;被 识别为与while语句并列的语句。所以要把这两条语句用花括号括成一条复合语句,使其都成为内嵌语句,所以上面的程序段应改为:

S=0;i=1;

While(i<=100)

{ s=s+i;i++;}

6.累加变量不赋初值的错误

在C语言中,局部变量不赋初值,其当中会存有一个不确定的值,对于要存放累中和的变量,一定为其赋初值为0或要累加的第一项,对于要多次累加的,要注意第次累加之前都要把累加变量赋初值。错误程序: 求1000以内的完数。

#include

#include

Int main()

{ int i,a,s=0,n,k;

for(i=1;i<1000;i++)

{ //应在此处为s赋初值0

for(k=1;k

if(i%i==0) s=s+i;

if(s==i) printf(“%d “,i); }

}

在上面程序当中,虽在开始为s赋初值0,但在第一层循环中要进行多次累加,每次累加都应重新开始,所以要在循环体当中首先为s赋值为0。

7.引用数组时,下标越界错误

C语言中数组元素的下标是从0开始的,因此,数组当中最后一个元素的下标是数组的长度减1。

错误程序段: int a[10],i;

for(i=1;i<=10;i++) scanf(“%d”,a[i]);

在上面的程序当中i的初值应为0,终值应为9。所以应改为:for(i=0;i<10;i++) sanf(“%d”,a[i]);

8.指针学习当中的错误

1)学习指针过程当中,初学者往往会混淆指针变量和指针变量所指向的变量从而不能正确的通过指针引用变量。

错语程序段:

int a,b;

int *ptr1,*ptr2;

scanf("%d%d%d",&a,&b);

ptr1=&a; ptr2=&b;

if(ptr1>ptr2) swap(ptr1,ptr2); //错误语句

printf("%d %d \n",a,b);

指针变量的值是所指向变量的地址,而不是所指向变量的值。主函数 if 语句中不应该是两个变量的地址比较大小,应该是变量的值比较大小,正确的 if 语句:

if(*ptr1>*ptr2) swap(ptr1,ptr2);

9.结束语

学习C语言编程,应多实践,在实践中发现错误,改正错误,总结错误,从而获得提高和进步;另外,在学习的过程中要循序渐近,由易而难,学好C语言并不是很难的事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值