《C语言程序设计专用周》实训指导书(共33页).doc

上传人:飞****2 文档编号:14410840 上传时间:2022-05-04 格式:DOC 页数:33 大小:400.50KB
返回 下载 相关 举报
《C语言程序设计专用周》实训指导书(共33页).doc_第1页
第1页 / 共33页
《C语言程序设计专用周》实训指导书(共33页).doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《《C语言程序设计专用周》实训指导书(共33页).doc》由会员分享,可在线阅读,更多相关《《C语言程序设计专用周》实训指导书(共33页).doc(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上C语言程序设计专用周2实训指导书(供计算机类专业3年制专科使用)计算机科学技术系编制前 言程序设计是一门实践性很强的课程,实践教学在程序设计中是非常重要的教学环节。程序设计基础课程一直设有实训专用周,实训专用周是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。在程序设计的教学中,实践教学与基础教学各有侧重,互为补充。通过实验教学,可以验证、巩固和补充课堂讲授的知识;通过实验教学,可以使学生深入领会程序设计语言的功能和作用,理解程序的编译、运行机理,加

2、深对算法的程序实现本质的认识,从而具备较好的程序设计能力和解决问题的能力,并积累一定的实践经验,为今后在专业领域中用计算机解决问题打下扎实基础。实训专用周授课总时数为30学时。建议教师讲授学时为6学时,学生上机实验学时为24学时,教师也可根据学生的学习情况自行灵活地调整讲授学时和上机实验学时。本实训指导书根据程序设计基础课程选择的教材一般为C语言,故将实训项目分为四大部分,分别为模块化程序设计、数组与结构体的应用、综合练习、等级考试模拟考试,供教师根据学生掌握情况选择内容让学生练习。学生上机编译环境可选择Turbo C或Dev C+。由于时间仓促,在实训项目设置和实训方法设计上还有待进一步改进

3、,书稿中难免有疏漏之处,恳请各位老师和同学批评指正,以利进一步改进。目 录绪 论C 是一门高效实用的程序设计语言,它既可进行过程化程序设计,也可进行面向对象程序设计。随着 C 逐渐成为 ANSI 标准,这种新的面向对象程序设计语言已经成为了程序员最广泛使用的工具。本课程是一门计算机及相关专业的重要的专业基础课,开设实验课程主要目的是使学生掌握有关 C 语言的基本概念、基本语法和编程方法,理解 C 语言面向对象的重要特征, 促使学生理论联系实际,能够灵活应用自己所学的理论知识进行程序开发,增强学生的实践动手技能,并能够提高学生独立分析问题和解决问题的能力。通过程序设计基础实训专用周,使学生能将学

4、到的程序设计思想用到具体的工作和学习中。通过实训专用周,能够提高学生分析问题、解决问题的能力,从而运用所学知识解决实际问题,因而必须给予足够的重视。 学生在进行专用周实训时,建议首先明确专用周实训任务,复习与查阅一些相关资料。在实习过程中,能按要求完成实训内容,实训指导书后面虽附有每一部分每一小题的程序源代码,但只是提供了对应问题的一种算法思路,而学程序设计基础是为后继课程打基础,要求学生能独立编一些基本的程序,解决基本的数学和实际等问题,所以学生一定要严格要求自己,希望学生能进行独立的思考、独立的编程、独立的上机调试,这一点是非常重要的。同时,通过进行专用周实训后,希望学生能将理论灵活地应用

5、于实践,编写出正确、执行效率高、可读性好、界面友好的程序。实训要求、考核及说明建议学生在专用周中的实践练习中,对于指导书上前面四部分的基础练习、提升练习单独完成,同学之间可相互交流学习,但要独立上机编写调试,对于指导书上的第五部分学生可两人或三人分组完成。学生实训结束后需提交程序电子文档和实训报告(总结)。凡不按规定提交程序电子文档、报告(总结)或上交内容为抄袭,则整个实训成绩为“不及格”。实训采用百分制评定程序设计基础实训专用周成绩,学分为2学分,具体的评分标准参照如下:评分内容内涵比例按时出勤,遵守课堂纪律按学院及系部规定执行30按时完成规定内容能否按照要求编写程序50撰写报告(总结)思路

6、清晰,操作可行等20第一部分 模块化程序设计实训目的:在课堂教学的基础之上,进一步熟悉模块化程序设计思想,掌握用函数书写程序的技巧。函数是模块划分的基本单位,是对处理问题过程的基本抽象单元。同时使用函数也为代码的重用提供了技术上的支持,从而提高开发效率,增强程序的可靠性,便于分工合作和修改维护。实训准备要求:复习程序设计基础教材的相应章节,熟悉函数的定义、调用、函数的参数传递、函数的返回值等。熟悉上机编译环境。实训环境要求一人一机。实训步骤和内容:基础练习:1. 写一个函数,判断一个5位数是不是回文数。例:12321是回文数,个位与万位相同,十位与千位相同。编程指导及提示:! 定义函数,注意形

7、参、函数返回值类型等定义一个函数的语法格式为:类型 函数名(形式参数表)函数体;! 将输入的一个5位数的个、十、百、千、万位分离,再判定个位与万位、十位与千位是否相同,将判定结果返回给主函数! 程序运行演示:2. 编写一函数,将N*N方阵行列互换。编程指导及提示:! 函数的书写见上面的提示! N*N方阵用二维数组定义,定义格式如:int arrayNN;! 二维数组的输入、处理、输出均需用循环的嵌套来控制! 要实现N*N方阵行列互换关键是观察数组元素下标的变化规律。例一个3*3矩阵为: 1 2 3 4 5 6 7 8 9行列互换后该矩阵变为: 1 4 7 2 5 8 3 6 9! 程序运行演示

8、:3. 写一函数,使输入的一个字符串按反序存放,要求在主函数中输入和输出字符串。编程指导及提示:! 函数的书写见上面的提示! 字符数组的定义一维字符数组定义的格式为: char数组名常量表达式;! 字符串按反序存放即第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,,用循环控制,注意交换次数为N/2(N表示所输入字符串的长度)! 使用指针完成! 程序运行演示:4. 写一函数,将一个代表整型数的字符串(比如“-34”)转换为一个整型的数字。编程指导及提示:! 将字符串分两种情况考虑,一种情况是第一个字符是负号,另一种情况是全数字。! 程序运行演示:5. 编写一函数显示如下规则的图形,

9、每行*号个数及输出行数由主函数输入n值控制。* * * * * * * * * * * * * * * * * *编程指导及提示:! 观察图形变化规律,分成两部分(前四行和后四行)来控制输出较易实现,用循环嵌套处理,外层循环变量值由n变为1,内层循环由1变为i(i为外层循环变量名)! 程序运行演示:6. 写一函数,用“起泡法”对输入的10个字符由小到大排序。编程指导及提示:! 函数、主函数的书写见上面的提示! “起泡法”思路为:将相邻两个数比较,将较小的调到前头,较大的放到后头。经过1轮比较后,最大的数便调到最后一个位置。所以n个数要比较n-1趟,在第j趟中要进行n-j次比较。下面以一个整型数

10、组中的6个数为例演示进行第1趟比较的情况:第1次 第2次 第3次 第4次 第5次 结果! 起泡法代码:for (j=1;jN;j+) for (i=0;(istri+1) t=stri; stri=stri+1; stri+1=t;! 程序运行演示: 第二部分 数组、结构体、指针的应用实训目的:在课堂教学的基础之上,进一步了解构造数据类型,掌握一维数组、二维数组、字符数组、结构体、指针的应用及程序设计技巧。数组有利于我们对数据类型相同的许多数据进行分类与管理。实训准备要求:复习程序设计基础教材的相应章节,熟悉一维数组、二维数组、字符数组、结构体、指针的定义、初始化、使用等,熟悉上机编译环境。实

11、训环境要求一人一机。实训步骤和内容:基础练习(尽量采用模块化编程,即自定义函数):1. 输入两个字符串,比较这两个字符串是否相同并输出比较结果。要求不用任何字符串处理函数。编程指导及提示:! 应分别用循环求出两个字符数组的长度! 若两个字符数组的长度相等,则需用循环比较下标相同的每一对字符是否相等,若不相等则退出,若比较到最后则根据循环变量与数组长度是否相等判定两个字符数组是否相同! 若两个字符数组的长度不相等则直接输出不相同的比较结果! 程序运行演示:2. 设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。编程指导及提示:! N*N方阵

12、用二维数组定义、用二层循环控制输入和输出! 用二层循环控制处理方阵元素,判定主对角线上元素条件为:if(i=j),判定辅对角线上元素条件为:if(i+j=N-1)、求方阵中最大的元素判定条件为:if(aijmax)(i,j分别表示二维数组的行列下标)! 程序运行演示:3. 打印以下的杨辉三角形(10行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1编程指导及提示:! N*N方阵用二维数组定义,注意杨辉三角形为下三角! 对杨辉三角形赋值可分为两部分,第一部分为第一列和主对角线都为1,第二部分为其他元素都满足公式:aij=ai-1j-1+ai-1j! 程序运行演示:4

13、. 由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。编程指导及提示:! 用循环依次判定字符数组s中的每个字符与x是否相等,若不相等则赋给另一个数组存放,若相等则不赋给另一个数组存放,处理完后另一个数组即为删除了 x字符的数组。也可练习直接在一个数组中处理。! 程序运行演示:5. 已知数组int num120,num220中分别存放了两个20位整数的各个位的值,编写一个程序,求将这两个整数相加的结果。编程指导及提示:! 定义三个数组int num120,num220,num321; num321用于存放结果,因考虑进位故长度多1。! 循环控制输入num120,num220的

14、每一位数,注意都为一位! 循环控制相加,考虑进位是本题的关键! 程序运行演示:6. 将一个3*3的矩阵转置。用函数和指针实现。编程指导及提示:! N*N方阵用二维数组定义、用二层循环控制输入和输出! 用指针作函数参数,通过指针控制二维数组的元素处理for(i=0;i3;i+) for(j=i;j=0 &menu=0&m=5) switch(m) case 1: add();break; case 2: del_name();break; case 3: find(); break; case 4: disp(); break; case 5: tj(); break; else printf(

15、ntError input 05!n;! 程序运行演示:3、提升:要求以链表的方式完成题目2,并以文件的方式将学生信息存储到磁盘上。4、自行设计彩票系统参考代码如下:#define QIXI 7#define SUANS 2#include#include#includeint mmenup(void);int qixing(void);int suangse(void);int xuanhao(int);int mf(void);int sort(int p,int n);int qx7=-1,-1,-1,-1,-1,-1,-1;int ss7=-1,-1,-1,-1,-1,-1,-1;in

16、t main(void) mf(); return 0;int mf()int mn1,p;mmenup();dop= scanf(%d,&mn1);if(p=0)getchar();switch(mn1)case 1: qixing(); return 0;case 2: suangse();return 0;case 3: return 0;default: printf(erro input!n); while(1); int mmenup() clrscr(); printf(-cai piao sui ji xi tong-n); printf(1.qing xing cain);

17、printf(2.suang se qiun); printf(3.quitn); return 0;int qixing() int mn2,p,j; clrscr(); printf(-qing xing xuan hao-n); printf(nni xuan hao wei:); if(qx0!=-1) for(j=0;j7;j+) printf(%d ,qxj); printf(n); else printf(NULLn); printf(1.xuan hao.n); printf(2.return main menun); scanf(%d,&mn2); switch(mn2) c

18、ase 1:xuanhao(QIXI);break;case 2:mf();break;default:printf(erro input!n);mf(); return 0;int suangse() int mn3,p,j; clrscr(); printf(-suang se qiu xuan hao-n); printf(suang se qiu hao ma:); if(ss0!=-1) for(j=0;jzhongjian bianliang,fang chan sheng de sui ji shu /b-zhuang tai bian liang, biao shi shi c

19、han sheng fou zhong fu / j,k-xun huan kong zhi bian liang/qx-fang qixing cai hao ma,ss-fang suang se qiu hao ma*/ if(i=7) srand(int)time(0); for(j=0;j7;j+) qxj=0+(int)(9.0*rand()/(RAND_MAX+1.0); qixing(); else srand(int)time(0); for( j=0;j6;j+) b=0; t=1+(int)(33.0*rand()/(RAND_MAX+1.0); for(k=0;k=j;

20、k+) if( t=ssk) b=1; break; if(b=0) ssj=t; else j-; srand(int)time(0); ss6=1+(int)(16.0*rand()/(RAND_MAX+1.0); j=sizeof(ss)/sizeof(int)-1; /*dei dao shu zu chang du */ sort(ss,j); suangse(); return 0; int sort(int p,int n) int i,j,temp; for(i=0;in;i+) for(j=i;jpj) temp=pi; pi=pj; pj=temp; return 0; 附

21、件:计算机等级考试二级C语言笔试试题一、选择题(1)下列选项中不属于软件生命周期开发阶段任务的是 A)详细设计 B)概要设计 C)软件维护 D)软件测试(2)树是结点的集合,它的根结点数目是A)有且只有1 B)1或多于1 C)0或1 D)至少2(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和 A)语句成分 B)变量成分 C)对象成分 D)传输成分(5)冒泡排序在最坏情况下的比较次数是 A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2(6)下列叙述中,不属于

22、软件需求规格说明书的作用的是A)作为确认测试和验收的依据B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 C)便于用户、开发人员进行理解和交流D)便于开发人员进行需求分析 (7)下列叙述中错误的是 A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成 C)C程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在(8)下列不属于软件工程的3个要素的是A)方法 B)过程 C)工具 D)环境 (9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说

23、法都不对(10)下列叙述中正确的是 A)每个C程序文件中都必须有一个main()函数 B)在C程序的函数中不能定义另一个函数 C)C程序可以由一个或多个函数组成 D)在C程序中main()函数的位置是固定的(11)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (12)下列定义变量的语句中错误的是 A)double int_; B)int _int; C)char For D)float USS(13)下列叙述中正确的是 A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种 C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用(14)以下

24、选项中,合法的一组C语言数值常量是A) 0x8A B)12 C).177 D) 028(15)以下叙述中正确的是 A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)所有被调用的函数一定要在调用之前进行定义 (16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf(%d,&p); B)scanf(%d%d%d,a,b,c);C)scanf(%d,p); D) scanf(%d,a,b,c);(17) 有以下程序 main() int x,y,z; x=y=1; z=x+

25、,y+,+y; printf(%d,%d,%dn,x,y,z); 程序运行后的输出结果是 A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25&b-0;y-)if(y%3= =0) printf(%d,-y);程序的运行结果是A)732 B)433 C)852 D)874(23) 设有以下程序段 int x=0,s=0; while(!x!=0)s+=+x; printf(%d,s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序

26、段执行无限次 (24)有以下程序 fun(int x,int y)return(x+y); main() int a=1,b=2,c=3,sum; sum=fun(a+,b+b,a+b),C); printf(%dn,sum); 执行后的输出结果是 A)5 B)7 C)8 D)3(25)执行下面的程序段后,变量k中的值为 int k=3, s2; s0=k; k=s1*10; A)不定值 B)35 C)31 D)20 (26)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给

27、指针变量赋NULL(27)以下程序段的描述,正确的是 x=-1; do x=x*x; while(!x); A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误 (28)有以下程序 fun(int x,int y) static int m=0,i=2; i+=m+1;m=i+x+y; return m; main() int j=1,m=I,k; k=fun(j,m); printf(%d,k); k=fun(j,m); printf(%dn,k) 执行后的输出结果是A)5,5 B)5,11 C)11,11 D)11,5(29)有以下程序 fun(int x) int p; if(x=0x= =1) return(3); p=x-fun(x=2); retum p; main() prinf(%dn,fun(7); 执行后的输出结果是A)7 B)3 C)3 D)0(30)在16位编译系统上,右有定义int a =10,20,30,*p=&a;,当执行p+;后,下列说法错误的是 A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com