《C语言程序设计》实验教学大纲.

更新时间:2024-06-22 21:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C语言程序设计》实验教学大纲

一、适用范围

大纲适用于计算机科学与技术专业本科教学使用。 二、课程名称 C语言程序设计 三、学时数与学分

总学时:90 总学分: 4 实验学时:36 实验学分:1 四、教学目的和基本要求

目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。

基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配 序号 1 2 3 4 5 6 7 8 9 10 11* 12 13 总计 实验项目名称 C程序的运行环境和运行一个C程序的方法 数据类型、运算符和表达式 最简单的C程序设计 选择结构程序设计 循环控制 数组 函数 预处理命令 指针 结构体和共用体 位运算 文件 学生成绩管理 实验学时 2 2 2 2 4 4 4 2 4 4 2 2 4 38 实验类型 验证性实验 验证性实验 验证性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 设计性实验 综合性实验 注:带*的实验项目为选做实验项目

六、教材、讲义及参考书

《C程序设计题解与上机指导》谭浩强主编 清华大学出版社 七、实验成绩评定办法

考查:平时考核加期末机试。实验成绩占总成绩的20%。 平时考核:占实验成绩的40%,由以下两部分组成。 实验预习和表现、实验报告。 期末机试:占实验成绩的60%。

1、实验预习和表现:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能

1

力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。实验报告应包括以下内容:实验目的、实验要求,实验题目、程序清单、运行结果、实验小结。

3、期末机试:通过考试了解学生对基本理论掌握的程度和实际水平,教师出实验考试题目,让学生在规定的时间完成。 八、实验教学大纲说明

本大纲共安排38学时的实验,其中带*号实验为选做实验,实际课时为36学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目。 九、实验项目

实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的

1.了解TURBO C编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容

1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?

2.编写一个C程序,输出以下信息: **************************** very good!

****************************

3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二 数据类型、运算符和表达式 一、实验目的

1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。

2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

3.进一步熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容

1.输入并运行以下程序: main( )

{ char c1,c2; c1=97;c2=98;

printf(“%c %c\\n”,c1,c2); printf(“%d %d\\n”,c1,c2); }

在此基础上

①将第三行、第四行改为: c1=321;c2=353;

再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2;

2

再使之运行,分析其运行结果。。 2.输入并运行以下程序: main( )

{int i=8,j=10,m,n; m=++i;n=j++;

printf(“%d,%d,%d,%d\\n”,i,j,m,n); }

分别作以下改动并运行: ①程序改为: main( )

{int i=8,j=10;

printf(“%d,%d\\n”,i++,j++); }

②在②的基础上,将printf语句改为: printf(“%d,%d\\n”,++i,++j); ③再将printf语句改为:

printf(“%d,%d,%d,%d\\n”,i,j, i++,j++); ④程序改为: main( )

{int i=8,j=10,m=0,n=0;; m+=i++;n-=--j;

printf(“i=%d,j=%d,m=%d,n=%d\\n”,i,j,m,n); }

3. 请将下列给出的两个程序段分别输入计算机后,分析其运行结果: ①main() { int num; num=32767;

printf(“num=%d\\n”,++num); }

② main() { int a=-2;

printf(“%d, %d\\n”,a, a--); }

实验三 最简单的C程序设计 一、实验目的

1.掌握C语言中使用最多的一种语句——赋值语句的使用。 2.掌握数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容

1.上机输入以下程序: main( )

{int a,b;float c;

scanf(“%d%d%f”,&a,&b,&c);

printf(“a=%-4d,b=M,c=%f,c=%.2f\\n”,a,b,c,c); }

3

要使a=3,b=4,c=12.3456,在键盘上应如何输入?有几种方式?

2.若将输入函数改为scanf(“%d, %d ,%f”,&a,&b,&c);应该如何输入数据? 3.上机输入以下程序: main( )

{int a; float b; char c;

scanf(“M_<”,&a,&b,&c);

printf(“a=%d,a=%o,a=%x,b=%8.3f,b=%4.0f,c=%c\\n”,a,a,a,b,b,c); }

要使a=77,b=4.56,c= ?A?,在键盘上应如何输入?

4.输入两面整型变量a、b的值,输出下列算式以及运算结果。 a+b、a-b、a*b、a/b、(float)a/b、a%b

每个算式占一行。如a等于10,b等于6,a+b应输入为: 10+6=16

5.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行程序,比较用printf和putchar函数输出字符的特点。

实验四 选择结构程序设计 一、实验目的

1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。 二、实验内容

先编程序,解以下问题,然后上机调试运行程序。 1.有一个函数

用scanf函数输入x的值(分别为x<1、1~10、≥10三种情况),求y值。 2.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

3.给一个不多于5位的正整数,要求:

① 求出它是几位数;

② 分别打印出每一位数字;

③ 按逆序打印出各位数字,例如原数为321,应输出123。 实验五 循环控制 一、实验目的

1.熟悉用while语句,do-while语句和for语句实现循环的方法。

2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 二、实验内容

编程序并上机调试运行。

1.输入两个正整数,求其中最大公约数和最小公倍数。

2.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

3.用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。牛顿迭代法的公式是

x?1?x?y??2x?11?x?10?3x?11x?10?4

x?x0?f(x)。 'f(x)4.打印出以下图案: * *** ***** ******* ***** *** *

5.编程求1!+2!+3!+……+20!。 实验六 数组 一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组和字符串函数的使用。

3.掌握与数组有关的算法(特别是排序算法)。 二、实验内容

编程序并上机调试运行。

1. 编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

2.有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数” ,并且可以实现连续查找。15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。

3.将以下二维数组中数按列的顺序存放到一个一维数组中。二维数组的内容是 11 22 33 44 11 22 33 44 11 22 33 44

则一维数组中的内容是11 11 11 22 22 22 33 33 33 44 44 44 4.将两个字符串连接起来,不要用strcat函数。

5.从键盘输入5个字符串,找出最长的字符串和最大的字符串。 实验七 函数 一、实验目的

1.掌握定义函数的方法;

2.掌握函数实参与形参的对应关系,以及“值传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法;

4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。 二、实验内容

编程序并上机调试运行之。

1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

2.两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。

5

3.已知二阶Fibonacci数列:

0 若n=0 Fib(n)= 1 若n=1 Fib(n-1)+Fib(n-2) 其他情况 定义递归函数求Fib(n)。

4.写一个函数完成下列任务:输入一个表示正整数的字符串,将字符串转换成对应的数字。例如,输入3个字符组成的字符串“123”,将它转换成整型数123。

5.设计一个含有多个菜单项的菜单演示程序。程序运行后,给出4个菜单项的内容和输入提示:

1.求最大公约数 2.求最小公倍数 3.判断素数 4.退出程序 选择1-4:

使用数字1~4来选择菜单项,其他输入则不起作用。 实验八 预处理命令 一、实验目的

1.掌握宏定义的方法;

2.掌握文件包含处理方法; 3.掌握条件编译的方法。 二、实验内容

编程序并上机调试运行。

1.定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。

说明:在程序主函数使用宏时只能用两个实参,如SWAP(a,b),不能用三个参数。 2.设计输出实数的格式,包括:(1)一行输出一个实数;(2)一行内输出两个实数;(3)一行内输出三个实数。实数用“%6.2f”格式输出。

用一个文件“format.h”包含以上用#define命令定义的格式。在自己的文件(自己命名)中用#include命令将“format.h”文件包含进来。在程序中用scanf函数读入三个实数给f1,f2,f3。然后用上面定义的三种格式分别输出①f1;②f1,f2;③f1,f2,f3。

3.用条件编译方法实现以下功能:

输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下字母(如‘a’变成‘b’,…,‘z’变成‘a’。其它字符不变)。用#define命令来控制是否要译成密码。例如:

#define CHANGE 1 则输出密码。若

#define CHANGE 0

则不译成密码,按原码输出。 用条件编译方法来处理。 实验九 指针 一、实验目的

1.掌握指针的概念,会定义和使用指针变量; 2.学会使用数组的指针和指向数组的指针变量;

3.学会使用字符串的指针和指向字符串的指针变量;

6

4.学会使用指向函数的指针变量;

5.了解指向指针的指针的概念及其使用方法。 二、实验内容

编程序并上机调试运行程序(都要求用指针处理)。

1.定义函数void fun(int x[ ],int *max,int *min),找出数组x中的最大值和最小值,最大值和最小值通过形参指针max和min传回。

2.编写一个函数comp(s1,s2)实现两个字符串的比较。

如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1

两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。

3.从键盘输入一个字符串与一个指定字符,调用函数,将字符串中出现的指定字符全部删除。

4.编程将从键盘输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用 “.”结束输入。

5.在主函数中输入5个字符串,用另一个函数对它们排序(要求用指针数组来完成),然后在主函数输出排好序的字符串。

实验十 结构体和共用体 一、实验目的

1.掌握结构体类型变量的定义和使用; 2.掌握结构体类型数组的概念和应用;

3.掌握链表的概念,初步学会对链表进行操作; 4.掌握共用体的概念与使用。 二、实验内容

编程序,然后上机调试运行。

1.有3个学生,每个学生的数据包括学号、三门课的成绩,要求用input函数实现从键盘输入学生数据,用average函数求每个人的平均分,用output函数打印学生数据及平均成绩。

2.建立一个带有头结点的单链表,每个结点包括:学号、年龄,并输出链表中所有结点的数据。在链表中查找年龄最大的结点,并将链表中等于此年龄的结点删除(年龄最大的结点可能不止一个)。

3.将一个链表按逆序排列,即将链头当链尾,链尾当链头。 4.上机输入如下程序: main( ) {union bt

{int k; char c[2];}a; a.k= -7;

printf(“%o,%o\\n”,a.c[0],a.c[1]); }

分析其运行结果。 实验十一 位运算 一、实验目的

1.掌握按位运算的概念和方法,学会使用位运算符; 2.学会通过位运算实现对某些位的操作。

7

二、实验内容

编写程序,上机调试并运行。

1.编一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式为:getbits(value,n1,n2)

value为该16位数的值,n1为欲取出的起始位,n2为欲取出的的结束位。如:getbits(0101675,5,8)表示对八进制数101675,取出其从左面起的第5位到第8位。

要求把这几位数用八进制数打印出来。注意,应当将这几位数右移到最右端,然后用八进制形式输出。

2.利用位运算操作,实现交换两个变量的值。

3.将一个十六进制整数的各位循环左移4位,然后用十六进制形式输出。 实验十二 文件 一、实验目的

1.掌握文件以及缓冲文件系统、文件指针的概念; 2.学会使用文件打开、关闭、读、写等文件操作函数。 3.学会用缓冲文件系统对文件进行简单的操作。 二、实验内容

编写程序并上机调试运行。

1.编程序求100以内的素数,分别将它输出到显示器屏幕和x.txt文件中,要求每行5个数。

2.从键盘输入几本书的数据,每本书的数据包括条形码、书名和价格,将每项数据分别写入文本文件s.txt和二进制文件s.dat。

3.从上题的文本文件s.txt或二进制文件s.dat中读入每本书的数据,计算所有书的平均价格。要求用input函数读入,average函数求平均价格。

实验十三 学生成绩管理(综合设计性实验) 一、实验目的

综合《C语言程序设计》课程中的基本知识,对所学内容和算法进行复习,进一步提高程序设计的能力。

二、实验内容

编写一个C程序,对一个班(不多于35人)的学生成绩进行管理,其中:每个学生的数据包括学号、姓名、三门课的成绩(英语、数学、计算机)、平均成绩和总成绩。主菜单如下:1、添加数据 2、数据输出 3、数据排序(按平均分)4、数据查找(按学号)5、数据删除 6、数据统计(按平均分)7、退出

其中各个选项的功能如下:

1、添加数据:按一定格式输入若干名学生的数据追加到stu.txt文件中。

2、数据输出:从stu.txt文件中读取数据,用比较美观的格式输出所有学生的数据。如果没有记录,输出提示信息。

如: 学号 姓名 英语 数学 计算机 平均成绩 ========================================= …… …… …… …… …… …… =========================================

3、数据排序:对输入的数据按平均分进行由低→高的排序。

4、数据查找:查找指定学号的学生数据,并按照一定的格式输出查找结果。 5、数据删除:删除指定学号的学生数据。(如果没有找到该学生,输出提示信息。) 6、数据统计:按平均分统计各个分数段的学生人数,用比较美观的格式输出统计结果。

8

如:

按平均分统计各分数段学生人数

=========================================

分数段 0—59 60—69 70—79 80—89 90—100 人 数 ..... ...... ...... ...... ......

========================================= 7、退出:退出整个程序的运行。(注:1—6功能运行后,程序仍返回主界面,可接着选择其他功能继续运行,只有选择选项7才真正退出程序的运行。)

十、其他

学科说明:本课程是一门以培养学生编程能力为主要目的学科,加强实践技能是本课程的特色。

9

本文来源:https://www.bwwdw.com/article/14f3.html

Top