C语言程序设计实验讲义(终稿) 下载本文

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

课程编码: 总学时:64学时 实验学时:16学时 适用专业及层次:电子信息工程 专业本科

实验地点:电子与信息工程 实验中心 第二 实验室 系(教研室):信息工程学院 网络工程教研室

执笔人:贾电如 大纲审批人 一、教学目的和基本要求

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

基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 二、实验软硬件环境要求 1、《C程序设计题解与上机指导》谭浩强主编 清华大学出版社 2、微机 ,安装、vc++6.0

三、实验项目与学时分配

编号 实验项目名称 学时分配 实验类型 2 2 2 2 2 2 2 2 设计性 设计性 设计性 设计性 设计性 设计性 设计性 设计性 备注 1 C程序的运行环境和运行一个C程序的方法、数据类型、运算符和表达式 2 顺序结构程序设计 3 选择结构程序设计 4 循环结构程序设计 5 数组 6 函数 7 指针 8 结构体和共用体、链表操作 四、实验项目

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

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

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

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

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

1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是

用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?

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

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

3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。

4.输入并运行以下程序: 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;

再使之运行,分析其运行结果。。 5、.输入并运行以下程序: 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); }

6. 请将下列给出的两个程序段分别输入计算机后,分析其运行结果:

①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); }

要使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?x?x0?f(x)。 'f(x)4.打印出以下图案: * *** ***** ******* ***** *** *

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

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

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

编程序并上机调试运行。

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

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