赞
踩
C语言程序设计实训指导书.doc
兰州职业技术学院信息工程系C语言程序设计实训指导书兰州职业技术学院编写编写说明C语言程序设计是计算机类专业的一门专业基础课。通过C语言中的数据类型,运算,语句结构及其程序设计的基本方法的学习,使学生掌握一门高级程序设计语言,为后续的专业课程奠定程序设计基础,特别是软件方面的课程打下了厚实的知识基础,同时也提供了必要的技能训练。因此,采用理论教学和学生实训相结合方式,使学生掌握程序设计的基本原理和编程方法,达到提高学生分析问题和解决问题的能力的目的。在教学中应该既重视课堂理论教学,又重视实验动手能力的培养目 录1实训项目一 C语言的运行环境和运行过程 12实训项目二 C语言的基础知识 33实训项目三 简单的C程序设计 54实训项目四 顺序结构程序设计 75实训项目五 选择结构程序设计 96实训项目六 循环结构程序设计 127实训项目七 一维数组 148实训项目八 二维数组 169实训项目九 函数 1810实训项目十 指针 20兰州职业技术学院C语言程序设计实训指导书实训项目一 C语言的运行环境和运行过程 一、 实训参考课时 2课时二、实训目的及要求 1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2、了解在该系统上如何编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序,初步了解C源程序的特点三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)Turbo C的启动以及工作环境介绍。1、从DOS环境进入 在DOS命令行上键入 CCD TC(指定当前目录为TC子目录) CTC 进入Turbo C环境 2、从Windows环境进入 在Windows环境中,如果本机中已安装了Turbo C,可以在桌面上建立一个快捷方式,双击该快捷图标即可进入C语言环境。或者从开始菜单中找到“运行”,在运行对话框中键入“CTCTC”,“确定”即可。 (1)主菜单 显示屏的顶部是主菜单条,它提供了8个选择项 File 处理文件(装入、存盘、选择、建立、换名存盘、写盘),目录操作(列表、改变工作目录),退出Turbo C,返回DOS状态。 Edit 建立、编辑源文件。 Run 自动编辑、连接并运行程序。 Compile 编辑、生成目标文件组合成工作文件。 Project 将多个源文件和目标文件组合成工作文件。 Option 提供集成环境下的多种选择和设置(如设置存储模式、选择编参数、诊断及连接任选项)以及定义宏;也可记录Include、Output及Library文件目录,保存编译任选项和文件加载任选项。 Debug 检查、改变变量的值、查找函数,程序运行时查看调用栈。选择程序编译时是否在执行代码中插入调试信息。 Break/Watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。 3、 Turbo C环境中运行C语言源程序的步骤 1 编辑源文件 2 源程序的编译、连接 若有错误,则在信息窗口显示出相应的信息或警告,按任意键返回编辑窗口,光标停在出错位置上,可立即进行编辑修改。修改后,再按F9键进行编辑、连接。如此反复,直到没有错误为止,即可生成可执行文件。 注意C程序的连接是在编译后自动完成的。 3 执行程序 4 退出Turbo C集成环境 (二)在Turbo C环境中运行C语言源程序 【例1】编程实现在屏幕上显示如下三行文字 Hello, world Wolcome to the C language world Everyone has been waiting for. 在Turbo C的集成环境下,键入如下源文件。AltF组合键打开File菜单,File菜单中Write to选项可将默认noname.c文件名改为任意文件名。程序如下 main printfHello,Worldn; printfWolcome to the C language worldn; printfEveryone has been waiting for.n; 然后用CtrlF9编辑执行example.c,用AltF5查看结果,即在屏幕上显示题目要求的三行文字。按回车键重新返回Turbo C的编辑环境。注意,在运行 程序之前最好先存盘。 【例2】输入并运行程序,写出运行结果。 main int a,b,sum; a123;b456; sumab; printf“sum is dn”,sum; 运行方法同上,最后结果为sum is 579。 【例3】 输入并运行程序,写出运行结果。 main int a,b,c; scanf“d,d”, cmaxa,b; printf“maxd”,c; int maxint x,int y int z; if xy zx; else zy; returnz; 这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3, 5” ,回车,在用户屏幕上就会输出“max 5” 。 (三)、实训思考题 1、输入并运行例题中程序,熟悉调试C程序的的方法与步骤。 2、写出一个C程序的构成。 五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目二 C语言的基础知识 一、实训参考课时 2课时二、实训目的及要求 1、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 2、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加()和自减()运算符的使用。 1、 进一步熟悉C程序的编辑、编译、连接和运行的过程。三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)调试运行课本中第二章示例程序(二)上机练习1、输入程序,运行出结果。 mian char c1 , c2; c197;c298; printf“c c”, c1, c2; 2、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 main char c1a,c2b,c3c,c4 101 ,c5 116 ; printf“ac bctabcn”,c1,c2,c3; printf“tbc c”,c4,c5; 3、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 main int i , j , m , n ; i8; j10; mi; nj; printf“d,d,d,d”,i,j,m,n; 4、在此基础上 (1)加一个printf语句,并运行 printf“d,d”, c1, c2 ; (2)再将第二行改为 int c1, c2; 再使之运行。 (3)再将第三行改为 c1300; c2400; 再运行并分析其运行结果。 说明1、在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。 2、在该程序中,主要考查对转义字符的掌握情况。 3、此程序主要考查自加、自减运算符以及复合运算符的用法。 (三)实训思考题 1、“”和“”有什么区别 2、“ flost x,y; char c1,c2; scanf“ad,bd”, scanf“f, e”, scanf“ printf“ad,bd,xf,yf,c1c,c2cn”,a,b,x,y,c1,c2; 运行程序时必须按如下方式在键盘上输入数据 a3,b7 8.5,71.82 a A 2、输入三角形三边长,求三角形面积。 include “math.h” main float a,b,c,s,area; scanf“f ,f,f”, s1.0/2*abc; areasqrts*s-a*s-b*s-c; printf“areaf”,area; 3、已知圆半径,圆柱高,求圆周长,圆柱体积。 main float r,h,l,v,pi; pi3.1415926; scanf“f,f”, l2*pi*r; vpi*r*r*h; printf“圆周长为 6.2f n”,l; printf“圆柱体积为 6.2f ”,v; 4、输入一个摄氏温度,要求输出华氏温度。公式为f5/9*c32. main float c,f; scanf“f”, f5.0/9*c32; printf“ 5.2f n”,c; (二)实训思考题 编程序,并上机运行。用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比较用printf和putchar函数输出字符的特点。五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目四 顺序结构程序设计 一、 训参考课时 2课时二、实训目的及要求 1掌握C语言程序的顺序结构 2掌握常用的C语言语句,熟练应用赋值、输入、输出语句。三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习 1、调试并运行下列程序【案例】用*号输出字母C的图案。编程分析可先用*号在纸上画出字母C,再分行输出。程序如下include stdio.hmain printf(Hello C-worldn);printf( n);printf( *n);printf( * n);printf( n);【案例】从键盘输入一个大写字母,要求改用小写字母输出。include stdio.hmain char c1,c2;printf( a uppercase letter );c1getchar;putchar(c1);printf(,dn,c1);c2c132; /*将小写字母转换成对应的大写字母*/printf(c,dn,c2,c2);在此基础上,做以下改动将程序第57行改为a61; b62; c1a; c2b; f3157890121; g01234567893; df ; eg;mpa50000; nbq-60000; 运行程序,分析结果。 在的基础上将printf语句改为printf(”ad,bd,c1c,c2c, d15.6f,e15.12fn”,a,b,c1,c2,d,e); printf(”ff,gf,md,nd,pd,qdn”,f,g,m,n,p,q);运行程序。 将p,q改用o格式符输出。 改用 scanf函数输入数据而不用赋值语句,scanf函数如下scanf“d,d,c,c,f,f,lf,lf,ld,ld,u,u”,输入的数据如下62,a,b,3.56,-6.87,3,157.890121,0.123456789,50000,-60000,37678,40000(说明lf和ld格式符分别用于输入double型和long型数据)分析运行结果。 将scanf函数中的lf和ld改为f和d,运行程序并观察分析结果。(二)实训作业1、编程序,并上机运行。用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比较用printf和putchar函数输出字符的特点。 2、是将一个3位数(假设个位数不为0)的个位数和百位数进行交换的算法流程图,该数通过键盘输入得到。例如,输入3位数123回车,经交换后,输出的数为321。请根据算法编写相应代码。开始定义整形变量x,a,b,c,t给x输入3位数 输出交换前的数交换个位数和百位数x交换后的3位数输出交换后的数结束a百位数b十位数c个位数 五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告 实训项目五 选择结构程序设计 一、参考课时 4课时二、实训目的及要求 1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 2、学会正确使用逻辑运算符和逻辑表达式; 三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习1、已知三个数a,b,c,找出最大值放于max中。 编程分析由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中ifelse 形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。Max即为a,b,c中的最大值。 include stdio.h main int a,b,c,max; /*定义四个整型变量*/ scanf“ad,bd,cd”, if ab maxa; /*ab*/ else maxb; /*ab*/ if cmax maxc; /*c是最大值*/ printfmaxd,max; 若输入下列数据,分析程序的执行顺序并写出运行结果 (1)a1,b2,c3 (2)a2,b1,c3 (3)a3,b2,c1 (4)a3,b1,c2 (5)a3,b3,c2 (6)a2,b1,c2 2、输入某学生的成绩,经处理后给出学生的等级,等级分类如下 90分以上(包括90) A 80至90分(包括80)B 70至80分(包括70)C 60至70分(包括60)D 60分以下E 方法一用if嵌套 分析 由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用if嵌套前,应先判断输入的成绩是否在0100之间。 includestdio.h main int score; char grade; printfnplease a student score; scanff, ifscore100score0 printfn error; else ifscore90 gradeA; else ifscore80 gradeB; else ifscore70 gradeC; else ifscore60 gradeD; else gradeE; printfnthe student gradec,grade; 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。 方法二用switch语句 分析 switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。 includestdio.h main int g,s; char ch; printfn a student grade; scanfd, sg/10; ifs0s10 printfn error; else switch s case 10 case 9 chA; break; case 8 chB; break; case 7 chC; break; case 6 chD; break; default chE; printfnthe student scortc,ch; 输入测试数据,同方法一一样调试程序并写出结果。 (二)实训作业1、函数 y x x1 2x-1 1x10 3x-11 x10 用scanf函数输入x的值分别为x1,110,10三种情况,求y值。2、输入三个数,按由小到大的顺序输出。3、判断下面程序段的运行结果(1)int a5,b,i57; b(i10 i2 i3 a a);printf(“bdn”,b);(2)int a2,b2,c;ca b;printf(“cdn”,c);(3)nt a5 ,x6;if(xa) printf(“1dn”,x);else printf(2dn”,x);(4)int a,x65;if(x3)a1;elsea0;printf(“d”,a);(5)int x,a1;if(x5 a) printf(“dn”,a);else printf(“dn”,x);6 运行程序时若键盘输入F回车,则以下程序段的运行结果是. cgetchar;if(cAcZcacz) cc(cAcZ c32c); putchar(c); else printf(“Errorn”);五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目六 循环结构程序设计 一、参考课时 4课时二、实训目的及要求 熟练掌握while、dowhile和for三种循环语句的应用。三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习1、调试并运行下列程序【案例】用while循环语句求1*2*3100的值。编程分析算法可参见案例5.2。程序如下includestdio.hmain int i1; double m1; while (i100) m*i; i; printf(1*2*3100f, m); 程序运行结果 1*2*3100 9.332 621 544 394 410 22e157 程序说明(1)在循环体中,要有改变循环控制变量值的操作,否则循环将变为死循环。(2)改变循环控制变量值的语句应放在合适的位置,如果把语句“i”放在“m*i”的前面,循环少执行一次。 (3)本案例while语句与for 语句的功能相同。在C语言中不同循环语句之间可以相互转换。【案例】编写程序,从键盘输入若干学生的成绩,并输出在屏幕上(要求每行输出三个成绩),用1结束循环的执行。(1)用while循环语句实现。includestdio.hmain() int a,n0;scanf(“d”,while(a-1) printf(4d,a);n;if (n3 0)printf(“n”);scanf(“d”, (2) 用do-while循环语句实现。includestdio.hmain() int a,n0;do scanf(“d”, printf(4d,a);n;if (n3 0) printf(“n”); while(a-1);(3)用for 循环语句实现。includestdio.hmain() int a,n0;for(scanf(“d”, a-1; scanf(“d”, n;if (n3 0)printf(“n”); 二实训作业1、求5 2、求和s123 3、求积s1*3*5 4、求和s 333333 5、有一数列2/1,3/2,5/3,8/5,求出这个数列的前10项之和。6、打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身7、编程求100之内的所有完数。(一个数如果恰好等于它的因子之和,这个数就称为完数) 五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目七 一维数组 一、参考课时 4课时二、实训目的及要求 1、掌握一维数组的定义、赋值和输入输出的方法; 2、掌握字符数组的使用; 3、掌握与数组有关的算法(例如排序算法)。三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习1、在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。 方法一起泡排序 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。 define N 10 includestdio.h main int aN,i,j,temp; printfplease d numbersn,N; fori0;iN;i scanfd, fori0;iN-1;i forj0;jN-1-i;j ifajaj1 tempaj; ajaj1; aj1temp; printfthe array after sortn; fori0;iN;i printf5d,ai; 方法二选择排序 首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。 includestdio.h define N 10 main int aN,i,j,r,temp; printfplease d numbersn,N; fori0;iN;i scanfd, fori0;iN-1;i ri; forji1;jN;j ifajar rj; ifri tempar; arai; aitemp; printfthe array after sortn; fori0;iN;i printf5d,ai; printfn; (二)实训作业输入一串字符,计算其中空格的个数include stdio.h main char c30; int i,sum0; getsc; fori0;istrlenc;i ifci sumsum1; printf空格数为d n,sum; (二)实训作业1、已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。 2、输入一行字符存入在数组中,并将其中所有大写字母改为对应的小写字母后按逆序输出。3、输入一个字符串(至少含有6个有效字符)存入在一维数组中,然后将前6个字符逆序存放,例如,输入abcdefgh,则数组中最终存放fedcbagh.五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目八 二维数组 一、参考课时 2课时二、实训目的及要求 1、掌握二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组的使用;三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习调试并运行下列程序1、有一个34的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。 define M 3 define N 4 main int max,i,j,r,c; static int aMN123,94,-10,218,3,9,10,-83,45,16,44,-99; maxa00; fori0;iM;i forj0;jN;i if aijmax max aij; ri; cj; printf“maxd , row d , columd n”,max , r, c; 2、打印以下图案 * * * * * * * * * * * * * * * * * * * * * * * * * main char a5 * , * , * , * , * ; int i,j,k; char space ; fori0;i5;i /*输出5行*/ printfn; /* 输出每行前先换行* / printf ; /* 每行前面留5个空格 */ for j1;ji;j printfc,space; /* 每行再留1个空格*/ for k0;k5;k printfc,ak; /*每行输入5个*号*/ 3、 求矩阵下三角形元素之和。 define N 6 main int i,j,sum0; int aNN0; printf 55 datan; fori1;iN;i printf the d line datan,i; forj1;jN;j scanfd, fori1;iN;i forj1;jN;j printf5d,aij; printfn; fori1;iN;i forj1;ji;j sumsumaij; printfsumdn,sum; (二)、实训作业1、 求一个33矩阵对角线元素之和。4、输入两个字符串,并将其中较小的字符串连接到大的字符串后面。5、定义24二维数组,并输入前3列数据赋给各元素,最后将每行总和放在最后一列。五、实训考核标准理解实训原理,完成实训内容,记录分析实训结果,完成实训报告实训项目九 函数一、参考课时 4课时二、实训目的及要求 1、掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2、了解主调函数和被调函数之间的参数传递方式。 三、实训条件要求简述PC机, Turbo C集成环境四、实训内容 (一)实训练习【案例】计算s2232编程分析可用两个函数,实现求解。一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用 f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。程序如下long f1int p /*定义求平方值的函数*/ int k; long r; long f2int; kp*p; rf2k; return r;long f2int q /*定义求阶乘值的函数*/ long c1; int i; fori1;iq;i cc*i; return c;main /*主函数*/ int i; long s0; for i2;i3;i ssf1i; /*调用函数,进行累加,参数为i*/ printfnsldn,s;程序运行结果s362904【案例】编写函数arer求出10个数的平均值,并找出其中的最大值和最小值。返回主函数输出其结果(允许增添和改动语法成分,但不得删除整条语句)。main float ave , a 10 ; int i ; for i0 ; i10 ; i scanf “f” , a ; ave aver a , 10 ; printf “max6.2fn min6.2fn” ,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。