您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 《C语言程序设计专用周》实训指导书
1《C语言程序设计专用周2》实训指导书(供计算机类专业3年制专科使用)计算机科学技术系编制2前言程序设计是一门实践性很强的课程,实践教学在程序设计中是非常重要的教学环节。程序设计基础课程一直设有实训专用周,实训专用周是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。在程序设计的教学中,实践教学与基础教学各有侧重,互为补充。通过实验教学,可以验证、巩固和补充课堂讲授的知识;通过实验教学,可以使学生深入领会程序设计语言的功能和作用,理解程序的编译、运行机理,加深对算法的程序实现本质的认识,从而具备较好的程序设计能力和解决问题的能力,并积累一定的实践经验,为今后在专业领域中用计算机解决问题打下扎实基础。实训专用周授课总时数为30学时。建议教师讲授学时为6学时,学生上机实验学时为24学时,教师也可根据学生的学习情况自行灵活地调整讲授学时和上机实验学时。本实训指导书根据程序设计基础课程选择的教材一般为C语言,故将实训项目分为四大部分,分别为模块化程序设计、数组与结构体的应用、综合练习、等级考试模拟考试,供教师根据学生掌握情况选择内容让学生练习。学生上机编译环境可选择TurboC或DevC++。由于时间仓促,在实训项目设置和实训方法设计上还有待进一步改进,书稿中难免有疏漏之处,恳请各位老师和同学批评指正,以利进一步改进。3目录第一部分模块化程序设计...........................................................................................................6基础练习...................................................................................................................................6提升练习...................................................................................................错误!未定义书签。第二部分数组、结构体、指针的应用.....................................................................................10基础练习.................................................................................................................................10提升练习.................................................................................................................................13第三部分综合题...........................................................................................................................15附件:计算机等级考试二级C语言笔试试题............................................................................224绪论C是一门高效实用的程序设计语言,它既可进行过程化程序设计,也可进行面向对象程序设计。随着C逐渐成为ANSI标准,这种新的面向对象程序设计语言已经成为了程序员最广泛使用的工具。本课程是一门计算机及相关专业的重要的专业基础课,开设实验课程主要目的是使学生掌握有关C语言的基本概念、基本语法和编程方法,理解C语言面向对象的重要特征,促使学生理论联系实际,能够灵活应用自己所学的理论知识进行程序开发,增强学生的实践动手技能,并能够提高学生独立分析问题和解决问题的能力。通过程序设计基础实训专用周,使学生能将学到的程序设计思想用到具体的工作和学习中。通过实训专用周,能够提高学生分析问题、解决问题的能力,从而运用所学知识解决实际问题,因而必须给予足够的重视。学生在进行专用周实训时,建议首先明确专用周实训任务,复习与查阅一些相关资料。在实习过程中,能按要求完成实训内容,实训指导书后面虽附有每一部分每一小题的程序源代码,但只是提供了对应问题的一种算法思路,而学程序设计基础是为后继课程打基础,要求学生能独立编一些基本的程序,解决基本的数学和实际等问题,所以学生一定要严格要求自己,希望学生能进行独立的思考、独立的编程、独立的上机调试,这一点是非常重要的。同时,通过进行专用周实训后,希望学生能将理论灵活地应用于实践,编写出正确、执行效率高、可读性好、界面友好的程序。5实训要求、考核及说明建议学生在专用周中的实践练习中,对于指导书上前面四部分的基础练习、提升练习单独完成,同学之间可相互交流学习,但要独立上机编写调试,对于指导书上的第五部分学生可两人或三人分组完成。学生实训结束后需提交程序电子文档和实训报告(总结)。凡不按规定提交程序电子文档、报告(总结)或上交内容为抄袭,则整个实训成绩为“不及格”。实训采用百分制评定程序设计基础实训专用周成绩,学分为2学分,具体的评分标准参照如下:评分内容内涵比例按时出勤,遵守课堂纪律按学院及系部规定执行30%按时完成规定内容能否按照要求编写程序50%撰写报告(总结)思路清晰,操作可行等20%6第一部分模块化程序设计实训目的:在课堂教学的基础之上,进一步熟悉模块化程序设计思想,掌握用函数书写程序的技巧。函数是模块划分的基本单位,是对处理问题过程的基本抽象单元。同时使用函数也为代码的重用提供了技术上的支持,从而提高开发效率,增强程序的可靠性,便于分工合作和修改维护。实训准备要求:复习程序设计基础教材的相应章节,熟悉函数的定义、调用、函数的参数传递、函数的返回值等。熟悉上机编译环境。实训环境要求一人一机。实训步骤和内容:基础练习:1.写一个函数,判断一个5位数是不是回文数。例:12321是回文数,个位与万位相同,十位与千位相同。编程指导及提示:定义函数,注意形参、函数返回值类型等定义一个函数的语法格式为:类型函数名(形式参数表){函数体;}将输入的一个5位数的个、十、百、千、万位分离,再判定个位与万位、十位与千位是否相同,将判定结果返回给主函数程序运行演示:2.编写一函数,将N*N方阵行列互换。编程指导及提示:函数的书写见上面的提示N*N方阵用二维数组定义,定义格式如:intarray[N][N];二维数组的输入、处理、输出均需用循环的嵌套来控制要实现N*N方阵行列互换关键是观察数组元素下标的变化规律。例一个3*3矩阵为:1237456789行列互换后该矩阵变为:147258369程序运行演示:3.写一函数,使输入的一个字符串按反序存放,要求在主函数中输入和输出字符串。编程指导及提示:函数的书写见上面的提示字符数组的定义一维字符数组定义的格式为:char数组名[常量表达式];字符串按反序存放即第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,…,用循环控制,注意交换次数为N/2(N表示所输入字符串的长度)使用指针完成程序运行演示:4.写一函数,将一个代表整型数的字符串(比如“-34”)转换为一个整型的数字。编程指导及提示:将字符串分两种情况考虑,一种情况是第一个字符是负号,另一种情况是全数字。程序运行演示:5.编写一函数显示如下规则的图形,每行‘*’号个数及输出行数由主函数输入n值控制。*********8***********编程指导及提示:观察图形变化规律,分成两部分(前四行和后四行)来控制输出较易实现,用循环嵌套处理,外层循环变量值由n变为1,内层循环由1变为i(i为外层循环变量名)程序运行演示:6.写一函数,用“起泡法”对输入的10个字符由小到大排序。编程指导及提示:函数、主函数的书写见上面的提示“起泡法”思路为:将相邻两个数比较,将较小的调到前头,较大的放到后头。经过1轮比较后,最大的数便调到最后一个位置。所以n个数要比较n-1趟,在第j趟中要进行n-j次比较。下面以一个整型数组中的6个数为例演示进行第1趟比较的情况:起泡法代码:for(j=1;jN;j++)for(i=0;(iN-j)&&(str[i+1]!='\0');i++)if(str[i]str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}程序运行演示:a[0]9a[1]8a[2]5a[3]4a[4]2a[5]0895420859420854920854290854209第1次第2次第3次第4次第5次结果910第二部分数组、结构体、指针的应用实训目的:在课堂教学的基础之上,进一步了解构造数据类型,掌握一维数组、二维数组、字符数组、结构体、指针的应用及程序设计技巧。数组有利于我们对数据类型相同的许多数据进行分类与管理。实训准备要求:复习程序设计基础教材的相应章节,熟悉一维数组、二维数组、字符数组、结构体、指针的定义、初始化、使用等,熟悉上机编译环境。实训环境要求一人一机。实训步骤和内容:基础练习(尽量采用模块化编程,即自定义函数):1.输入两个字符串,比较这两个字符串是否相同并输出比较结果。要求不用任何字符串处理函数。编程指导及提示:应分别用循环求出两个字符数组的长度若两个字符数组的长度相等,则需用循环比较下标相同的每一对字符是否相等,若不相等则退出,若比较到最后则根据循环变量与数组长度是否相等判定两个字符数组是否相同若两个字符数组的长度不相等则直接输出不相同的比较结果程序运行演示:2.设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。编程指导及提示:N*N方阵用二维数组定义、用二层循环控制输入和输出用二层循环控制处理方阵元素,判定主对角线上元素条件为:if(i==j),判定辅对角线上元素条件为:if(i+j==N-1)、求方阵中最大的元素判定条件为:11if(a[i][j]max)(i,j分别表示二维数组的行列下标)程序运行演示:3.打印以下的杨辉三角形(10行)11112113311464115101051编程指导及提示:N*N方阵用二维数组定义,注意杨辉三角形为下三角对杨辉三角形赋值可分为两部分,第一部分为第一列和主对角线都为1,第二部分为其他元素都满足公式:a[i][j]=a[i-1][j-1]+a[i-1][j]程序运行演示:4.由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。编程指导及提示:用循环依次判定字符数组s中的每个字符与x是否相等,若不相等则赋给另一个数组存放,若相等则不赋给另一个数组存放,处理完后另一个数组即为删除了x字符的数组。也可练习直接在一个数组中处理。12程序运行演示:5.已知数组intnum1[20],num2[20]中分别存放了两个20位整数的各个位的值,编写一个程序,求将这两个整数相加的结果。编程指导及提示:定义三个数组intnum1[20],num2[20],num3[21];num3[21]用于存放结果,因考虑进位故长度多1。循环控制输入num1[20],num2[20]的每一位数,注意都为一位循环控制相加,考虑进位是本题的关键程序运行演示:6.将一个3*3的矩阵转置。用函数和指针实现。编程指导及提示:N*N方阵用二维数组定义、用二层循环控制输入和输出用
本文标题:《C语言程序设计专用周》实训指导书
链接地址:https://www.777doc.com/doc-4507572 .html