一、实验的目的、任务
1、加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味有难以记住,但它们都很重要。通过多次上机,就能自然地、熟练地掌握。通过上机来掌握语法规则是行之有效的方法。
2、解和熟悉C/C++语言程序开发的环境。
3、会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实现。对程序设计来说,要求会编程并上机调试通过。
二、基本要求
1、掌握文件及缓冲文件系统、文件指针的概念;
2、学会使用文件打开、关闭、读、写等文件操作函数;
3、学会用缓冲文件系统对文件进行简单的操作
三、实验内容及重点、难点
实验一 了解C程序的运行环境和运行一个C程序的方法
1.实验内容:
(1) 输入教材第一章例1.1程序,并进行编译和运行。
(2) 输入并运行教材第一章中例1.2。
(3) 输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。
(4) 运行一个自己编写的程序。教材第一章习题1.6,即输入a、b、c三个值,输出其中最大者。
2.目的和要求:
(1) 了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2) 了解在该系统上如何编辑、编译、连接和运行一个C程序。
(3) 通过运行简单的C程序,初步了解C源程序的特点。
实验二 数据类型、运算符和表达式
1.实验内容:
(1) 输入并运行教材第二章例2.4。在此基础上:
①加入一个printf语句:printf(“%d,%d”,c1,c2);并运行之。
②再将第二行改为:int c1,c2;再使之运行。
③再将第三行改为:c1=300;c2=400;再使之运行,分析其运行结果。
(2) 输入并运行教材第二章例2.6。在上机前先用人工分析程序写出应得结果。上机后将二者对照。
(3) 输入并运行习题2.10,分别作以下改动并运行:
①将第四行改为:m=i++;n=++j;
②程序改为:main()
{int i,j;i=8;j=10;
printf(“%d,%d”,i++,j++);}
③在②的基础上,将printf语句改为:printf“%d,%d”,++i,++j);
④再将printf语句改为:printf(“%d,%d,%d, %d,”,i++,j++);
(4) 按习题2.7要求编好程序,然后上机输入并运行该程序。
2.目的和要求
(1) 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
(2) 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用。
(3) 进一步熟悉C程序的编辑、编译和运行的过程。
实验三 最简单的C程序设计
1.实验内容:
(1)按习题3.8要求编写程序,并上机运行。
(2)编写程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和scanf函数输出这两个字符。上机运行程序,比较用printf和putchar函数输出字符的特点。
2.目的和要求
(1) 掌握C语言中使用最多的一种语句——赋值语句的使用。
(2) 掌握数据的输入输出的方法,能正确使用各种格式转换符。
实验四 逻辑判断和判断选取控制
1.实验内容:先编程序,解以下问题,然后上机调试运行程序。
(1) 给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,81~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
(2) 给出一个不多于5位的正整数,要求:
①求出它是几位数;
②分别打印出每一位数字;
③按逆序打印出各位数字,例如原数为321,应输出为123。
(3) 输入四个整数,要求按大小顺序输出。
2.目的和要求
(1) 了解C语言表示逻辑量的方法;
(2) 学会正确使用逻辑运算符和逻辑表达式。
(3) 熟练掌握if语句和switch语句。
实验五 循环控制
1.实验内容:编写程序并上机调试运行:
(1) 输入两个正整数,求其中最大公约数和最小公倍数。
(2) 输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
(3) 习题5.12。
(4) 习题5.10(选做)。
2.目的和要求
(1) 熟悉用while语句、do—while语句和for语句实现循环的方法。
(2) 掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。
实验六 数组
1.实验内容:编程序并上机调试运行
(1) 用选择法对10个整数排序。10个数用scanf函数输入。
(2) 有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。
(3) 将两个字符串连接起来,不要用strcat函数。
2.目的和要求
(1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法;
(2) 掌握字符数组和字符串函数的使用;
(3) 掌握与数组有关的算法(特别是排序算法)。
实验七 函数
1.实验内容:编程序并上机调试运行
(1) 写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
(2) 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。
(3) 用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数。
(4) 求两个数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一个函数根据求出的最大公约数求最小公倍数。
①用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。
②不用全局变量,两个整数在主函数中输入,并传递给函数,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。
2.目的和要求
(1) 掌握定义函数的方法;
(2) 掌握函数实参与形参的对应关系,以及“值传递”的方式;
(3) 掌握函数的嵌套调用和递归调用的方法;
(4) 掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。
实验八 指针
1.实验内容:编程序并上机调试运行(都要求用指针处理)
(1) 输入三个整数,按由小到大的顺序输出,然后、将程序改为:输入三个字符串,按由小到大的顺序输出。
(2) 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
(3) 用一个函数实现两个字符串的比较,即自己写一个strcmp函数:strcmp(s1,s2)。如果s1=s2,则函数返回值为0;如果s1<>s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为14);如果s1>s2,则输出正值;如s1<s2则输出负值。
两个字符串s1、s2由main函数输入,strcmp函数的返回值也在main函数输出。
(4) 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入。最后在主函数中输出。
2.目的和要求
(1) 掌握指针的概念,会定义和使用指针变量;
(2) 学会使用数组的指针和指向数组的指针变量;
(3) 学会使用字符串的指针和指向字符串的指针变量;
(4) 学会使用指向函数的指针变量;
(5) 了解指向指针的指针的概念及其使用方法。
实验九 结构体和共用体
1.实验内容:编程序并上机调试运行
(1) 有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
(2) 13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。
(3) 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
2.目的和要求
(1) 掌握结构体类型变量的定义和使用;
(2) 掌握结构体类型数组的概念和应用;
(3) 掌握链表的概念,初步学会对链表进行操作;
(4) 掌握共用体的概念与使用。
实验十 文件
1.实验内容:编程序并上机调试运行
(1) 有5个学生,每个学生由门课的成绩,从键盘输入以上数据(包括学号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。
(2) 将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu—sort”中。
2.目的和要求
将上题已排序的学生成绩文件进行插入处理。插入一个学生的三门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。
四、实验项目学时分配表
序号 |
实验项目名称 |
学时 |
项目性质 |
演示 |
验证 |
设计 |
综合 |
一 |
了解C程序的运行环境和运行一个C程序的方法 |
2 |
|
2 |
|
|
二 |
数据类型、运算符和表达式 |
2 |
|
2 |
|
|
三 |
最简单的C程序设计 |
2 |
|
2 |
|
|
四 |
逻辑判断和判断选取控制 |
4 |
|
4 |
|
|
五 |
循环控制 |
4 |
|
4 |
|
|
六 |
数组 |
4 |
|
4 |
|
|
七 |
函数 |
2 |
|
2 |
|
|
八 |
指针 |
2 |
|
2 |
|
|
九 |
结构体和共用体 |
2 |
|
|
2 |
|
十 |
文件 |
2 |
|
2 |
|
|
合计 |
|
26 |
|
26 |
|
|
五、成绩评定办法及标准
实验成绩的评定由教师掌握,一般分为优、良、中、及格、不合格五个等级,指导教师应根据①实际操作情况、②提问解答情况、③实验报告及实验成果情况等结合实验纪律情况综合给予成绩,并计入课程成绩,占总成绩的30%。
六、教材与参考书
《C/C++程序设计教程》 高等教育出版社 谭浩强等
《C/C++程序设计题解与实验教程》高等教育出版社 谭浩强等