c语言实验上机指导书(精选9篇)
篇1:c语言实验上机指导书
实验一
简单的C程序设计和基本数据处理
实验目的:
1.掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
2.通过编程进一步理解和掌握运算符的确切含义和功能。3.理解和掌握运算符与运算对象的关系,优先级和结合方向。
1.通过编程,掌握C语言的几种基本数据类型,int、char、flloat、double,以及由这些基本数据类型构成的常量和变量的使用方法。
2.掌握基本输入/输出函数的使用方法,包括printf()、scanf()、getchar()、putchar()。3.掌握简单的C程序的查错方法。实验内容:
一、输入程序,观察输出结果,并对语句做必要的注释。1./* e1.c */ #include
int x;
x=27
printf(“%4d,%o,%Xn”,x,x,x);}
输出结果:
解释:
2./* e2.c */ #include
char ch;
int k;
ch=’a’;k=10;
printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k);
printf(“k=%%dn”,k);
} 输出结果:
解释:
3./* e4.c */ #include
float x=5/2,y=5.0/2;
printf(“x=%f,y=%fn”,x,y);} 输出结果:
解释:
二、编写程序。
1. 编程(c1.c)任意输入3个整型变量x,y,z和一个实型变量avg,计算并输出3个整数的平均值avg,从键盘输入数据并验证结果。观察运行结果。源程序:
输出结果: 解释:
2. 输入两个个整数给a,b,然后交换它们的值,源程序:
输出结果:
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验二
选择结构程序设计与循环结构程序设计
实验目的
1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式;理解循环条件和循环体
3、熟练掌握if语句和switch语句;熟练使用while、do-while语句实现循环程序设计
4、熟练掌握switch语句中break语句的作用。实验内容 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3.输入输出示例:
输入一个整数:12345 12345有5位数,各位数字之和是15 提示:n表示一个整数,则n%10取个位数,n=n/10去掉个位数,组成一个新数。思考:如果要把每位数字转换为字符输出,如何编程。
3. 改错,输入2个正整数,分别将其逆向输出。输入输出示例: 123的逆向是321 321的逆向是123 void main(){
int n,m=0;
scanf(“%d”,n);
while(n>0)
{ m=m+n%10;
m=m*10;
n=n/10;}
printf(“%d的逆向是%dt”,n,m);}
4. 编程,找出200以内的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,如6=1+2+3,其中1、2、3为因子,6为因子和。输入输出示例: 1=1 6=1+2+3 28=1+2+4+7+14 main(){ int i,j n;printf();} 实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三
数组
实验目的
1.熟练掌握数组的定义和初始化 2.熟练掌握使用数组元素的引用 3.继续掌握排序算法 实验内容
2.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:5 输入5个整数:5 2 1 10 9 2 5 9 10 提示:注意下标的变化。 思考:如果输入的是实数,要求将绝对值最小的数与第1个数交换,绝对值最大的数与最后1个数交换,然后输出交换后的n个数,如何编程。 3.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:10 输入10个整数:-11 2 8 5-3-16 9 7 6 10 排序后:2-3 5 6 7 8 9 10-11-16 5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。 输入输出示例: 输入数组行和列数n、m:2 3 输入2行3列的数组元素: 12-7 15-18 9 11 12.00-7.00 15.00-18.00 9.00 11.00 a[1][0]=-18.00 思考: 1)如果不从键盘输入数组元素,而是用初始化的方式给数组赋值,运行结果一样吗? 2)如何修改程序,求绝对值最大的元素? 3)将数组a的每一行均除以该行的主对角元素,然后最大值,试编制程序。 实验报告要求 将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验2顺序结构程序设计 二、6.实现两个数的对调: #include (1)#include #include #include 若采用系统自动评分,不但将考生作弊的可能大幅减小,并且智能化的给学生的程序进行评分,以取代教师的低效率的、机械的阅卷模式,改变了院校人工批阅上机考试的现状,更加直观地反应学生的学习水平和教师的教学成果。因此,自动评分技术的研究与实现,在高等教育领域和计算机考试中具有十分重要的实际意义。本文以C语言程序设计为例,给出一种利用LD算法实现自动评分的方法。 1 填空改错题的评分 C语言上机考试系统的题型一般情况下,不外乎有填空题、改错题和编程题,其中填空题和改错题的评分完全可以将比较来判定成绩,即通过比较原题和学生答题找到最长不同字符串,然后将该字符串同标准答案比较即可。其实现方法在VB6.0中可以用以下源代码实现:函数名为CompStrFun,形参indata、dindata表示学生答题结果、试题标准答案,均为字符串类型。该函数返回两个参数最长不同字符串的长度。 2 编程题的评分 对C语言考试系统中的编程题,因为不同学生考虑问题的角度和解决问题的思路与方法存在差异,于是同样的问题学生给出的争取答案多种多样,从而造成系统无法给出标准的答案。 目前,多数程序设计类课程的上机考试系统对于编程题的评判,多是采用比较程序运行所输出结果的文件,而不考虑学生所编写程序。虽然这样能够确保编程完全正确的学生获得该题满分,但是这样造成了以下两种不合理的情况存在。第一种情况,完全不编程而直接通过编辑输出文件来获取满分的情况;第二种情况:编写的程序大部分正确,但程序无法运行得零分的情况。 对于第一种情况,在学生提交考试结果时的时候通过重新生成结果文件来避免。即先删除学生答题所产生的结果文件,再调用编译系统重新编译连接学生编写的程序,生成可执行的exe文件并运行产生最新的结果文件,然后和标准结果进行比较。这样即使学生直接编辑结果文件正确,但没有编写程序,也无法获取成绩。此情况在VB6.0中可以编写如下函数代码来实现。 ‘函数名:AgainExe() ‘参数:形参FileName表示学生所编写的源程序文件(包含路径)。 ‘返回值:True表示成功重新生成exe文件,Flase表示生成exe文件失败。 Public Function AgainExe(ByVal FileName As String)As Integer Shell"VCVARS32.BAT"'设置运行环境参数 AgainExe=Shell("Cl.exe"&App.Path&FileName,vbNormalFocus) End Function 对于第二种情况,因学生的主观因素造成学生的答题结果存在着差异,而编程题的答案并不是唯一的。这样造成该类型的题目并不能采用上述填空改错题的方式来评分。本文通过文本相似性来实现编程题的评分,即借助距离编辑(LD)算法,将学生答案和标准答案进行比较获得答案相似度作为得分比例,然后乘以该题总分作为学生该题的得分。 3 距离编辑算法实现 距离编辑算法(简称LD算法)是以一个字符串A转换成另一个字符串B的过程中,所进行的插入、删除、替换等操作的次数表示两个字符串的相似度。在上机考试系统中,从学生答案读取程序行作为字符串A,而标准答案读取程序行作为字符串B,然后即可按行执行LD算法。 例如学生程序行“x=a[j]”如何变成标准程序行“x=b[++i]”呢?第1步,a替换成b,x=a[j]→x=b[j];第2步,j替换成i,x=b[j]→x=b[i];第3步,在i前插入++,x=b[i]→x=b[++i]。故x=a[j]和x=b[++i]的编辑距离为3。 在VB6.0中实现该算法的函数源代码如下:其中函数名为LD,形参StrA、StrB表示学生答题结果、试题标准答案,均为字符串类型。该函数返回两个参数的编辑距离。 4 结论 本文提出的计算机自动评分方法,已经应用于程序课上机考试系统中。不但可以将该系统作为《C语言程序设计》课程的期末上机考试系统,另一方面还可以让学生熟悉二级语言考试环境,从而提高计算机等级考试通过率。 摘要:在程序设计课的上机考试系统中,如何实现自动评分是最为关键的部分。该文对不同题型给出了不同的评分方法,其中编程题的评分,采用学生答案和标准答案之间的编辑距离作为评分依据,将LD算法用于考试系统的自动评分,并给出用VB6.0实现的函数代码。 关键词:自动评分,考试系统,VB6.0,LD算法 参考文献 [1]吴宗东,李兵元.浅谈SHELL函数使用新法[J].新疆石油科技,2000,21(2):76-80. [2]王振明,李俊龙.一种简易的文本内容比较算法及在VB中的实现[J].计算机应用与软件,2007,24(8):199-221. 关键词 C语言;程序设计;编程能力 中图分类号:G712 文献标识码:B 文章编号:1671-489X(2012)31-0100-02 C语言是一门高级程序设计语言,是目前被中等职业学校和高等院校广泛使用的教学语言。它以功能丰富、表达能力强、使用灵活、应用面广、目标程序高、可移植性好、能对硬件直接操作等优点愈来愈受到程序设计者的青睐。它既适合编写应用程序,又适合编写系统程序,实用性很强,因此学习好C语言程序设计具有很重要的意义。然而在C语言的教学过程中,学生常常反映比较难学,在实际应用中常常出错而不知所以然。 1 归纳记忆法,夯实基础 任何学科的学习,离不开知识的积累。善于积累资料对提高学习效率是非常必要的。著名数学家华罗庚在给青年学生谈如何读书学习的讲话中,生动地说道:读书要有一个由“薄”到“厚”,再由“厚”到“薄”的过程。做到由“厚”变“薄”的关键是能否将所学的知识进行归纳整理。C语言的概念复杂,规则繁多,使用灵活,学生解题时很容易出错。因此在教学的过程中,要引导学生把相互关联的知识加以分类归纳,帮助学生系统地掌握知识。 C语言的概念和规则从知识体系可分为以下几类进行记忆。 1)数据类。数据规则包括:①变量的命名规则;②系统的关键字;③不同类型常量的表示方法、范围和存储规则。 2)运算符类。这类规则主要有:①运算符的优先级,包括同类和不同类运算符的优先级;②运算符对数据的要求;③表达式中数据类型的转换。 3)函数类。C语言是一种函数式语言,函数是C语言程序的基本组成部分。在C语言中系统提供了大量的函数供用户调用,为用户编程提供了极大的方便。记忆函数类知识时,要从函数名、函数的格式、函数的作用和函数值四方面来掌握。 4)语句类。这类规则主要指语句的书写规则、语句的作用和语句的执行过程。 5)算法。学习C语言的最终目的是为了能够编程来解决实际问题,因此掌握一些典型的算法是学生能够编程的基础。 数据、运算符、函数和语句是C语言的基本组成单位,是学习C语句的基础。分类归纳记忆的好处是:1)再学习的优势,把已学过的知识概括归纳,在大脑中已存储了相关的信息,这样再学习时,学生会很快把新的知识纳入到已有的知识体系中;2)保证审题的正确和全面,做题时能够快速从题目联系到所学的知识,做好题目和知识之间的衔接,避免了审题时盲目猜测和遗漏条件。 2 实验观察法,突破难点 阅读程序和编写程序是学生学习C语言必须掌握的两种能力,也是学习的难点。然而C语言是计算机使用的程序设计语言,语句的作用和程序的运行比较抽象。所以在上机实习中,教会学生使用软件中提供的功能,提高观察分析能力,让学生有真切而丰富的直观感受,可以突破学习的难点,纠正原来理解上的偏差,加深对C语言的理解,提高阅读分析程序和编写程序的能力。 2.1 培养学生养成良好的观察能力 许多伟大的科学家、作家都是以具备高度观察能力著称的。达尔文曾经对自己作了这样的一个评价:“我既没有突出的理解能力,也没有过人的机智;只是在觉察那些稍纵即逝的事物并对其进行精细观察的能力,我可能是众人之上。”观察不仅是增长知识的重要途径,也是智力发展的重要基础。具有敏锐、深刻观察能力的人,对事物看得全面,能迅速抓住事物的重要特征和本质。 在C语言上机过程中,应培养学生做到:1)有目的观察,每次上机实习时,做好实习计划,确定实习内容,切忌观察目的盲目随意;2)抓住重点观察,切忌“眉毛胡子一把抓”,不分主次,如观察循环结构的程序,循环结构的执行过程和循环体语句就是观察的重点;3)耐心观察,在观察过程中,要边观察、边思考,不放过每一个细小的变化,只有处处留心,善于观察思考,才能做出合理的判断,正确理解课本知识。 2.2 充分利用软件功能 1)Watch窗口的使用。它可要将观察的变量、表达式等加到Watch窗口中,在程序运行的过程中动态地显示出变量或表达式的值,对于分析程序的执行过程和程序结果都非常有用。 2)断点管理。在程序中设置断点是调试程序的很好手段,在怀疑有问题的地方设置断点,可使程序一运行到断点处就停下来,再用其他调试手段观察变量、内存等的变化,可以做到快速错误定位。 3)单步执行功能。学生在学习C语言的过程中,往往不能正确判断程序的执行过程,尤其是对多分枝程序和循环程序的执行过程非常模糊,这一功能将程序的执行过程直观地显示出来,让学生一目了然地观察其执行顺序,对学生理清思路非常有用。 3 知识迁移法,扩展思维 C语言之所以难学,在于它的学科综合性强。在教学过程中,应该积极去引导学生将所学到的经验迁移,做到触类旁通,实现迁移式学习。 3.1 C语言与其他高级语言的共性 C语言作为一门结构化程序设计语言,与其他高级语言比较在数据类型的定义、程序流程控制、函数、(过程)定义等方面有许多相似的地方。在C语言学习中,可以借鉴其他程序设计语言的知识来理解,便于学生掌握C语言要点。 1)结构化程序设计。C语言充分体现了结构化程序设计的特点,在程序流程语句(顺序、循环、分支)的功能方面与其他语言是一致的。 2)数据类型的定义与应用。C语言中数据类型(如整形、实型、字符、数组、指针、文件等)及其相应的标准函数,与其他高级语言比较,在一定程度上是类似的。C语言中提供的结构体数据类型,与数据库中的记录具有类似的特点。 3)函数。在函数的定义与调用、参数的传递,变量的作用域等方面,有许多相似之处。 3.2 C语言与其他学科之间的联系 数学对学习C语言的帮助体现在数据的运用和程序设计上。 1)语言的相似性,如运算符都具有优先性,表达式求值规则,函数的作用,解决问题时都需要数据和运算等方面,有很多相似之处。 2)思维的相似性。学生现在接触的程序设计体,多数是解决数学问题,对很多问题而言,只要找出数学上的解决思路,把它用C语言中的语句表示出来,再加上程序流程控制,就可以正确地编写程序。 英语对学习C语言的帮助则体现在语言的学习和程序的调试上。 1)有助于记忆。如C语言中的关键字、函数名等都是由相应的英文单词表示,英语知识扎实的学生学得快,记得快,编程时语法错误少,阅读程序能力高。 2)有助于编写具有良好风格的程序。如程序中变量的定义要尽量做到见名知义,如成绩可定义为score,价格可定义为price……这样编写的好处是阅读程序时很容易理解变量的作用,对提高程序的可读性非常重要。 3)有助于提高实习效率。编译、调试程序时,系统得出错信息,帮助信息大都以英文形式显示,英语好的学生能较好地分析并应用这些信息,准确而快速地完成程序的调试。 各学科知识融会贯通的迁移应用,能使学生较快地理解C语言的各个知识点,应用时更加得心应手。 最后还有一点要提醒大家,就是培养良好的编程格式的习惯,如缩进格式、命名原则、大括号的位置及注释等,这也是学好C语言的基本因素。可读性在C语言编程中也占有很重要的地位,好的编程风格可以让人一目了然,在短的时间内看清程序的结构和设计的思路。这样可以大提高代码的可读性、程序的可移植性和可维护性。 4 结语 2160500146 计算机66马俊松 在本学期,共进行了大约五次上机,完成了数十道编程题,现将在完成作业过程中所遇到的问题以及解决过程进行如下几点总结,并提出几点建议。 1.在刚开始那几次做编程作业时,经常因为只是输出时的格式不符合moodle上的要求而的零分,因而不断修改,浪费大量时间,希望今后moodle网站能在这一点上做出改进(如果过程正确而只是输出格式错误,可以不必给零分)。比如下面几个题: 2.在做6.1题(找出一句话中最长的子字符串)的过程中,因为字符数组的知识未掌握牢固,在以下几个方面卡了比较久: ①:字符串在输入时,若用scanf(”%s”,a),则只会得到第一个单词;若用for(i=1;i<=n;i++)scanf(“%c”,a[i]),则循环会一直持续知道输入n个字符;若希望将整句话输入,应用gets(a); ②:将”n”,””,” “几个概念搞混淆,因而在条件判断时出现混乱,导致错误。 3.在做7.1题(用函数实现学生的信息录入及排序)时,遇到了以下几个问题并卡了比较久的时间: ①:运用了错误的输入方式,导致未能的到完整的输入信息或输入过程中直接中断(如下图); ②:刚开始时为采用指针的思想,导致在设计程序时比较繁琐;但应注意在使用完指针p++后,应重新给指针p赋回初值; 课程名称 _____C语言程序设计____ 实验项目 _实验一 顺序结构程序设计___ 实验仪器 ______ ___________ 系别_____光电学院_______ 专业______电信__________ 班级/学号 学生姓名 ______***_________实验日期 ____2011年10月17日___ 成绩 _______________________指导教师 一、实验目的1、掌握C语言中,基本的输入输出函数的使用方法。 2、掌握printf中转义字符’t’,’n’的用法。 3、掌握赋值语句的用法。 4、掌握算术表达式、赋值表达式的计算。 5、掌握数学函数的使用。 二、实验内容 1、输入圆的半径 r,计算圆的周长和面积。其中 π =3.1416程序代码: …… 执行结果: [输入] …… [输出] …… 2、3、…… 三、实验体会 实验指导书 电子与计算机科学技术学院 实验一 顺序、选择及循环结构程序设计 一、实验目的 1.熟悉C语言编程环境 2.掌握输入输出函数的使用 3.掌握if语句和switch语句的使用 4.掌握for语句、while语句和do-while语句的使用 5.通过练习掌握顺序、选择及循环结构程序设计方法 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料 3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时 四、实验内容和步骤 1.实验内容 (1)求解方程ax2+bx+c=0。 (2)打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 打印水仙花数时,要分别求出三位数的个位数、十位数和百位数,试问:除了你所用的的方法外,是否还有其它方法?请写出。 实验二 数组的应用 一、实验目的 1.通过实验理解掌握数组的基本概念 2.熟悉数组的定义、数组元素初始化、数组元素引用 3.理解字符数组的基本概念、基本操作和应用 4.能利用数组解决简单的应用问题 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料 3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时 四、实验内容和步骤 1.实验内容 (1)将一个数组中的值按逆序重新存放。 (2)编一程序,将两个字符串连接起来,不要用strcat函数。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: (1)在字符串常量中,其结束符‘’要占一个字节的内存空间,在计算字符串长度时,是否也包括了字符串结束符? (2)在对字符数组进行输入时,可以用scanf函数,也可以用gets函数,若定义了一字符数组,从键盘输入了以下内容:You are my student。试问:用scanf函数和gets函数得到的结果一样吗?请分别指出。 实验三 结构体及其应用 一、实验目的 1.理解结构体的基本概念 2.掌握结构体类型的定义方法 3.掌握结构体变量的定义、初始化和引用 4.理解结构体数组的定义、初始化和引用 5.通过实验熟悉结构体及结构体数组的应用 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解结构体的应用及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,求出每个学生3门课的平均成绩,并输出最高分的学生的数据(包括学号、姓名、3门课的成绩、平均成绩)。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 假如你所定义的结构体类型名为:STUDENT,试问:sizeof(STUDENT)的值是多少? 实验四 函数的应用 一、实验目的 1.理解函数的基本概念 2.掌握函数的定义、调用方法及参数传递方式 3.理解变量的作用域和变量的存储类别 4.通过实验掌握函数的使用 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解函数的应用及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 (1)写一个判素数的函数,在主函数中输入一个整数,输出是否是素数的信息。(2)写一函数,使给定的一个二维数组(3×3)转置。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 如果一个函数的定义如下所示: void hello(){ „„ return;} 请说明其中return语句的作用。其中的return语句可以省略吗? 实验五 指针及其操作 一、实验目的 1.通过实验进一步掌握指针的概念 2.理解指针的定义和简单指针变量的使用方法 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解指针的使用及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 输入4个整数,按由小到大的顺序输出,使用指针进行处理。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。(5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 请说明以下程序段存在的问题,并改正。int a,*p;scanf(“%d”,p); 实验六 数组的指针操作 一、实验目的 1.理解数组的指针和指向数组的指针变量 2.理解指针变量作为函数参数时的参数传递方式 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解数组指针的使用及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 (1)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数实现:① 输入10个数;②进行处理;③输出10个数(2)将n个整数的前面各数向后移m 个位置,最后m 个数变成最前面m个数。在主函数中输入n个整数和输出调整后的n个数。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: int *p, a[10]={0,1,2,3,4,5,6,7,8,9};p=a;试问:如果数组a的首地址为:0x1000,&a[3]与p+3的值分别是多少?*p+3与*(p+3)的值分别是多少? 实验七 结构体的指针操作 一、实验目的 1.理解结构的指针和指向结构的指针变量及链表的基本概念 2.理解链表的基本操作 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解结构的指针的使用及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中有年龄等于此年龄的结点,则将此结点删除,否则新建一结点,插入到链表末尾。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 在建立链表时,要用到malloc函数来开辟内存空间,例如: p=(struct student *)malloc(sizeof(struct student));试问:为什么要在malloc函数前加(struct student *),去掉其中的*号可以吗?并说明原因。 实验八 文件的基本操作与应用 一、实验目的 1.理解文件及文件指针的概念 2.学会使用打开、关闭、读、写等文件操作函数 3.学会创建自己需要的文件格式 二、实验环境 1.计算机 2.Turbo C集成环境 三、实验说明 1.熟练操作Turbo C运行环境 2.自主编写程序,必要时参考相关资料 3.充分理解文件的基本操作及编程技巧 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 编程实现以下内容: (1)建立一数据文件,该数据文件包括文件头:0X146F,0X1234; (2)一个班有5个学生,每个学生包括:学号、姓名和三门课成绩,从键盘输入5个学生的信息,并保存到该数据文件; (3)从文件中读出5个学生的信息,计算平均成绩; (4)把5个学生的所有信息(包括平均成绩)输出到数据文件。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。 (4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (5)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 为什么在对文件操作结束后,要用fclose函数关闭文件? 实验九 串口通信的简单应用 一、实验目的 1.理解串口的操作方式和模式控制方式 2.理解串口数据通信的实现过程 3.能够编写简单的串口通信程序 二、实验器材 1.计算机 2.DB_9串口插头两个,导线若干 三、实验说明 1.自主编写程序,必要时参考相关资料 2.充分理解串口的基本操作 3.理解串口通讯的基本过程 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 将两台计算机的COM口相连,一个作为接收端,另一个作为发送端,编程实现两台计算机之间的简单通信。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)将两台计算机的COM口连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。(5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (6)执行程序,并检查程序输出结果。 五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 两台计算机在通过串口进行串行通信时,它们的串口参数(如波特率)可以设置为不一样吗? 实验十 并口通信的简单应用 一、实验目的 1.理解并口的操作方式 2.理解并口寄存器的含义和并口读写时序 3.能够针对简单的应用问题,编写简单的并口通信程序 二、实验器材 1.计算机 2.实验电路板(包括并行接口、数模转换器DAC0832、运算放大器LM741、电阻、电容等),DB_25并口插头一个,导线若干 3.示波器、微机—II型电源各一套 三、实验说明 1.自主编写程序,必要时参考相关资料 2.充分理解并口的基本操作 3.理解并口通讯的基本过程 4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时 四、实验内容和步骤 1.实验内容 通过计算机并口向数模转换器发送数据,实现D/A转换。2.实验步骤 (1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)把实验电路板与计算机并口、示波器、电源(此时电源关闭)连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。 (5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。 (6)打开电源,执行程序,通过示波器观察D/A转换器和运算放大器输出的波形。 (7)如发现波形输出有问题,若是程序有问题,关闭电源,修改程序并保存,重复步骤(5),(6),(7),直到输出正确的波形为止。若是电路有问题,请查找原因,或更换实验板,验证程序的正确性。 五、实验报告要求 1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 二级C语言考试由笔试和上机两部分。笔试考察的是应试者对基础知识和基本理论的掌握情况,而上机考试主要测试的是应试者的逻辑思维能力和运用C语言的能力,一般包括3种题型:填空题、改错题、编程题。该文对考试题库中编程题作出归纳,总结,希望对应试者有所帮助。 1 上机编程题的知识点 上机考试的知识点大概可以有5个,分别是:基本运算、循环、数组、字符串、结构体。以下对这5个知识点分别举例说明。 1.1 基本运算 例如有以下编程题: 编写函数fun,它的功能是:将两个两位正整数a, b中个位数和十位数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的十位和千位上。 例如:当a=45, b=12。调用函数后c=2415。 注意:部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。 程序如下: 分析:这类基础题主要是考察应试者对基本运算的掌握。针对这个题关键是把这两个数的个位和十位求出来,然后再重新组合成一个新数。表示两位数a的个位数的方法是:a对10取余,即a%10;表示两位数a的十位数的方法是:a先除10后在对10取余,即a/10%10。 本题的答案为:c=b%10*1000+a/10*100+b/10*10+a%10; 1.2 循环 循环中最主要的应用就是迭代和遍历。迭代一般是用来解决累加、累乘的问题,可用for语句来实现。 例如有以下编程题: 编写函数fun,它的功能是计算并输出以下多项式的值: 例如:当在主函数中从键盘给n输入5,则输出为:s=-0.28333。 注意:要求n的值大于1但不大于100。部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。 程序如下: 分析:这类题主要是考察应试者对迭代的掌握。关键是找出迭代公式、变量的起始值和最大值。本题中表达式的每一项是都是一个分数,分子都是1,分母初始值是2,最大值是n, 而且每项增1,所以可设一整型变量i, 用for语句实现:for (i=2;i<=n;i++) 。表达式的值用变量s表示,s的初始值为1,每一项之间用减号连接,所以迭代公式,也就是循环语句可表示为s=s-1/i。除此以外,还应注意两点1。变量s的类型,因为表达式的值是实数,所以变量s应定义为double。2.注意基本算术运算中,两整数相除结果为整数,而题目中每一项要得到的结果为实数,所以应用算术运算中数据类型的转换将s=s-1/i改为s=s-1.0/i。 本题的答案为: 1.3 数组 数组可以分为一维数组和二维数组。 1.3.1 一维数组 编写函数fun, 它的功能是:找出一位整型数组中元素的最大值和它所在的下标,最大值和下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中的x是数组名,n是x中的数据个数,max存放最大值,index存放最大值的下标。 程序如下: 分析:这类题是遍历在数组中的应用。要找出数组中的最大值,必须对数组中每一个元素查找一遍,同时要进行比较。编程思想:可设一变量max, 假设数组中的第一个元素a[0]是最大的,然后后面的元素依次和max进行比较,只要比当前max的值大,就把它放在max中。 本题的答案为: 1.3.2 二维数组 编写程序,实现矩阵的转置。 例如:输入下面的矩阵: 分析:这类题是关键是解决两个问题:1.怎样对二维数组元素的遍历。2.怎样完成矩阵的转置法。因为二维数组元素表示要用到两个下标即行标和列标,所以遍历数组元素用到两层循环。矩阵的转置就是对应行和变成对应列,换句话说就是关于主对角线的对应元素交换。 本题的答案为: 1.4 字符串 例如有以下编程题: 规定函数中只包含字母和*。请编写函数fun, 它的功能是:删除字符串中的所有*。在编写函数时,不得使用字符串函数。 例如:字符串中的内容为:****A*BC*DEF*G*****,删除后,字符串中的内容为:ABCDEFG。 分析:这类题要对字符串中所有字符遍历,把不是*的字符保留下来。本题要解决两个问题:1.怎样判断字符串结束。2.怎样把不是*的字符放在原来的字符串中。字符串都是以’�’作为结束标志,可以把字符串中元素是不是’�’作为判断字符串结束的依据。可设一变量j作为字符串的新下标,初始值为0,只要原字符串中的元素不是’�’, j就加1,特别注意要在最后加上’�’最为字符串结束标志。 本题的答案为: 1.5 结构体 例如有以下编程题: 学生的记录是有学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun, 它的功能是:把分数最低的学生数据放在数组b中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 程序如下: 分析:这类问题其实编程思想和前面的没有太大的差别,主要考察的是对结构体成员的引用,其引用形式为:结构体变量名.成员名。 本题的答案为: 2 结论 本文只是对计算机等级考试二级C语言的上机题作了简单的分析和总结,仅过分析可以看出,考察的知识点总共有5个,但是基本上都是循环的两方面的应用:迭代、遍历。 参考文献 [1]未来教育与教学研究中心.全国计算机等级考试二级C语言上机考试题库[M].北京:金版电子出版社, 2007. 关键词:C语言;实验;教学方法 中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21728-02 Discussion of the Experiment Teaching Method in C-programming LIU Han-ying (Department of Electronic and Computer, Guilin University of Technology, Guilin 541004, China) Abstract:C-programming experiment is important part of C-programming teaching. As the result of each kind of reason, there are some disadvantages in the experiment teaching of C-programming: the experiment passing rate of national examination is low; the teacher can't instruct because of so many students; the students written down the programs without preparation. The students don't know how to do with the errors. With some teaching examples of the C-programming experiment, this paper propose some teaching methods, The experiences show that the proposals stimulated the students' enthusiasms of studying, and improved the quality of experiment teaching. Key words:C language; experiment; teaching method 《C语言程序设计》(以下称C语言)是计算机及相关专业的一门专业基础课,是学习其他专业课程如《C++与面向对象程序设计》、《JAVA》、《数据结构》、《数据压缩》、《计算机图形学》的基础,C语言实验是C语言教学中的一个重要环节,常常占总学时的2/5以上。C语言实验教学有利于增加学生对理论知识的理解,调动学生的学习主动性,提高学生思维能力和动手能力。然而,由于各方面的原因,C语言实验教学中存在一些问题:全国等级考试实验通过率不是很高;C语言实验往往是大班上课,学生人数较多,老师指导不过来;学生课前没有预习,上机时直接输入参考程序,实验成了打字练习;英语水平不高,对错误提示无从下手;部分学生以为编译通过就是调试成功,不会使用调试工具。笔者近年来多次承担C语言实验教学任务,总结了一些教学方法和经验,下面是笔 者对C语言实验教学方法的探讨。 1 思想上重視实验环节,提高学习兴趣 由于C语言教学往往是大班教学,在考核方式上常常采用的是理论考试,部分学生不重视实验课,课前不预习,上机时就直接输入指导书上的参考程序,实验效果很差。因此,为了提高实验教学的效果,应将上机考核作为C语言考核的重要组成部分,让学生从思想上重视实验环节,做好课前预习。同时,笔者把一些用C语言程序实现的小游戏或画的图形图像演示给学生看,激发学生的学习兴趣,取得了较好的效果。 2 编写适宜的实验指导书 目前,有许多与C语言课程配套的实验指导书,这些指导书常常配有答案[1]。学生拿到指导书后,看有答案,常常不自己思考就将书上的程序录入进去,编译出错时不是根据错误提示查找错误原因,而是从头到尾地与书上程序比对,改正录入错误,遇到书上有错,就无从下手。整个上机练习成了打字练习。笔者认为,一本适宜的实验指导书应具备以下几点: (1)实验指导书要与理论知识配套 C语言实验教学的目的是通过实验,让学生增强对理论知识的理解,学会自己编写、调试程序。因此,实验指导书的内容要与理论教学配套,有针对性地设置实验内容,且实验时间安排要合理(略晚于理论教学),参考程序与实验指导书分离。 (2)实验内容难度适宜 由于种种原因,学生能力上有很大差异,为此,在编写实验指导书时要兼顾各个能力层次的学生,设置基础题、中等难度题和较难题多个层次。笔者从历年的考试题中抽取一些具有代表性的改错题作为基础题练习;在此基础上,设置一些程序设计题让学生编写、调试;对学有余力的学生,可设置一些难度较大的题目,组成小组讨论。 3 养成良好的编程习惯 3.1 注意编程思想 算法是程序设计的精髓,语言只是表示形式,没有正确的计算机算法,就无法用计算机正确地解决问题。对于每一道题目,首先找出解决问题的算法,画出盒图,最后才是编写程序,这样可以减少出错的可能性。 3.2 使用有意义的标识符 C语言教材常常使用i,j,k,a,b,c几个字符作为标识符,很多学生在学习C++时觉得很难,其中一点就是C++中教材中的标识符较长。笔者建议学生,在编写程序时尽量使用一些有意义的字符串作为标识符,尽量不要用l作为标识符,提高程序的可读性,如输入一系列学生成绩时使用的是score1,score2……,而不是a1,a2……。 3.3 养成良好的程序录入习惯 有的学生在录入程序时不注意书写格式,在遇到错误时常常不易查找。笔者要求学生使用锯齿形的书写格式,在录入大括号、小括号、引号等时都要做到成对录入,有较地提高了程序录入的准确率。 4 改革实验辅导方法 4.1 网络教学软件的使用 传统的实验课是老师先布置实验习题,学生练习,遇到问题举手,老师解答。然而,C语言实验往往是大班教学,学生人数较多,许多问题十分相似,老师常常为同一问题解释多次,指导不过来。针对这一问题,笔者使用了红蜘蛛软件[3],这个软件可以在局域网上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并同时实现屏幕监视和远程控制等网络管理的目的。该软件是专门针对电脑教学和培训网络开发,可以非常方便地完成电脑教学任务,包括教师演示、学生示范、屏幕监视、遥控辅导、屏幕录制、屏幕回放、网络考试、网上语音广播、两人对讲和多方讨论、联机讨论、同步文件传输、提交作业、远程命令、获取远端信息、电子教鞭、电子黑板与白板、网上消息、电子举手、锁定学生机的键盘和鼠标、网络唤醒、远程关机和重启、学生机同步升级服务、远程安装、倒计时、班级和学生管理等。笔者通过文件传输功能,将实验题目(如基础改错题)发放给学生,让学生练习,然后通过提交作业功能抽一名学生的作业来讲解。 4.2 总结错误 针对一些学生英语水平不高,对错误提示无从下手的现状,笔者总结了上机时经常遇到的错误,如语法错误、逻辑错误等,罗列给学生,并从一些试题中挑选一些适宜的改错题传给学生练习,学生不用从头到尾地录入程序,提高了实验效率。 4.3 调试方法的使用 調试的目标是寻找软件错误的原因并改正错误[2],一般有以下几种调试途径: 4.3.1 蛮干法 上机时指导学生查找错误,学习使用程序调试工具,跟踪程序的执行过程,发现较隐蔽的错误,提高学生动手解决问题的能力。如学生编写如下程序计算 (用公式 )时,发现结果不对,笔者指导学生使用调试工具观察变量pi和t的值,很快找到了错误原因,同时学生也练习了调试工具的使用方法。 #include #include void main() {float s,n,t,pi; t=1;pi=0;n=1;s=1; while(fabs(t)<1e-6) {pi=pi+t; n=n+2; s=-s; t=s/n;} pi=pi*4; printf("pi=%fn",pi);} 4.3.2 回溯法 从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。如上例中,用go to cursor执行到pi=pi*4,发现pi的值不对,则往回分析代码,很快可以查出是循环条件不对。 4.3.3 对分查找法 对分查找法的基本思路是,如果已经知道每个变量在程序中若干个关键点的正确值,可以用赋值语句或输入语句在程序中关键点附近“注入”这些变量的正确值,然后运行程序,并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。 4.4 让学生自己调试程序 由于学生多,问题多,为了快速地解决问题,有时老师会帮学生调试程序来提高效率。笔者认为,老师应指导学生调试程序,而不是帮学生调试程序,学生只有自己动手,动脑,才能真正学会调试方法。同时笔者鼓励学生之间互相帮助和交流,培养团结协作的精神,学生在帮助同学的同时自己也得到学习。 5 结束语 以上是笔者对《C语言程序设计》实验教学方法进行的探讨,通过实践发现,这些方法有助于激发学生学习自觉性和主动性,提高学生分析问题和解决问题的能力,达到提高教学质量的目的。 参考文献: [1]谭浩强.C语言程序设计题解与上机指导[M].北京:清华大学出版社,2005. [2]张海藩.软件工程导论[M].北京:清华大学出版社,2003.168. [3]http://www.forclass.com/. 【c语言实验上机指导书】相关文章: c语言上机实验答案08-01 c语言上机实验心得08-01 c语言上机实验及答案09-30 C语言程序设计上机实验报告05-12 第8次c语言上机实验课05-27 C语言实验05-02 c语言实验报告06-21 c语言数组实验04-21 c语言实验题目06-29篇2:c语言实验上机指导书
篇3:谈C语言上机考试的自动评分
篇4:c语言实验上机指导书
篇5:c语言上机实验报告
篇6:C语言上机实验报告_书写格式
篇7:《C语言高级应用》实验指导书
篇8:c语言实验上机指导书
篇9:C语言实验教学方法探讨