《C程序设计》实验教学大纲.doc
C+程序设计实验教学大纲课程编号: 课内总学时:36 学分数:3授课对象:经济与管理学院工商管理专业课程类别:专业基础必修课英文译名:C+ Program design一、教学任务和目的C+是一门高效的程序设计语言,即可进行过程化设计,也可进行面向对象程序设计,是目前面向对象程序设计语言中具有最广泛基础的一门语言,也是作为应用软件和系统软件的最佳开发工具之一。通过该课程的学习,要求学生掌握C+程序设计基础知识,程序设计方法与基本数据结构。通过上机实践培养学生分析具体问题,建立数学模型,用C+解决实际问题的能力,培养学生创新意识和提高学生实践能力。二、教学基本要求:了解计算机处理信息的过程以及描述用计算机解决问题的表示方法。了解和使用C+程序设计的开发环境。掌握常用数据类型、运算对象、运算符与表达式。掌握C+中函数的声明、定义和调用方法。熟练掌握结构化程序控制的3种基本结构,并能较好地编写程序。基本掌握用指针和引用给函数传递参数。掌握过程化程序设计的方法。了解用指针构造链式数据结构。三、教学内容实验一C+应用程序的创建(4学时)1、实验目的和要求:(1) 熟悉C+6.0的集成环境及其基本操作。(2) 掌握一个C+应用程序的组成及创建方法。(3) 理解简单的C+程序结构。(4) 理解函数的声明、定义和调用方法。(5) 理解标准库函数和自定义函数。2、实验内容: 最简单的程序的创建、编辑源程序、编译、连接与运行。 用自定义函数求两个数中的较大者,并调用标准库函数sqrt()来求两个数中较大者的平方根。 简单的计算程序。(求圆面积;三角形面积;卫星高度)3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验二表达式与条件判断(4学时)1、实验目的和要求:(1) 了解程序的分支结构;(2) 掌握基本输入输出的方法;(3) 能实现简单的条件判断程序。(4) 了解基本数据类型的字节宽度和范围表示,弄清编译系统是16位指令系统还是32位指令系统。2、实验内容:解一元二次方程ax2+bx+c=0的根。当a=0且b=0时,方程无根;当a=0且b0时,方程有一个根;当a0且b0时,根据=b2-4ac确定方程的根; >0,有两个不同实根; =0,有两个相同实根; <0,有两个不同复根;#include<iostream.h>#include<math.h>void main()double a,b,c;cout<<"Please input the a,b,c:"<<endl;cin>>a>>b>>c;if(a=0)&&(b=0)cout<<"The equation is degenerate."<<endl;else if(a=0)cout<<"The single root is "<<-c/b<<endl;elsedouble delta,re,im;re=-b/(2*a);delta=b*b-4*a*c;im=sqrt(fabs(delta)/(2*a);if(delta>0)cout<<"The roots are "<<re+im<<"and"<<re-im<<endl;else if(delta=0)cout<<"The value of roots are same as "<<re<<endl;elsecout<<"The roots are complex "<<re<<"+"<<im<<"i"cout<<"and"<<re"-"<<im<<"i"<<endl;基本要求:阅读理解程序,修改程序,要求输入方程的三个系数后,输出完整的方程式,并输出其解。直接修改算法,提高程序可读性;采用某种程序书写风格,调整程序语句,修改变量名,提高其可读性;给程序语句加上适当的注解,提高其可读性。测试数据: 2 3 4 55 3 438.3 91 455555 3 4以函数调用方式,求圆柱体的体积:在主函数中先输入圆柱体的半径和高,然后调用求体积的函数,最后输出结果。编程实现输入一个整数,输出相应的五分分制成绩。设90分以上为“A”,80分至89分为“B”,70分至79分为“C”,60分至69分为“D”,60分以下为“E”。3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验三循环过程(6学时)1、 实验目的和要求:(1) 学习过程化程序设计的方法;(2) 进一步学习掌握查找与修改编译错误的方法;(3) 初步学习调试方法。2、实验内容:1)计算 s10000=1-1/2+1/3-1/4+.+1/9999-1/10000用下述方法分别编程并比较结果“(1) 从左到右各项相加;(2) 从右到左各项相加;(3) 从左到右各个正项和负项分别相加;(4) 从右到左各个正项和负项分别相加。思考问题:(1) 三种循环语句分别实现: for() dowhile() while()(2) 如果n(项数)右程序运行时输入确定,程序应如何修改?(3) 如果精度要求|sn-sn-1|10-8,程序应如何修改?此时n的值是什么?2)编写统计输入的各类字符程序(数字字符、空格/反斜杠/换行符、其它字符)3)编写一个求整数n阶乘(n!)的程序。3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验四函数与程序结构(6学时)1、 实验目的和要求:(1) 掌握函数声明、定义和使用方法;(2) 掌握全局变量、局部变量、静态局部变量的概念和使用方法;(3) 掌握自定义头文件的方法,学会建立和调试多文件程序。2、实验内容:将教材习题4.9打印乘法九九表改用函数调用的形式,适当取函数名,分别调用三种函数以输出不同格式。用多文件程序结构实现打印九九乘法表输出格式。要求用一个头文件作为相互联络的接口,一个文件含有主函数,调用其它三个函数,其它三个函数分别含有一个乘法九九表输出格式的函数定义。用非递归的函数调用形式求斐波那契数列第n项。3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验五数组应用(4学时)1、 实验目的和要求:(1) 学习数组定义、初始化、赋值、使用的方法;(2) 学习给函数传递数组的方法;(3) 学习调试方法。2、实验内容:已知数组a100,各元素值为:a1=25;a2=-25;ai=(ai-1*4627+ai-2*3581)/100%100-50 (i=3,4,.100)用选择排序法把a重整为a1a2.a100,输出结果。基本要求:把排序法写成函数调用的形式,应尽量减少数据移动次数。 一个10个整数的数组(34,91,83,56,29,93,56,12,88,72),找出最小数和其下标,并在主函数中打印最小数和下标。 17个人围成一圈,编呈为117,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后剩下1人。求此人的编号。 输入一个n×n的矩阵,求出两条对角线元素值之和。3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验六指针应用(4学时)1、 实验目的和要求: 掌握指针的概念,会定义和使用指针变量。 掌握指针的运算。 学会传递数组的指针性质和使用指针修改函数参数。 理解并使用字符串指针和指向字符串的指针变量。 学会使用指向函数的指针变量。2、 实验内容 编写程序,实现两个字符串比较的自定义版:int strcmp(char * str1,char * str2)/当str1>str2时,返回正数;/当str1=str2时,返回0;/当str1<str2时,返回负数。 编写程序,实现复制字符串的自定义版:char *strcpy(char * dest,const char * sourece)/该函数返回dest的值,即字符串首地址。 编写程序,通过传递指针来实现整数值的交换:void swap(int * x ,int * y)3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验七引用操作(4学时)1、实验目的和要求: 掌握引用的概念。 学习用引用传递函数的方法 理解C+在函数原型中声明引用的目的,避免不恰当的引用返回。 弄清引用与指针的区别。2、实验内容 编制程序,调用传递引用的参数,实现两个整型变量的交换。 编制程序,调用传递引用的参数,实现两个字符串变量的交换。 编写程序,说明函数的返回值为引用类型时,其函数体中的return语句的参数必须为全局变量、静态变量或形参,不能为局部变量。3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。实验八结构(4学时)1、实验目的和要求:(1) 学习堆内存分配技术;(2) 学习用指针构造链式数据结构;(3) 学习操作链表。(4) 掌握结构作为参数传递与返回结构的函数方法。2、实验内容已知head指向一个带头结点的单向链表,链表中每个结点包含数据long和指向本结构结点的指针。编写函数实现链表逆置。abcdheadNULL NULL逆置后的链表为:NULL dcbahead 编写打印学生数据:有5个学生,每个学生的数据包括学号、姓名、三门课成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生数据(包括学号、姓名、三门课成绩、平均分数)。 编写程序,对一个Person结构数组进行“冒泡法”排序,工资高的排在后面。struct Person char name20; unsigned long id; float salary;3、实验主要仪器设备及材料 微型计算机(CPU为Pentium 166MHz以上,内存64M以上,硬盘为2GB以上,VGA或更高分辨率的彩色监视器),装有Windows 2000操作系统,Visual C+ 6.0软件。四、学时分配类别实验名称学时开课学期必做/选做实验一VC+应用程序的创建4三必做实验二表达式与条件判断4三必做实验三循环过程6三必做实验四函数与程序结构6三必做实验五数组应用4三必做实验六指针应用4三必做实验七引用操作4三必做实验八结构4三必做五、考核方法 考前一周由计算机抽题系统给每个学生抽取两个大操作题,在规定时间内完成,并要求上传到指定服务器的路径上。按百分制批改,该成绩作为上机操作考核成绩。实验报告按五分制批改,其平均分换算成百分制后作为实验报告成绩。六、教材与参考书:教材:钱能,C+程序设计教程,清华大学出版社,1999.4参考书:(1) 钱能,C+程序设计实验指导,清华大学出版社,1999.4(2) 钱能,C+程序设计习题及解答,清华大学出版社,1999.4(3) 谭浩强, C+程序设计教程(上、下册),中国科学技术出版社,1995(4) 张国锋,C+面向对象程序设计教程,清华大学出版社,1996.4七、说明本课程安排每周2学时上机,共计36个学时。大纲共设8个实验,主要使用Visual C+6.0作为集成开发环境。由于上机实习每周只有2学时,因此要求学生有一定数量的自由上机时间来调试程序。实验报告内容也只能是实验中的部分内容。