C语言实践中易出现的编程错误及解答
2014-12-13余丽红龙诺春林春景
余丽红++龙诺春++林春景
摘要:C语言程序设计实践教学是整个课程中非常重要的一个环节。它为学生提供学以致用的平台。实践环节的充分有效利用直接关系到学生程序设计能力的提高。本文根据作者多年的一线教学经验,将C语言课程实践项目里学生经常出现的共性编程错误进行汇总,并提供解答方案,以此培养学生在编程中自主查错、纠错的习惯,提高自主学习能力和编程能力。
关键词:C语言程序设计 实践教学 自主学习
中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2014)08-0220-02
1 引言
C语言程序设计是一门高级编程语言,具有较强的理论性和实践操作性。掌握C语言程序设计基础理论和编程技巧对学生继续学习后续编程课程有重要的作用[1]。“实践教育,是指围绕教育教学活动目的而开展的、学生亲身体验的实践活动”[2],是实现人才培养目标的重要一环[3]。C语言教学中科学合理地利用实践教学环节既可以实现将语法知识点学以致用,同时能够培养学生的自主学习能力和解决问题的能力。
2 C程序的编写过程
学生在实践环节中使用Visual C++6.0软件进行C语言程序编程练习。Visual C++是一个功能强大的可视化软件开发工具,已成为专业程序员进行软件开发的首选工具。由于C++是由C语言发展起来的,也支持C语言的编译。利用C语言进行编程要经过:编辑、编译、连接、运行等过程。编辑即在VC6.0界面编写和修改程序代码,编辑完后要保存。C语言程序的源文件标准扩展名后缀是.C。编译是将源程序翻译成计算机能够直接识别的二进制代码。在编译的过程中首先会检查程序是否满足语法要求,如有语法错误,则在VC6.0的Build窗口会出现错误的类型和位置,以方便编程人员继续编辑和修改直至语法完全正确。如果编辑的程序语法符合规则,则编译通过后Build窗口会显示0错误,0警告,同时生成后缀为obj的二进制目标文件。通过编辑和编译后的就进行连接生成后缀为exe的可执行文件。最后点击运行命令,程序就在新弹出的窗口中被运行并显示相应的结果。
3 学生常见的编程错误及解答
本文选用笔者在教学中用到的一个典型程序进行展开。编写该程序的要求如下:(利用指针)把一个整数插入到由小到大排列的10个数的数列中,插入后仍然保持由小到大的顺序排列。从键盘输入排列好的10个数,然后输入一个需要插入的数字,回车后,屏幕输出插入数字后拍好序的11个。
完成该项目的总体思路是利用主函数调用一个排序函数。综合运用了函数定义、函数调用、数组、循环语句等知识点。对于学生来说,是有一些难度的项目。做为C语言的教师,要传授学生在编写程序前画流程图的良好习惯。流程图是算法的一个整体纲要,依据流程图,编程的思路会更清晰,编程的条理也会更顺畅。
利用VC6.0来编写上述程序的具体操作步骤如下:
(1)创建一个新的空工程:启动VC6.0,点击文件-->新建,在工程的菜单下选择Win32 Console Application,工程名字Newint,保存在桌面。点击完成后会弹出Win32 Console Application类型程序的配置界面,创建一个新的C语言空工程。点击完成并确认。新工程创建完成。
(2)添加一个.c源文件到第一步新建的工程中:点击文件-->新建,在文件的菜单下选择C++ Source File,文件名为Newint.c,保存默认。点击完成后就弹出VC6.0编辑器的对话框,如图3.1,在Newint.c对话框的空白界面光标跳动处就可以开始编写程序。
(3) 程序编写后就进行编译,根据错误提示进行修改直至正确。
在实践环节中,学生感觉最有难度的是第(3)步。一是因为软件是英文版的,而学生的英文水平普遍偏低;二是因为学生作为C语言的初学者,很难发现编程中的语法错误。因此笔者就以上述项目为例来讲解学生在编程中易出现的错误及解决方法。本文提供一个学生所编写的程序。
编译常见的错误如下:(1)fatal error:Cannot open include file:'sdtio.h': No such file or directory。-头文件写错,'sdtio.h'应该改为'stdio.h'。此头文件表示标准输入输出头文件。std是standard的缩写。出现此类错误主要是学生对标准输入输出头文件缺少深入理解及对于标准这个单词不熟悉。
(2)syntax error:missing ';' before 'type'。该句的含义是在类型前面少了分号。原语句为:int a[11],i 直接换行到int *p=a;错误提示前一行的C语言语句结束时没有加分号。这类错误对于初学者很容易出现。很多学生在写程序时会按回车换行,而导致忘记分号。作为基础语法学生要求牢牢掌握C语言中语句结束用分号。
(3)error C2133:'ar':unknown size。此错误的意思是未知的尺寸。原语句为:int ar[];
出现此错误的原因是学生在定义数组ar时语法不对。在定义数组时,要指明数组的大小即其存放元素的个数。完成上述项目需要用到整型数组来存放需要排序的11个数。该数组的长度最少为11.所以将原语句修改为:int ar[11];使用数组时还有一个容易出现的错误是数组下标的使用。比如ar这个数组,它的元素下标为0—10共11个元素。学生刚编程时很容易忽略混淆,会认为最后一个元素为ar[11]。教师在教学过程要重点强调数组下标问题。
(4)error C2198:'scanf':too few actual parameters。此错误的意思是输入函数scanf参数太少。程序原语句为:scanf("%d"&a[i]);出现错误的原因是取地址符前面少了一个逗号。出现此类错误主要是因为学生比较粗心。还有部分学生由于对输入语句的语法掌握不牢固,会出现编程时漏掉取地址符。缺少地址符,程序编译和连接都不会提示出错,但在最后运行的命令框里输入数据时会出错。
(5)error C2018: unknown character '0xa3'。表示该语句行出现未知字符。原因是输入程序时采用的输入法为中文。应改为英文输入状态。C语言程序中除了汉字,其他的字符都要求是英文输入状态。
(6)error C2143: syntax error : missing ';' before ')'。表示括号前面少了分号。原语句如下:for(i=1,i<=10,i++)。出现错误的原因是for语句中的三个表达式隔开符号采用了逗号,正确的语句是三个表达式之间用分号隔开。因为语句结束是用分号。
(7)fatal error C1004: unexpected end of file found。该错误表示文件意外结束。出现的原因是程序中有如下语句:for(i=0;i<11;i++){printf("%d\t",a[i]);。很显然是for语句的一对大括号少了结束的一半。在C语言中,复合语句都用一对大括号括起来。学生在编程中,当写了很多行语句后很容易就忘记剩下的一半。。除了for语句用大括号,还有if、while等语句,以及构造类型比如共用体,结构体在定义时也用一对大括号,main程序体也是用一对大括号括起来。所以学生在编程时最好养成一开始就把一对大括号写上的良好编程习惯。然后在大括号内填写语句。
4 结语
本文根据作者的教学经验,对C语言实践教学中学生在编程时容易出现的共性问题进行了阐述和解析。参考这些常见的问题,学生在编程时可以提高调试程序的效率,同时可以促进学生培养良好的变编程风格。
参考文献
[1]余丽红.基于CDIO的C语言程序设计课程教学改革探究[J].中国科教创新导刊,2011,16:150.
[2]顾秉林.加强实践教育 培养创新人才[J].清华大学教育研究,2004,25(6):1-5.
[3]陈支武.完善实践教学体系 培养应用型创新人才[J].实验室研究与探索研究,2012,31(8):167-170.endprint
摘要:C语言程序设计实践教学是整个课程中非常重要的一个环节。它为学生提供学以致用的平台。实践环节的充分有效利用直接关系到学生程序设计能力的提高。本文根据作者多年的一线教学经验,将C语言课程实践项目里学生经常出现的共性编程错误进行汇总,并提供解答方案,以此培养学生在编程中自主查错、纠错的习惯,提高自主学习能力和编程能力。
关键词:C语言程序设计 实践教学 自主学习
中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2014)08-0220-02
1 引言
C语言程序设计是一门高级编程语言,具有较强的理论性和实践操作性。掌握C语言程序设计基础理论和编程技巧对学生继续学习后续编程课程有重要的作用[1]。“实践教育,是指围绕教育教学活动目的而开展的、学生亲身体验的实践活动”[2],是实现人才培养目标的重要一环[3]。C语言教学中科学合理地利用实践教学环节既可以实现将语法知识点学以致用,同时能够培养学生的自主学习能力和解决问题的能力。
2 C程序的编写过程
学生在实践环节中使用Visual C++6.0软件进行C语言程序编程练习。Visual C++是一个功能强大的可视化软件开发工具,已成为专业程序员进行软件开发的首选工具。由于C++是由C语言发展起来的,也支持C语言的编译。利用C语言进行编程要经过:编辑、编译、连接、运行等过程。编辑即在VC6.0界面编写和修改程序代码,编辑完后要保存。C语言程序的源文件标准扩展名后缀是.C。编译是将源程序翻译成计算机能够直接识别的二进制代码。在编译的过程中首先会检查程序是否满足语法要求,如有语法错误,则在VC6.0的Build窗口会出现错误的类型和位置,以方便编程人员继续编辑和修改直至语法完全正确。如果编辑的程序语法符合规则,则编译通过后Build窗口会显示0错误,0警告,同时生成后缀为obj的二进制目标文件。通过编辑和编译后的就进行连接生成后缀为exe的可执行文件。最后点击运行命令,程序就在新弹出的窗口中被运行并显示相应的结果。
3 学生常见的编程错误及解答
本文选用笔者在教学中用到的一个典型程序进行展开。编写该程序的要求如下:(利用指针)把一个整数插入到由小到大排列的10个数的数列中,插入后仍然保持由小到大的顺序排列。从键盘输入排列好的10个数,然后输入一个需要插入的数字,回车后,屏幕输出插入数字后拍好序的11个。
完成该项目的总体思路是利用主函数调用一个排序函数。综合运用了函数定义、函数调用、数组、循环语句等知识点。对于学生来说,是有一些难度的项目。做为C语言的教师,要传授学生在编写程序前画流程图的良好习惯。流程图是算法的一个整体纲要,依据流程图,编程的思路会更清晰,编程的条理也会更顺畅。
利用VC6.0来编写上述程序的具体操作步骤如下:
(1)创建一个新的空工程:启动VC6.0,点击文件-->新建,在工程的菜单下选择Win32 Console Application,工程名字Newint,保存在桌面。点击完成后会弹出Win32 Console Application类型程序的配置界面,创建一个新的C语言空工程。点击完成并确认。新工程创建完成。
(2)添加一个.c源文件到第一步新建的工程中:点击文件-->新建,在文件的菜单下选择C++ Source File,文件名为Newint.c,保存默认。点击完成后就弹出VC6.0编辑器的对话框,如图3.1,在Newint.c对话框的空白界面光标跳动处就可以开始编写程序。
(3) 程序编写后就进行编译,根据错误提示进行修改直至正确。
在实践环节中,学生感觉最有难度的是第(3)步。一是因为软件是英文版的,而学生的英文水平普遍偏低;二是因为学生作为C语言的初学者,很难发现编程中的语法错误。因此笔者就以上述项目为例来讲解学生在编程中易出现的错误及解决方法。本文提供一个学生所编写的程序。
编译常见的错误如下:(1)fatal error:Cannot open include file:'sdtio.h': No such file or directory。-头文件写错,'sdtio.h'应该改为'stdio.h'。此头文件表示标准输入输出头文件。std是standard的缩写。出现此类错误主要是学生对标准输入输出头文件缺少深入理解及对于标准这个单词不熟悉。
(2)syntax error:missing ';' before 'type'。该句的含义是在类型前面少了分号。原语句为:int a[11],i 直接换行到int *p=a;错误提示前一行的C语言语句结束时没有加分号。这类错误对于初学者很容易出现。很多学生在写程序时会按回车换行,而导致忘记分号。作为基础语法学生要求牢牢掌握C语言中语句结束用分号。
(3)error C2133:'ar':unknown size。此错误的意思是未知的尺寸。原语句为:int ar[];
出现此错误的原因是学生在定义数组ar时语法不对。在定义数组时,要指明数组的大小即其存放元素的个数。完成上述项目需要用到整型数组来存放需要排序的11个数。该数组的长度最少为11.所以将原语句修改为:int ar[11];使用数组时还有一个容易出现的错误是数组下标的使用。比如ar这个数组,它的元素下标为0—10共11个元素。学生刚编程时很容易忽略混淆,会认为最后一个元素为ar[11]。教师在教学过程要重点强调数组下标问题。
(4)error C2198:'scanf':too few actual parameters。此错误的意思是输入函数scanf参数太少。程序原语句为:scanf("%d"&a[i]);出现错误的原因是取地址符前面少了一个逗号。出现此类错误主要是因为学生比较粗心。还有部分学生由于对输入语句的语法掌握不牢固,会出现编程时漏掉取地址符。缺少地址符,程序编译和连接都不会提示出错,但在最后运行的命令框里输入数据时会出错。
(5)error C2018: unknown character '0xa3'。表示该语句行出现未知字符。原因是输入程序时采用的输入法为中文。应改为英文输入状态。C语言程序中除了汉字,其他的字符都要求是英文输入状态。
(6)error C2143: syntax error : missing ';' before ')'。表示括号前面少了分号。原语句如下:for(i=1,i<=10,i++)。出现错误的原因是for语句中的三个表达式隔开符号采用了逗号,正确的语句是三个表达式之间用分号隔开。因为语句结束是用分号。
(7)fatal error C1004: unexpected end of file found。该错误表示文件意外结束。出现的原因是程序中有如下语句:for(i=0;i<11;i++){printf("%d\t",a[i]);。很显然是for语句的一对大括号少了结束的一半。在C语言中,复合语句都用一对大括号括起来。学生在编程中,当写了很多行语句后很容易就忘记剩下的一半。。除了for语句用大括号,还有if、while等语句,以及构造类型比如共用体,结构体在定义时也用一对大括号,main程序体也是用一对大括号括起来。所以学生在编程时最好养成一开始就把一对大括号写上的良好编程习惯。然后在大括号内填写语句。
4 结语
本文根据作者的教学经验,对C语言实践教学中学生在编程时容易出现的共性问题进行了阐述和解析。参考这些常见的问题,学生在编程时可以提高调试程序的效率,同时可以促进学生培养良好的变编程风格。
参考文献
[1]余丽红.基于CDIO的C语言程序设计课程教学改革探究[J].中国科教创新导刊,2011,16:150.
[2]顾秉林.加强实践教育 培养创新人才[J].清华大学教育研究,2004,25(6):1-5.
[3]陈支武.完善实践教学体系 培养应用型创新人才[J].实验室研究与探索研究,2012,31(8):167-170.endprint
摘要:C语言程序设计实践教学是整个课程中非常重要的一个环节。它为学生提供学以致用的平台。实践环节的充分有效利用直接关系到学生程序设计能力的提高。本文根据作者多年的一线教学经验,将C语言课程实践项目里学生经常出现的共性编程错误进行汇总,并提供解答方案,以此培养学生在编程中自主查错、纠错的习惯,提高自主学习能力和编程能力。
关键词:C语言程序设计 实践教学 自主学习
中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2014)08-0220-02
1 引言
C语言程序设计是一门高级编程语言,具有较强的理论性和实践操作性。掌握C语言程序设计基础理论和编程技巧对学生继续学习后续编程课程有重要的作用[1]。“实践教育,是指围绕教育教学活动目的而开展的、学生亲身体验的实践活动”[2],是实现人才培养目标的重要一环[3]。C语言教学中科学合理地利用实践教学环节既可以实现将语法知识点学以致用,同时能够培养学生的自主学习能力和解决问题的能力。
2 C程序的编写过程
学生在实践环节中使用Visual C++6.0软件进行C语言程序编程练习。Visual C++是一个功能强大的可视化软件开发工具,已成为专业程序员进行软件开发的首选工具。由于C++是由C语言发展起来的,也支持C语言的编译。利用C语言进行编程要经过:编辑、编译、连接、运行等过程。编辑即在VC6.0界面编写和修改程序代码,编辑完后要保存。C语言程序的源文件标准扩展名后缀是.C。编译是将源程序翻译成计算机能够直接识别的二进制代码。在编译的过程中首先会检查程序是否满足语法要求,如有语法错误,则在VC6.0的Build窗口会出现错误的类型和位置,以方便编程人员继续编辑和修改直至语法完全正确。如果编辑的程序语法符合规则,则编译通过后Build窗口会显示0错误,0警告,同时生成后缀为obj的二进制目标文件。通过编辑和编译后的就进行连接生成后缀为exe的可执行文件。最后点击运行命令,程序就在新弹出的窗口中被运行并显示相应的结果。
3 学生常见的编程错误及解答
本文选用笔者在教学中用到的一个典型程序进行展开。编写该程序的要求如下:(利用指针)把一个整数插入到由小到大排列的10个数的数列中,插入后仍然保持由小到大的顺序排列。从键盘输入排列好的10个数,然后输入一个需要插入的数字,回车后,屏幕输出插入数字后拍好序的11个。
完成该项目的总体思路是利用主函数调用一个排序函数。综合运用了函数定义、函数调用、数组、循环语句等知识点。对于学生来说,是有一些难度的项目。做为C语言的教师,要传授学生在编写程序前画流程图的良好习惯。流程图是算法的一个整体纲要,依据流程图,编程的思路会更清晰,编程的条理也会更顺畅。
利用VC6.0来编写上述程序的具体操作步骤如下:
(1)创建一个新的空工程:启动VC6.0,点击文件-->新建,在工程的菜单下选择Win32 Console Application,工程名字Newint,保存在桌面。点击完成后会弹出Win32 Console Application类型程序的配置界面,创建一个新的C语言空工程。点击完成并确认。新工程创建完成。
(2)添加一个.c源文件到第一步新建的工程中:点击文件-->新建,在文件的菜单下选择C++ Source File,文件名为Newint.c,保存默认。点击完成后就弹出VC6.0编辑器的对话框,如图3.1,在Newint.c对话框的空白界面光标跳动处就可以开始编写程序。
(3) 程序编写后就进行编译,根据错误提示进行修改直至正确。
在实践环节中,学生感觉最有难度的是第(3)步。一是因为软件是英文版的,而学生的英文水平普遍偏低;二是因为学生作为C语言的初学者,很难发现编程中的语法错误。因此笔者就以上述项目为例来讲解学生在编程中易出现的错误及解决方法。本文提供一个学生所编写的程序。
编译常见的错误如下:(1)fatal error:Cannot open include file:'sdtio.h': No such file or directory。-头文件写错,'sdtio.h'应该改为'stdio.h'。此头文件表示标准输入输出头文件。std是standard的缩写。出现此类错误主要是学生对标准输入输出头文件缺少深入理解及对于标准这个单词不熟悉。
(2)syntax error:missing ';' before 'type'。该句的含义是在类型前面少了分号。原语句为:int a[11],i 直接换行到int *p=a;错误提示前一行的C语言语句结束时没有加分号。这类错误对于初学者很容易出现。很多学生在写程序时会按回车换行,而导致忘记分号。作为基础语法学生要求牢牢掌握C语言中语句结束用分号。
(3)error C2133:'ar':unknown size。此错误的意思是未知的尺寸。原语句为:int ar[];
出现此错误的原因是学生在定义数组ar时语法不对。在定义数组时,要指明数组的大小即其存放元素的个数。完成上述项目需要用到整型数组来存放需要排序的11个数。该数组的长度最少为11.所以将原语句修改为:int ar[11];使用数组时还有一个容易出现的错误是数组下标的使用。比如ar这个数组,它的元素下标为0—10共11个元素。学生刚编程时很容易忽略混淆,会认为最后一个元素为ar[11]。教师在教学过程要重点强调数组下标问题。
(4)error C2198:'scanf':too few actual parameters。此错误的意思是输入函数scanf参数太少。程序原语句为:scanf("%d"&a[i]);出现错误的原因是取地址符前面少了一个逗号。出现此类错误主要是因为学生比较粗心。还有部分学生由于对输入语句的语法掌握不牢固,会出现编程时漏掉取地址符。缺少地址符,程序编译和连接都不会提示出错,但在最后运行的命令框里输入数据时会出错。
(5)error C2018: unknown character '0xa3'。表示该语句行出现未知字符。原因是输入程序时采用的输入法为中文。应改为英文输入状态。C语言程序中除了汉字,其他的字符都要求是英文输入状态。
(6)error C2143: syntax error : missing ';' before ')'。表示括号前面少了分号。原语句如下:for(i=1,i<=10,i++)。出现错误的原因是for语句中的三个表达式隔开符号采用了逗号,正确的语句是三个表达式之间用分号隔开。因为语句结束是用分号。
(7)fatal error C1004: unexpected end of file found。该错误表示文件意外结束。出现的原因是程序中有如下语句:for(i=0;i<11;i++){printf("%d\t",a[i]);。很显然是for语句的一对大括号少了结束的一半。在C语言中,复合语句都用一对大括号括起来。学生在编程中,当写了很多行语句后很容易就忘记剩下的一半。。除了for语句用大括号,还有if、while等语句,以及构造类型比如共用体,结构体在定义时也用一对大括号,main程序体也是用一对大括号括起来。所以学生在编程时最好养成一开始就把一对大括号写上的良好编程习惯。然后在大括号内填写语句。
4 结语
本文根据作者的教学经验,对C语言实践教学中学生在编程时容易出现的共性问题进行了阐述和解析。参考这些常见的问题,学生在编程时可以提高调试程序的效率,同时可以促进学生培养良好的变编程风格。
参考文献
[1]余丽红.基于CDIO的C语言程序设计课程教学改革探究[J].中国科教创新导刊,2011,16:150.
[2]顾秉林.加强实践教育 培养创新人才[J].清华大学教育研究,2004,25(6):1-5.
[3]陈支武.完善实践教学体系 培养应用型创新人才[J].实验室研究与探索研究,2012,31(8):167-170.endprint