《程序设计语言》课程实验教学大纲一、实验课名称:程序设计语言 Program Language 二、实验课性质:独立设课三、适用专业:信息管理与信息系统,信息与计算科学,数学与应用数学,统计学四、采用教材及参考书:谭浩强,C程序设计,清华大学出版社,北京,1991年五、学时学分:课程总学时:64;课程总学分:3;实验课总学时:36;六、实验项目名称和学时分配序号实验项目名称学时分配实验属性实验类型实验者类别每组人数必开/选开1数据类型、运算符和表达式2专业验证本、专科1必开2最简单的C语言程序设计3专业综合本、专科1必开3选择结构程序设计5专业设计本、专科2~3必开4循环控制5专业设计本、专科2~3必开5数组的定义与算法4专业设计本、专科2~3必开6函数5专业设计本、专科5必开7指针5专业设计本、专科5必开8结构体与共用体6专业设计本、专科5必开9位运算与文件1专业设计本、专科5必开七、实验教学的目的和要求指本门实验课总的目的和要求,通过实验培养学生总体上了解或掌握什么方法或技能,达到什么目的;对学生有什么具体要求(比如:理解实验原理及实验方案,掌握正确操作规程;掌握各种仪器的使用,了解其性能参数、适应范围及注意事项等)。
八、实验项目的内容和要求实验1: 数据类型、运算符和表达式1、实验内容:内容1:掌握符号常量的使用(1)分析以下程序的功能#define PI 3.14main(){ float s,r; printf(“input a float number:\n”); scanf(“%f”,&r);s=PI*r*r;printf(“s=%f\n”,s);}(2)写出以下程序的运行结果#define M 5+6main(){ int a=5,b; b=M*a; printf(“b=%d\n”,b);}(3)写出下列程序的运行结果,并比较与(2)程序的区别,从而得出符号常量定义的本质define M (5+6)main(){ int a=5,b; b=M*a; printf(“b=%d\n”,b);}内容2:大小写字母转换运行下面的程序并写出运行结果main(){ char c1,c2; c1=’a’; c2=’b’; c1=c1-32; c2=c2-32; printf(“%c %c”,c1,c2);}内容3:考虑将下面的程序c1和c2赋以整数为初值main(){ char c1,c2; c1=97; c2=98; c1=c1-32; c2=c2-32; printf(“%c %c”,c1,c2);}内容4:本章小知识综合题。
写出下列程序执行的屏幕输入以及显示的结果!认真思考每一步的原理!#define X 5.3+9.1main(){ int a1,a2,a3,zj1,zj2; unsigned int u1=8; float b1,b2,b3; char c1=’h’,c2=’i’,c3=’s’;printf(“u1=%d\n”,u1);printf(“input a int number a1=\n”);scanf(“%d”,&a1);printf(“input a int number a2=\n”);scanf(“%d”,&a2);a3=a1+a2+u1;printf(“a1=%d,a2=%d,u1=%d,a3=a1+a2+u1=%d\n”,a1,a2,u1,a3);a3=a3-(int)(x);printf(“a3=a3-(int)(x)=%d\n”,a3);printf(“%d,%c,%c##\bfloat\t\’\\int\x01\x03\n”,c1,c2,c3);zj1=1; zj2=++zj1;printf(“1:zj1=%d,zj2=%d\n”,zj1,zj2);zj2=zj1--;printf(“2:zj1=%d,zj2=%d\n”,zj1,zj2);printf(“a1=%d, a2=%d, a3=%d\n”,a1,a2,a3);a3*=a1+2*a2;printf(“a3=a3*(a1+2*a2)=%d\n”,a3);printf(“%d,%d,%d\n”,-0x13,011,-024);}2、实验要求:(1)掌握定义整型、字符型和实型变量的方法,以及对它们的赋值方法。
2)学会使用C语言的有关算术运算符,以及包含这些运算符的表达式3)学会编辑、编译、连接和运行C语言程序实验2:最简单的C语言程序设计1、实验内容:内容1:编程序,输出如下图形 * ** * * * ** * * * * * ** * * * * * * * *内容2:编写程序,输入变量x值,输出变量y的值,并分析输出结果1)y = 2.4 * x - 1 / 2(2) y = x % 2 / 5 - x(3) y = x > 10 && x < 100(4)y = ( x -= x * 10 , x /= 10 )内容3:运行下述程序,分析输出结果main(){ int a=10; long int b=10; float x=10.0; double y=10.0; printf(“a=%d,b=%ld,x=%f,y=%lf\n”,a,b,x,y); printf(“a=%ld,b=%d,x=%lf,y=%f\n”,a,b,x,y); printf(“x=%f,x=%e,x=%g\n”,x,x,x); }内容4:请写出下面程序的输出结果:main(){ int a=6,b=3; float x=37.8534,y=-729.124; char c=’B’; long n=7654321; unsigned u=65535; printf(“%d%d\n”,a,b);printf(“%4d%5d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f,%-10f\n”,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f \n”,x,y,x,y,x,y);printf(“%e,%10.2e\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%lx\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%5.3s\n”,”BUTTER”,”STUDENT1”);}2、实验要求:(1)掌握赋值语句的使用。
2)掌握数据的输入/输出方法,学会输入/输出函数的使用方法实验3 选择结构程序设计1、实验内容:范例1:p101 例5.6 内容1:计算下列分段函数值: ① 用if语句实现分支② 变量x用scanf函数输入,结果的输出采用以下形式: x=具体值,f(x)=具体值③ 分别输入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序 范例2:p103例5.7内容2:用scanf函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E其中90~100为A,80~89为B,70~79为C,60~69为D,60分以下为E题目要求:①用if语句实现分支②用switch语句实现分支2、实验要求:选择结构程序设计是最基本最常用的一种程序设计技能,要求: (1)进一步掌握各种表达式的使用;(2)利用IF语句实现选择结构;(3)利用switch语句实现多分支选择结构;(4)练习调试与修改程序实验4 循环控制1、实验内容:内容1:利用循环实现九九乘法表内容2:打印如下数字方阵(打印行数n可输入)1 2 3 4 52 2 3 4 53 3 3 4 54 4 4 4 55 5 5 5 5内容3:“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁母雏各几何?”2、实验要求:进一步联系选择结构的程序设计。
练习并掌握实现循环结构的三种方法 练习并掌握选择结构与循环结构的嵌套 练习调试与修改程序 实验5 数组的定义与算法1、实验内容:范例1:定义一个含有30个整型元素的数组,按安顺序分别赋予从2开始的偶数,然后安顺序每5个数求出一个平均值,放在另一个数组中并输出 内容1:设计一个程序,实现如下功能:(1)定义一个数组输入30个整数2)给数组赋初值(3)按顺序每5个求出一个平均值,并存放在另外一个数组中(4)输出数组题目要求:数组的定义、赋值与输入输出 范例2:有一个字符串(“adfgikmnprs”)存放在一个数组中,输入一个字符,要求用折半查找法找出该字符是数组中第几个元素的值如果该字符不在数组中,则输出“**”2、实验要求:学会对数组的有关操作,学会运用字符数组与系统所提供的字符串函数,要求: (1)数组的定义、赋值;(2)数组的输入输出方法;(3)字符数组和字符串函数的使用;(4)数组有关的算法(排序算法);实验6 函数1、实验内容:范例1:写一个用迭代法求平方根的函数内容1:设计一个程序,实现如下功能:(1)能输入n个整数2)用选择法对n个整数实现排序的通用函数3)能输出n个整数。
范例2:求组合数内容2:用递归函数实现计算k阶裴波那契数列的第m项,所求第m项大于等于给定的数值max, 其前一项小于给定的数值max要求2:用2个文件实现该程序,用户自定义函数放在文件mysource.c中,主函数放在mymain.c中2、实验要求:函数是c程序的基本组成单位,要求熟练掌握:(1)函数的定义及调用;(2)函数参数的传递,形参、实参的关系,函数原型;(3)变量的存储类别及它们之间的差别;(4)作用域概念,全局变量与局部变量的比较5)掌握函数的嵌套调用、递归调用,掌握递归法编程;(6)掌握程序的多文件组织 实验7 指针1、实验内容:内容1:将两组整型数据中的相同元素合并为一组降序排列的序列,要求时间复杂度最小要求:(1)能输入这两组的数据2)调用实验a编好的排序算法对分别两组进行排序3)将两组已升序排好的数据序列中的相同元素合并为一个降序排列的数据序列,要求时间复杂度最小4)能输出合并后的数据内容2:40个学生4门课程,4门课程分别为:语文、数学、英语、物理,求出(1)每个学生的平均分并输出;(2)每门课程的最高分并输出;(3)单科最高分并输出;(4)总分最高的学生的姓名与学号并输出。
题目要求:以上题目要求函数的形参用指针定义内容2:在图形态下设计绘图软件,该软件具有如下功能:(1)通过菜单选择的方式在指定的位置画点、线、矩形;(2)能够给矩形着色,能够填充矩形2、实验要求:(1)指针的定义与使用;(2)指针和数组的相互关系;(3)数组或指针作为函数参数的函数定义及调用方法;(4)字符串与运算5)会设计dos提示符命令实验8 结构体与共用体1、实验内容:内容1:有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)要求:(1)用input函数输入10个学生的数据2)用average函数求总平均分3)用max函数找出最高分的学生数据4)总平均分和最高分学生的数据都在主函数中输出内容2:13个人围成一圈,从第一个人开始顺序报号1、2、3凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号要求用链表实现2、实验要求:(1)结构体类型变量的定义与使用;(2)结构体类型数组的概念和使用;(3)链表的概念,初步学会对链表进行操作;(4)共用体的概念与使用实验9 位运算与文件1、实验内容:内容1:设计一个函数,使给出一个数的原码,能得到该数的补码。
要求:用八进制形式输入和输出内容2:从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,输出到磁盘文件“upper.txt”中保存输入的字符串以“!”结束然后在将文件upper.txt中的内容读出显示在屏幕上要求:学会对文件的基本操作2、实验要求:(1)位运算的概念的方法,学会使用位运算符;(2)学会使用文件打开、关闭、读、写等文件操作九、实验课考核方式:(1)实验报告:班级:学号:姓名:课程名称:实验教师:实验时间:实验题目⑴ 需求分析:程序设计的任务,强调需要做什么,明确规定任务① 输入的形式和输入值的范围:② 输出的形式:③ 程序所能达到的功能:④ 测试数据:包括正确的输入输出结果和错误的输入输出结果⑵概要设计:对于面向过程的程序设计,说明用到的数据结构定义、主程序的流程及几个程序模块的调用关系,各个模块的功能对于面向对象的程序设计,要说明对象的抽象划分思想、功能、属性、对外提供的服务以及类之间的继承关系图⑶详细设计:提交有注释的源程序或者用伪代码写出每个操作所涉及的算法⑷调试分析:①调试过程中所遇到的问题及解决方法②算法的时空分析③经验与体会⑸程序使用说明书:用户如何使用你的程序,详细列出每一操作步骤。
实验分数: 实验教师签字:(2)考核方式:实验课单独考核,上机考试。