《《C语言程序设计A》实验教案.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计A》实验教案.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验1: C语言程序初步实验名称: C语言程序初步 实验类型: 验证型 一、实验目的了解Turbo C集成开发环境。熟悉C程序的实现过程和方法。掌握编辑、编译、连接、运行程序的过程和方法。了解常见的两种语法错误(Error/Warning)。二、实验内容了解Turbo C集成开发环境的功能,熟悉菜单、热键基本操作启动、退出Turbo C集成开发环境。了解F5/F6;F10,、功能键;Alt+高亮度键的效果和作用。激活文件菜单(File)、编译菜单(Compile)、运行菜单(Run)、监视菜单(Break/Watch),查看菜单选项。在Turbo C下完成“源程序清单”中规定的程序题。三、实验
2、要求实验中仔细观察本实验创建的目录、文件,回答实验小结和思考中的问题。在Turbo C下完成“源程序清单”中规定的程序题。编辑、编译、运行程序并获得程序结果;如果程序有错,记录编译、连接遇到的提示错误。仔细思考出错原因,并更正之。编制的程序必须保存在D:用户目录中。注:用户目录可以用学号或姓名拼音简写。四、实验步骤、过程启动操作系统,查找Turbo C集成开发环境安装位置(路径)。假如为:C:TC,查看目录中是否有tc.exe,此程序就是Turbo C集成开发环境的执行程序。记住您的系统Turbo C2.0的安装位置。启动、退出Turbo C集成开发环境。启动Turbo C集成开发环境。如:双
3、击tc.exe文件图标。退出Turbo C集成开发环境。File-Quit 退出Turbo C集成开发环境再次启动Turbo C环境。(同前)Turbo C环境中,F5/F6;F10,、功能键;Alt+高亮度键的效果和作用。重复按F6键,仔细观察。当前激活窗口在编辑窗口、消息窗口之间切换。重复按F5键,仔细观察。当前激活窗口最大,正常状态之间切换。先按F10,可以看到主菜单被激活,按、,主菜单各个项被依次激活,试着按、可以打开相应菜单。重点浏览File(文件管理)、Run(程序运行控制)、Compile菜单(程序编译、连接)菜单。最后按ESC键光标回到编辑窗口。主菜单各个项,首字母为红色(高亮
4、度)。可以按Alt+高亮字母,直接激活相应菜单选项。例如按Alt+F激活File菜单,比F10再按光标快捷多了!按ESC键光标回到编辑窗口。观察当前源程序名NONAME.C表示当前的程序还没有取名字,以后保存程序时,系统会提示输入源程序名。按照下面步骤完成第1个程序题。“File”-“New”创建一个新的源程序文件输入源程序,全屏幕编辑源程序。“File”-“Save”保存源程序(文件名应按题目要求)。观察编辑窗口源程序名是否已经修改。用Windows资源管理器查看用户目录中是否产生了源程序文件*.c。“Compile”-“Build all”编译、连接源程序。如果有语法错误,修改源程序后再次
5、编译、连接程序,直到没有语法错误,系统提示成功。编译连接成功后用Windows资源管理器查看用户目录中是否产生了目标文件*.obj,可执行文件*.exe,观察其命名规则。“Run”-“Run”运行程序,用Alt-F5切换到用户屏幕查看运行结果。对比结果是否与预期相同。如果发现逻辑错误结果与预期不同,修改源程序,重复(3)-(5)保存、编译、运行程序,直到程序获得正确结果。注意:必须顺序完成程序编辑、编译连接、运行的各个过程。没有正确编译成功的程序是不可能运行的!程序开发中经常用“File”“Save”保存源程序以免意外导致源程序丢失。按步骤5完成第2个程序题。注意:Error致命错的程序不能产
6、生目标程序、执行程序,必须修改程序,并重新编译,直到成功。按步骤5完成第3个程序题。注意:Warning警告错的程序可以产生目标程序、执行程序,试着运行一下。看看结果!_,还是修改吧,警告错一般也意味着程序有毛病,尽管这种程序可以强行编译连接为可执行程序,但结果一般都有问题。五、源程序清单、测试数据、结果。最简单的C程序。(要求文件名:1_1.c)main() printf(Hello world!n);一个具有致命语法错的程序。(要求文件名:1_2.c)main() int i=9 printf(i=%dn,i)一个具有警告语法错的程序。(要求文件名:1_3.c)main()int i=9,
7、j,s; s=i+j;printf(s=%dn,s);六、实验小结F5/F6;F10,、功能键;Alt+高亮度键的效果和作用?答:F10,、:F10激活Turbo C主菜单,光标键选择菜单之间;回车确认。F5:编辑窗口或消息窗口最大/恢复;F6:切换编辑窗口/消息窗口。Alt+高亮度键,直接激活主菜单项。与C语言程序直接相关的几种文件及扩展名分别是什么?答:C语言源程序、目标程序、可执行程序,其后缀分别为*.c,*.obj,*.exe。C语言程序主要的实现过程?答:分为编辑、编译、连接、运行四个阶段。其中,开发环境中,编辑完成后,可以直接启动运行,但分解的阶段仍然是四个,前面阶段未完成,程序仍
8、然不能运行。C语言程序主要的错误?答:程序错误分为:语法错误:编译系统可以协助查找出来的语法上的错误。语法错还包括:致命错Error/和警告错Warning。致命错必须修改!,警告错可以不修改,但常常暗示程序存在问题。逻辑错误:运行结果与预期不符,与程序算法逻辑相关的错误。实验2:顺序程序设计实验名称: 输入与输出程序设计 实验类型: 验证性 一、实验目的掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。二、实验内容在Turbo C下完成程序题:根据商品原价和折扣率,计算商品的实际售价(结果精确到小数点
9、后2位)根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积(结果精确到小数点后3位)注:变量名可以自由选择,以易于理解为原则;数据由键盘输入。三、实验要求实验前编制程序框图、编写源程序、准备测试数据。实验测试数据要求从键盘输入。应尽力追求程序的完美。比如要求输入数据,应当显示提示字符串,提示用户输入;输出时要求有文字说明。在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。编制的程序必须保存在D:用户目录中。注:用户目录可以用学号或姓名拼音简写。四、实验步骤、过程启动操作系统。启动Turbo C集成开发环境。(方法与实验1相同)完
10、成2个程序题。(编辑、保存、编译连接、运行程序,步骤与实验1相同)退出Turbo C集成开发环境,关机。五、源程序清单、测试数据、结果。根据商品原价和折扣率,计算商品的实际售价程序流程图:main() float price,discount,fee; printf(Input Price,Discount:); scanf(%f%f,&price,&discount); fee=price*(1-discount/100); printf(Fee=%.2fn,fee);运行:Input Price,Discount:100 10Fee=90.00注:下划线表示程序运行后用户输入的数据,表示回
11、车,以后不再解释。2、根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积程序框图(略)void main()float r,h,pi=3.;float c0,s0,s,v;printf(Input r,h(m):);scanf(%f,%f,&r,&h);c0=2*pi*r;s0=pi*r*r;s=2*pi*r*h+2*pi*r*r;v=pi*r*r*h;printf(c0=%.3f(m)ns0=%.3f(m2)ns=%.3f(m2)nv=%.3f(m3)n,c0,s0,s,v);运行:Input r,h(m):1,2c0=6.283(m)s0=3.142(m2)s=18.850
12、(m2)v=6.283(m3)六、实验出现的问题、实验结果分析(参考)C语言变量先定义后使用,变量名大小写敏感。scanf输入数据,变量应当使用取地址运算。scanf函数格式字符串中的普通字符要原样输入,否则会发生错误。七、实验小结若scanf(%f,%f,&price,&discount);如何输入两个数据?答:scanf函数格式字符串中非格式字符要求原样输入,printf函数格式字符串中非格式字符在输出时原样输出。由于格式字符串为%f,%f,即要求两个浮点数之间由,分隔,所以输入数据时必须输入,。例如:Input Price,Discount:100,10实验3:选择结构程序设计实验名称:
13、 选择结构程序设计 实验类型: 验证性 一、实验目的掌握关系、逻辑运算符及其表达式的正确使用。掌握if语句和switch语句的使用。了解Turbo C程序调试的基本方法。二、实验内容在Turbo C下完成程序题:有如下函数,要求输入x的值,求y的值。 |X|,X0Y= X2,0X10 LogX,X10输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值。某单位马上要加工资,增加金额取决于工龄和现工资两个因素:对于工龄大于等于20年的,如果现工资高于2000,加200元,否则加180元;对于工龄小于20年的,如果现工资高于1500,加150元,否则加120元。工龄和现工资从键盘输入,编程
14、求加工资后的员工工资。三、实验要求实验前绘制程序流程图,编制源程序、准备测试数据。在Turbo C下完成程序的编辑、编译、运行,获得程序结果。实验中可以采用Turbo C程序调试基本方法协助查找程序中的逻辑问题。四、实验步骤、过程编辑、编译、运行程序题1,分别使用数据-5,0,5,10,100做测试。编辑、编译、运行程序题2,分别使用数据1,7,8做测试。编辑、编译、运行程序题3,测试数据见下表:工龄y(年)现工资S0(元)252200221900181700161400尝试跟踪程序题1运行。用F7或F8键单步跟踪程序,用F7检查变量值,用F4可以将程序运行到光标当前位置。五、源程序清单、测试
15、数据、结果。给定y=f(x)函数,要求输入x的值,求y的值。#include main() float x,y; scanf(%f,&x); if(x0) y=fabs(x); else if(x10) y=x*x; else y=log10(x); printf(%fn,y);测试运行:-55.00.525.101.1002.2、输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值。main() int week; printf(Input(1-7):); scanf(%d,&week); switch(week) case 1:printf(Mon.n); break; case
16、2:printf(Tue.n); break; case 3:printf(Wed.n); break; case 4:printf(Tur.n); break; case 5:printf(Fri.n); break; case 6:printf(Sat.n); break; case 7:printf(Sun.n); break; default:printf(The input is wrong!n); 测试运行:Input(1-7):1Mon.Input(1-7):5Fri.Input(1-7):8The input is wrong!3、工资计算。main() float s0,s;
17、 int y; printf(Input s0,y:); scanf(%f,%d,&s0,&y); if(y=20) if(s0=2000)s=s0+200; else s=s0+180; else if(s0=1500)s=s0+150; else s=s0+120; printf(s=%fn,s);测试运行:Input s0,y:2200,25s=2400.Input s0,y:1900,22s=2080.Input s0,y:1700,18s=1850.Input s0,y:1400,16s=1520.六、实验出现的问题、实验结果分析(不要照抄哦,_)求绝对值对于浮点数要使用函数fabs
18、。使用abs是对整数取绝对值。以10为底的对数,应当使用函数log10。0X10不能表示为0=x10,否则尽管无语法错误,但是含义不正确。case语句与常量之间应当有空格,否则当做语句标号处理。如case1:。(使用单步跟踪发现)。七、实验小结程序错误分为语法错误和逻辑错误。语法错误可以由编译器协助检查,逻辑错误编译器无法检查出来。程序逻辑错误比语法错误更加隐蔽,程序跟踪可用于发现程序逻辑错误。调用库函数应当包含对应头文件,帮助进行类型匹配检查和类型转化,保证函数调用使用正确参数。实验4:循环结构程序设计实验名称: 循环结构程序设计 实验类型: 验证型 一、实验目的掌握while,do-whi
19、le,for循环的语法结构与应用。掌握while,do-while循环的区别。掌握Turbo C单步执行调试程序的方法。二、实验内容完成程序题:用三种循环结构,求1000以内奇数的和。用while,do-while循环求i-10的连加和,i由用户输入。有一堆零件(100200个之间),如果以4个零件为一组进行分组,则多2个零件;如果以7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件。编程求解这堆零件总数。提示:用穷举法求解。即零件总数x从100-200循环试探,如果满足所有几个分组已知条件,那么此时的x就是一个解。分组后多几个零件这种条件可以用求余运算获得条件表
20、达式。三、实验要求实验前编制源程序、对第2个实验内容需要准备测试数据。在Turbo C下完成程序的编辑、编译、运行。查看、分析程序结果。四、实验步骤、过程编辑、编译、运行程序题1。编辑、编译、运行程序题2,分别使用数据3,15做测试。编辑、编译、运行程序题3。五、源程序清单、测试数据、结果。用三种循环结构,求1000以内奇数的和。(1)用while结构实现void main() long sum; int i,item; sum=0,i=0,item=2*i+1; while(item1000) sum=sum+item; i+; item=2*i+1; printf(1+3+5+.999=%
21、ldn,sum);(2)用do-while结构实现void main() long sum; int i,item; sum=0,i=0,item=2*i+1; do sum=sum+item; i+; item=2*i+1; while(item1000); printf(1+3+5+.999=%ldn,sum);(3)用for结构实现void main() long sum; int i,item; for(sum=0,i=0,item=2*i+1; item1000; i+,item=2*i+1) sum=sum+item; printf(1+3+5+.999=%ldn,sum);运行结
22、果:1+3+5+.999=2、用while,do-while循环求i-10的连加和,i由用户输入。(1)用while循环实现main() int sum=0,i; printf(Input i:);scanf(%d,&i); while(i=10) sum+=i; i+; printf(sum=%dn,sum);测试运行结果:Input i:7sum=34Input i:15sum=0(2)用do-while循环实现main() int sum=0,i; printf(Input i:);scanf(%d,&i); do sum+=i; i+; while(i=10); printf(sum=
23、%dn,sum);测试运行结果:Input i:7sum=34Input i:15sum=153、穷举法搜索计算零件总数main() int x,flag=0; for(x=100; x=200; x+) if(x%4=2&x%7=3&x%9=5) flag=1; break; if(flag)printf(x=%dn,x); else printf(no answer!n);运行结果:x=122六、实验出现的问题、实验结果分析对于累加问题,获得的累加值可能超过变量允许的范围,出现溢出错误(逻辑错误-编译时不能发现)。程序题1:原来sum定义为int,后来改为long后程序获得了正确的结果。七
24、、实验小结变量类型的选择应当考虑变量的使用范围。循环程序可以用三种结构实现,三种结构一般情况可以相互替换。while,do-while循环的区别:while先判断循环条件,如果条件满足再执行循环体,如果条件不满足,循环体一次也不执行。do-while先执行一次循环体再判断循环条件,以决定是否再次执行循环体,即就是说循环体至少执行一次。穷举法是利用计算机高速计算能力试探搜索求解复杂问题的一种很好的方法。实验5:数组程序设计实验名称: 数组程序设计 实验类型: 验证型 一、实验目的掌握一维数组和二维数组的定义、初始、数组元素引用。掌握一维数组和二维数组的输入/输出。掌握与数组有关的算法。二、实验内
25、容编制程序,求Fibonachi数列的前10项。提示:Fibonachi的第1,2项分别为1,1。其后任何一项满足ai=ai-2+ai-1。编写找出1100之间能被7或11整除的所有整数,存放在数组a中,并统计其个数。要求以每行排列5个数据的形式输出a数组中的数据。设有44的方阵,其中的元素由键盘输入。求出(1)主对角线上元素之和;(2)辅对角线上元素之积;(3)方阵中最大的元素。提示:主对角线元素行、列下标相同;辅对角线元素行、列下标之和等于方阵的最大行号(或最大列号)下标、行列号基于0。三、实验要求编制源程序,对于程序3输入测试数据。在Turbo C下完成程序的编辑、编译、运行。查看、分析
26、程序结果。四、实验步骤、过程编辑、编译、运行程序题1。编辑、编译、运行程序题2。编辑、编译、运行程序题3。测试数据:1 2 3 45 6 7 89 10 11 1213 14 15 16五、源程序清单、测试数据、结果。1、求Fibonachi数列的前10项main() int f11=0,1,1,n; for(n=3; n=10; n+) fn=fn-1+fn-2; for(n=1; n=10; n+) printf(%d ,fn); printf(n);程序结果:1 1 2 3 5 8 13 21 34 552、找出1100之间能被7或11整除的所有整数main() int n=0,a100
27、,i; for(i=1; i=100; i+) if(i%7=0|i%11=0) an=i; n+; printf(n=%dn,n); for(i=0; in; i+) printf(%dt,ai); if(i+1)%5=0)printf(n); printf(n);程序结果:n=227 11 14 21 2228 33 35 42 4449 55 56 63 6670 77 84 88 9198 993、方阵求出(1)主对角线上元素之和;(2)辅对角线上元素之积;(3)方阵中最大的元素。#include #define N 4main() int aNN,s1=0,s2=1,max=0,i,
28、j; for(i=0; iN; i+) for(j=0; jN; j+) scanf(%d,&aij); max=a00; for(i=0; iN; i+) for(j=0; jmax)max=aij; printf(s1=%d,s2=%d,max=%dn,s1,s2,max);程序结果:1 2 3 45 6 7 89 10 11 1213 14 15 16s1=34,s2=3640,max=16六、实验出现的问题、实验结果分析数组下标范围容易搞错,容易产生越界错误。利用scanf()输入数据时取地址符号(&)容易忘记。七、实验小结典型算法需要在理解的基础上记忆。实验8:字符数组与字符串函数实
29、验名称: 字符数组与字符串函数 实验类型: 验证型 一、实验目的掌握字符数组的定义、初始、数组元素引用、输入输出。掌握字符数组的处理掌握常用字符串处理函数二、实验内容编制程序:对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来字符数组中,最后输出。(不得调用任何字符串处理函数,包括strlen)例如:输入hello world 输出dlrow olleh编写程序:对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母,其它字符不变。(不调用任何字符串处理函数)例如:输入:Hello World!输出:hELLO wORLD!编写程序:从键盘输入4个字符串(
30、长度20),存入二维字符数组中。然后对它们进行排序(假设由小到大顺序),最后输出排序后的4个字符串。(允许使用字符串函数)提示:字符串比较可以用strcmp函数实现,排序方法可以选择法或冒泡法。三、实验要求绘制流程图、编制源程序,测试数据。1-2题不得使用任何字符串处理函数,3题允许使用字符串处理函数。在Turbo C下完成程序的编辑、编译、运行。查看、分析程序结果。四、实验步骤、过程编辑、编译、运行程序题1,使用数据:hello world做测试。编辑、编译、运行程序题2,使用数据:Hello World做测试。编辑、编译、运行程序题3,使用数据:SpanishChinaAmericaJap
31、an做测试。五、源程序清单、测试数据、结果。1、字符串进行逆序main() char str100;int n,i,j; gets(str); n=0; while(strn)n+; for(i=0,j=n-1; ij; i+,j-) char k=stri; stri=strj; strj=k; puts(str);测试运行结果:hello worlddlrow olleh2、大写变小写,小写变大写#include main() char s100; int i; gets(s); for(i=0; si!=0; i+) if(si=A&si=a&si=z)si-=32; puts(s);测
32、试运行结果:Hello World!hELLO wORLD!3、串排序(采用选择法排序)#include #define N 4main() char sN20; int i,j; for(i=0; iN; i+)gets(si); for(i=0; iN-1; i+) for(j=i+1; j0) char t20;strcpy(t,si); strcpy(si,sj); strcpy(sj,t); for(i=0; iN; i+)puts(si);测试运行结果:SpanishChinaAmericaJapanAmericaChinaJapanSpanish六、实验小结对于字符串的处理可以将
33、字符串当作字符数组逐个元素处理,也可以调用字符串处理函数整体处理。字符串串尾结束符号0在编制字符串处理程序很重要。字符串处理函数可以减轻编程工作量,了解并熟悉常用字符串处理函数乃至其它系统函数可以提高软件开发的效率。要调用系统函数一般应包含此系统函数的“头文件”,以便编译系统检查调用格式。如果在编程时忘记一个系统函数的调用格式,可以将光标停留在此函数上,并按ctrl+F1键联机查询。gets()可以输入带空格字符串,而scanf()不能。实验6:函数的定义与调用实验名称: 函数的定义与调用 实验类型: 综合型 一、实验目的掌握函数定义(返回、函数名、参数、函数体),调用。掌握函数的声明嵌套调用
34、、递归调用。二、实验内容编制函数fun,其功能是:删除一个字符串中指定的字符。要求:原始字符串在主函数中输入,处理后的字符串在主函数中输出。例如:输入“I am a teacher,you are a student”和e输出“I am a tachr,you ar a studnt”。编制函数sortstr,其功能是对多个字符串进行排序。要求:欲排序的字符串在主函数中输入,排好序的字符串在主函数中输出。提示:排序算法可参照实验9第4题,即将排序算法改为由一个函数sortstr实现。掌握函数声明的使用。三、实验要求1、2题编制源程序和测试数据;在Turbo C下完成程序的编辑、编译、运行并分析
35、程序结果。3题按实验步骤完成,认真观察,仔细思考思考题。四、实验步骤、过程编辑、编译、运行程序题1。使用字符串:“I am a teacher,you are a student”以及字符e做测试。编辑、编译、运行程序题2。使用数据:“Spanish”、“China”、“America”、“Japan”、“England”做测试。掌握函数声明的使用输入下面程序,编译、连接,如果没有输错,应该提示成功。运行获得正确结果100。float fun(float f) return f*f;void main() float k;k=fun(10.0); printf(%fn,k);把fun函数移到m
36、ain()函数之后,再次编译,提示错误:Type mismatch in redeclaration of fun,(重新定义了fun,类型不一致)。提示:移动一块程序可以用KB,KK定义要移动的块,然后移动光标到要移动的目标位置,KV移动程序块。另外,KC还可以复制一块程序,试试吧!在main()函数前增加函数声明float fun(float f);,再次编译,提示成功并能正确运行获得结果。思考:在什么情况需要函数声明?五、源程序清单、测试数据、结果。删除字符串中指定的字符#include void fun(char ,char);void main() char s100,c; gets
37、(s); c=getchar(); fun(s,c); puts(s);void fun(char s,char c) int i,j; for(i=0; si!=0; i+) if(si=c) for(j=i; sj!=0; j+) sj=sj+1; 测试运行:I am a teacher,you are a studenteI am a tachr,you ar a studnt字符串进行排序(选择法)#include void sortstr(char s20,int n) int i,j; for(i=0; in-1; i+) for(j=i+1; j0) char t20; strc
38、py(t,si); strcpy(si,sj); strcpy(sj,t); void main() char s520; int i; for(i=0; i5; i+)gets(si); sortstr(s,5); for(i=0; i5; i+)puts(si);测试运行:SpanishChinaAmericaJapanEnglandAmericaChinaEnglandJapanSpanish函数声明的使用float fun(float f) return f*f;void main() float k;k=fun(10.0); printf(%fn,k);或:float fun(float f);void main() float k;k=fun(10.0); printf(%fn,k);float fun(float f) return f*f;是正确的程序形式。六、实验小结通过编制两个函数,您认为定义函数的关键是什么?答:定义函数的关键是确定函数头。确定了函数头就确定了函数的整体框架。应该在理解函数功能基础上,确定函数形式参数(出入口参数)、返回值类型(出口参数),进而确定函数头。在什么情况需要函数声明?答:函数调用出现在函数定义前时,应该在函数调用前进行函数声明。这样,可以使编