APP下载

大一新生C语言上机常见错误总结

2020-03-27杨仪代祥光张先休吴鸿娟朱丙丽

卷宗 2020年3期
关键词:语法错误上机C语言

杨仪 代祥光 张先休 吴鸿娟 朱丙丽

摘 要:C语言是一门实践性很强的学科,哪怕只有一点语法错误程序也不能运行。本文将大一新生容易犯的一些语法错误、逻辑错误、运行错误列举部分出来并提出解决方案,帮助初学者更好掌握C语言。

关键词:C语言;上机;语法错误;逻辑错误

基金项目:2018重庆市高等教育教学改革研究项目“新工科背景下的计算机卓越工程师多元复合培育系统的构建”(项目编号:183051)。

C语言数据类型多,运算符多,语法规则较灵活。大一新生刚刚接触编程语言,还不能完全理解计算机的工作原理,导致上机编写程序常常出现很多语法错误、逻辑错误、运行错误[1-8]。笔者将大一新生常犯的一些上机错误总结出来,仅供参考。

1 语法错误

1.1 main函数使用错误

由于C99标准后,C语言main函数的返回值应是整型值,返回0表示正常返回,返回非0表示异常,便于操作系统判断状态。VC++6.0版本还允许返回值为空,有些教材内容也没有更新,程序移植到其它编译器就会出错,如Visual studio,Devc++。一般的语法错误通常会有错误提示,并且错误提示能定位到错误的行或者相邻的行,但有些语法错误提示不容易看出来出错的地方。例如,main函数名字输错,由于main函数名字并非关键字,输错后并不会提示到main函数那一行,main函数是主调函数,输错就没法调用其它函数,大一新生不习惯分析错误提示,习惯性看源程序,稍微不仔细就没法看出错误。

1.2 printf函数和scanf函数使用错误

printf函数是格式化输出函数,用法为printf(“格式控制字符串”,输出表列),但学生常常将输出参数也包含到格式控制字符串中,导致编译运行能够通过,但不能输出正确结果。

scanf函数是格式化输入函数,用法为scanf(“格式控制字符串”,输入项地址列表),学生常常在格式控制字符串中控制输入浮点型数据的精度,将printf函数和scanf函数的用法混淆。另外,输入项地址列表对基本类型变量常常忘记写取地址符号&。程序运行后输入数据时不按输入格式输入。例如程序中输入几个整型数据中间用了逗号,但输入的时候却用了空格,导致无法接收到正确的数据。

1.3 返回局部变量的地址

局部变量在函数调用后就会被释放掉,返回局部变量的地址是不合法的,只能返回全局变量或static变量的地址。修改的方法就是在fun函数中另外再定义两个static变量m和n,将局部变量x,y的值赋值给m和n,返回 m和n的地址即可。

除了这几个常用函数用法错误,新生还容易掉C语言语句符号“;”以及花括号不配对,忘记写头文件包含编译预处理命令等等问题。

2 逻辑错误

语法错误一般会有错误提示,但逻辑错误不会给出错误提示,要想检查逻辑错误就很困难,下面列举几种常见的逻辑错误。

2.1 变量使用前未赋初值

变量使用前如果未赋初值,编译器通常会给变量赋一个随机数,导致程序运行结果和预想的不一样。例如1到100累加,如果没有对存放累加结果的变量赋初值,就会得不到预想的5050的结果。一般情况下,如果是累加,那么存放结果的变量初值就赋为0,不影响最后的结果,如果是连乘,例如存放n的阶乘的变量,初值就要赋为1,不影响最后的结果。如果是在程序中用作标志的变量,则将标志变量赋值为1或者0均可。例如求素数的程序,先将标志变量赋值为1,表明先默认所求的数是素数,若程序中有判断不是素数的语句,再将标志變量赋值为0。

2.2 未考虑某些函数结束符的使用

下面程序原意是使用fgets函数从源文件yangyi.txt中每次读入10个字符放入buffer数组中并输出。由于fgets函数每次读入字符后会加上结束符,导致程序运行结果和预想的不一致。

只需要将for循环中i<10修改为i

2.3 循环判断条件不等式两边都为变量

下面程序原意是从键盘输入5个整型数存放在数组a中,并利用指针变量输出,但输出时for循环条件判断语句左右两边都为变量,导致程序异常退出。需要将不等式p

C语言还存在一些逻辑错误,如数组下标越界等,这些错误都不容易发现,需要不断通过上机操作实践体会。

3 运行错误

初学者还可能犯一些运行错误,例如同时打开两个含有main函数的源文件运行,控制台应用程序窗口不关闭又打开另一个源文件运行。

4 总结

C语言是一门实践性很强的学科,程序错误种类形式多种多样,需要在实践中修改各种程序错误,不断总结经验以提高编程能力。

参考文献

[1]田金琴,丁红胜.C语言教学中常见的运行错误和逻辑错误[J].电脑学习,2006(4):23-24.

[2]牛雅莉,赵芳林.C语言中常见逻辑错误分析[J].北京工业职业技术学院学报(2):21-24.

[3]杨晓峰.C语言使用中常见的语法和逻辑错误分析[J].开封大学学报,2012(02):89-91.

[4]程静飞,郑凤婷.试析C语言常见错误[J].电脑编程技巧与维护(16):8-9,11.

[5]王琼.C语言上机常见错误分析[J].洛阳大学学报(4):71-73,92.

[6]刘臻.C语言上机实践教学方法研究[J].课程教育研究,2015(16):255-256.

[7]杨路明.C语言程序设计教程(第四版)[M].北京邮电大学出版社,2018.

[8]谭浩强.C程序设计(第四版)[M].清华大学出版社,2010.

作者简介

杨仪(1982-),女,汉族,重庆綦江,博士,讲师,研究方向:神经网络,非线性动力系统。

猜你喜欢

语法错误上机C语言
周金应
标准化护理程序对体外膜肺氧合术患者上机各阶段用时的影响
基于Visual Studio Code的C语言程序设计实践教学探索
上机数控“可疑”的高毛利率
基于C语言的计算机软件编程
汉语负迁移对英语写作的影响及启示
高中英语写作中的语法错误分析
高职高专院校C语言程序设计教学改革探索
论子函数在C语言数据格式输出中的应用