C语言学习辅导与上机实习(第4版)实验教案陈琳主编高等教育出版社ISBN978-7-04-045663-9实验一熟悉C语言环境并运行简单的C程序目的与要求:1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。2.了解在该系统上如何编辑、编译、连接和运行一个C程序。3.通过运行简单的C程序,初步了解C源程序的特点。实验内容:1.学习使用基于Windows界面的C语言编辑器编辑C语言源程序。2.调用编辑程序,输入以下程序并进行编译和运行。了解编译和连接后所得到的目标程序的后缀。#includestdio.hmain(){printf(**************************\n);/*(1)*/printf(Hello,everyone!\n);/*(2)*/printf(**************************\n);/*(3)*/}在程序书写中可以利用剪切、复制、粘贴等功能提高程序书写效率,如程序中相同或相近的行可复制后再进行修改即可。3。输入并运行以下程序,了解程序中定义数据的方法。#includestdio.hmain(){intnum1,num2,sum;num1=30;num2=50;sum=num1+num2;printf(Thesumofnum1andnum2is%d\n,sum);}实验二数据类型、运算符和表达式目的与要求:1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。3.进一步熟悉C程序的编辑、编译、连接和运行的过程。实验内容:1。输入并运行以下程序。#includestdio.hmain(){charc1,c2;/*(1)*/c1=65;c2=66;/*(2)*/printf(c1=%c,c2=%c,c1,c2);/*(3)*/printf(c1=%d,c2=%d,c1,c2);/*(4)*/}比较(3)与(4)句的不同,并观察(3)、(4)句程序运行结果,分析不同的原因。然后把第(1)句改为intc1,c2;再运行,观察程序运行结果与第一次运行结果有何异同并分析原因。再把第(2)句改为c1=300;c2=400;后运行,观察程序运行结果并分析原因。最后把第(1)句改回charc1,c2;再运行,观察程序运行结果并分析原因。2。输入并运行以下程序。在运行前先根据自己的分析写出运行结果,然后与上机运行的结果对比。#includestdio.hmain(){inti,j,a,b;i=8;j=10;a=++i;b=j++;/*(1)*/printf(i=%d,j=%d,a=%d,b=%d,i,j,a,b);/*(2)*/}运行后将(1)改为a=i++;b=++j;后再次运行并比较分析两次运行结果的异同。在程序中加入复合赋值运算符,如下例:#includestdio.hmain(){inti,j,a,b;i=8;j=10;a+=i++;b-=--j;/*(1)*/printf(i=%d,j=%d,a=%d,b=%d,i,j,a,b);/*(2)*/}运行该程序,把结果与未运行前静态运行的结果对比,加深对复合赋值运算符运算方法及运算优先级的理解。4。按以下要求编写程序并运行:用赋初值的方法定义一些英文字母,要求使用复合赋值运算符把这些字母分别转换成其后第5个字母并输出。例如定义的字母是“A”,输出就必须是“A”后的第5个字母“F”。参考程序#includestdio.hmain(){charc1,c2;c1='A',c2='s';c1+=5;c2+=5;printf(c1=%c,c2=%c,c1,c2);getch();}实验三数据的输入输出目的与要求:1.掌握C语言中使用最多的一种语句——赋值语句的使用。2.掌握数据的输入输出方法,能正确使用各种格式转换符。二。实验内容:1.输入并运行以下程序,通过分析程序运行的结果掌握数据的输出方法及格式转换符的使用。程序一:整型和字符型数据的输出。程序二:浮点型数据的输出。2。输入并运行以下程序,记录下能得到正确输入数据的键盘输入方法并与错误方法进行比较分析,掌握数据的输入方法。程序一:整型和字符型数据的输入。程序二:浮点型数据的输入。3.输入并运行以下程序,了解在运行时输入数据的方法。#includestdio.hmain(){intnum1,num2,sum;scanf(%d,%d,&num1);/*(1)*/sum=num1+num2;printf(Thesumofnum1andnum2is%d\n,sum);getch();}在输入数据时需注意,在程序的(1)处定义的是两个数据输入时中间用逗号分隔,因此在运行时输入数据之间也必须用逗号分隔,这样才能得到正确的结果。4.运行自己编写的程序,要求从键盘输入三个数,输出三个数的平均值。实验四选择语句目的与要求:1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”);2.学会正确使用逻辑运算符和逻辑表达式;3.熟练掌握if语句和switch语句。二。实验内容:1。以下程序可完成什么功能,试上机运行并根据y的不同值给出不同的运行结果。#includestdio.hmain(){intx,y;printf(\npleaseinputx\n);scanf(%d,&x);if(x=10)y=5*x+8;elseif(x=3)y=2*x-4;elsey=x/2;printf(\nyis%d,y);}2。按要求编写以下程序并运行,得出运行结果。要求:给定一个0~100之内的成绩,要求输入成绩的等级,90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,59分及以下为‘E’。实验五单重循环控制目的与要求:1.熟悉用while语句、do-while语句和for语句实现单重循环的方法。2.了解循环程序的基本结构。3.了解循环语句的运行顺序及编写循环程序中所需注意的事项。实验内容:1.输入并运行以下程序,分析程序的运行结果。#includestdio.hmain(){floats;inti;for(s=0,i=1;i=20;i++)s=s+i*i;printf(Theresultis%e\n,s);getch();}2.编程实现从键盘输入一个整数,判断此整数是否为素数。程序范例如下:#includestdio.hmain(){intm,i,k=0;scanf(%d,&m);for(i=2;im;i++)if(m%i==0)k=1;if(k==0)printf(%disaprimenumber\n,m);elseprintf(%disnotaprimenumber\n,m);getch();}实验六多重循环控制目的与要求:1.掌握用循环语句嵌套实现多重循环的方法。2.了解多重循环结构语句的运行过程。3.掌握在程序设计中用循环的方法实现的一些常用算法(如穷举、迭代、推理等)。实验内容:1.输入并运行以下程序,分析运行结果及两个循环的作用,了解循环嵌套的方法。参见教材。1.修改上例,使之完成如下图形:***************3.参考以上两个例子,完成下图的输出:*****************************************4.编程完成九九乘法表的输出。提示:用i和j分别代表被乘数和乘数,i*j代表结果,在每一行中乘数从左到右递增,在每一列中被乘数从上到下递增。输出时注意格式符中数据宽度的定义,以达到整齐美观的效果。实验七一维数组、字符数组与排序目的与要求:1.掌握一维数组和字符数组的定义、赋值和输入输出方法;2.掌握与一维数组有关的算法(如各种排序算法、折半查找法等)。3.掌握字符数组和字符串函数的使用。实验内容:1.输入并运行以下程序(参见教材),分析运行结果。2.编写程序,要求完成功能:从键盘输入一个字符串,分别统计字符串中英文字母、数字及其它字符的个数。实验八二维数组目的与要求:1.掌握二维数组的定义、赋值和输入输出方法;2.掌握与二维数组有关的算法(如求列平均、求行平均、求矩阵乘积等)。实验内容:1.输入并运行以下程序(参见教材),分析程序运行的结果,了解二维数组的定义、赋值及输出方法。2.编程从键盘输入20个学生的6门课程成绩,计算并输出每个学生的平均成绩和不及格课程的门数。实验九函数目的与要求:1.掌握定义函数的方法;2.掌握函数实参与形参的关系,以及“值传递”的方式;3.掌握函数的嵌套调用和递归调用的方法;4.掌握全局变量和局部变量,动态变量、静态变量和概念和使用方法。实验内容:1.输入并运行以下程序(参见教材),分析程序的运行结果及程序中函数zhuang(array)的作用。2.编写函数实现由实参传来字符串,统计字符串中各类字符个数。3.编写程序用递归法实现Fibonacci数列。实验十编译预处理目的与要求:1.掌握宏定义的方法;2.掌握文件包含处理方法。实验内容:1.输入并运行以下程序,分析程序运行的结果及其中宏定义的作用。(参见教材)2.编程实现从键盘输入一个年份,判断该年份是否为闰年,要求用宏定义实现对闰年的判断。实验十一指针目的与要求:1.掌握指针的概念,能够定义和使用指针变量;2.学会使用数组的指针和指向数组的指针变量;3.学会使用字符串的指针和指向字符串的指针变量。实验内容:1.输入并运行以下程序,分析程序运行结果及程序中各指针变量的作用。2.编程实现求字符串长度的函数,要求不用已有的求字符串函数。实验十二结构体和共用体目的与要求:1.掌握结构体类型变量的定义和使用;2.掌握结构体类型数组的概念和应用;3.掌握共用体的概念与使用。实验内容1.输入并运行以下程序,分析程序运行结果。(参见教材)2.共用体和结构体类型比较。结构体类型所占字节数为各成员所占字节数的总和,而共用体所占字节数为各成员所占字节数的最大值。输入并运行以下程序,分析程序运行结果。(参见教材)实验十三位运算目的与要求:1.掌握按位运算的概念和方法,学会使用位运算符;2.学会通过位运算实现对某些位的操作。实验内容:1.输入并运行以下程序,分析程序的运行结果。main(){unsignedinta;printf(输入一个八进制无符号数:\n);scanf(%o,&a);a=a&0177252;printf(此数指定位清0后的结果(以八进制表示):%o\n,a);}2。编程实现将某数左移两位。提示:移位运算时所移动的位也是一个二进制的位,因此在比较运行结果时要注意把移位前后都转换成二进制数方可。实验十四文件目的与要求:1.掌握文件以及缓冲文件系统、文件指针的概念;2.学会使用文件打开、关闭、读、写等文件操作函数;3.学会用缓冲文件系统对文件进行简单的操作。实验内容:1.输入并运行以下程序,分析程序运行结果。(参见教材)2.编程实现从键盘输入一个源文件名,再输入一个目标文件名,然后把源文件的内容复制到目标文件。