高级语言程序设计(C语言)实验教学大纲

2024-05-25

高级语言程序设计(C语言)实验教学大纲(精选8篇)

篇1:高级语言程序设计(C语言)实验教学大纲

信息技术系《高级语言程序设计》实验教学大纲

一、教材名称:<>

二、课程总学时:108学时 [理论: 72 学时;实验与上机:36学时]

三、适用专业和开课学期:软件技术专业,第2学期。

四、实验的目的与任务:

《C程序设计》是一门实践性很强的课程。通过实验使学生加深对课堂讲授的概念、语法、算法、编程技术的理解;熟悉C程序设计的开发环境;掌握程序设计和调试的基本技能。并通过实践激发学生进一步学习的积极性,培养学生的学习兴趣和创新思维。通过8个实验,使学生经过一定数量的上机训练,了解和掌握C程序设计的环境、程序的数据表示、程序的执行流程控制、程序的整体结构等C程序设计的基本概念和应用技术。

五、主要仪器设备及台(套)数

安装Windowsxp,TC2.0等软件的计算机,每生一台。

六、主要实验教材(指导书)及参考用书:

谭浩强主编,《C程序设计题解与上机指导》,清华大学出版社。

七、成绩考核方式及评分标准

实验占课程总课时1/3,每项实验按该实验说明要求规定的评分标准积分,学期末合计的实验成绩占课程总成绩的18%。

八、实验开出率:100%

九、实验项目与要求

实验一:C程序的运行环境和运行一个C程序的方法(2学时)

实验性质:验证性实验

一、实验目的

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

二、实验内容

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

2.输入并运行教材第一章中例1.2。

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

实验二 数据类型、运算符和表达式(2学时)

实验性质:验证性实验

一、实验目的

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

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

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

二、实验内容

1.输入并运行教材第三章例3.6.即: #include void main(){char c1,c2; c1=97; c2=98;

printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); } 在此基础上 ①将第二行改为: int c1,c2;再使之运行,分析结果。②再将第三行、第四行改为: c1=300;c2=400;再使之运行,分析其运行结果。

2.输入并运行教材第三章习题3.6,在上机前先用人工分析程序写出应得结果,上机后将二者对照。

3.输入并运行习题3.10。即: #include void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);} 分别作以下改动并运行: ①将第4行改为: m=i++;n=++j;②程序改为: #include void 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, i++,j++);⑤程序改为: main(){int i,j,m=0,n=0;;i=8;j=10;m+=i++;n-=--j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);}

实验三 最简单的C程序设计(2学时)

实验性质:验证性实验

一、实验目的

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

二、实验内容

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

#include

void main(){int a,b; float d,e; char c1,c2; double f,g; long m,n;

unsigned int p,q; a=61;b=62; c1=’a’;c2=’b’; d=3.56;e=-6.87;

f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000;

printf(“a=%d,b=%dn c1=%c,c2=%cnd=%6.2f,e=%6.2fn”,a,b,c1,c2,d,e); printf(“f=%15.6f,g=%15.12fnm=%ld,n=%ldnp=%u,q=%un”,f,g,m,m,p,q); } 在此基础上,做以下改动: ① 将程序第8-13行改为: a=61;b=62; c1=a;c2=b;

f=3157.890121;g=0.123456789; d=f;e=g;

p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。

② 在①的基础上将printf语句改为:

printf(“a=%d,b=%dn c1=%c,c2=%cnd=%15.6f,e=%15.12fn”,a,b,c1,c2,d,e);

printf(“f=%f,g=%fn m=%ld,n=%ldn p=%d,q=%dn”,f,g,m,n,p,q); 运行程序。

2.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。

上机运行程序,比较用printf和putchar函数输出字符的特点。

实验四 选择结构程序设计(2学时)

实验性质:设计性实验

一、实验目的

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

二、实验内容

先编程序,解决以下问题,然后上机调试运行程序。1.有一个函数 xy2x13x11x11x10 x10用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’。

实验五 循环控制(4学时)

实验性质:设计性实验

一、实验目的

1.熟悉用while语句,do-while语句和for语句实现循环的方法。2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。

二、实验内容

编程序并上机调试运行。

1.输入两个正整数,求其中最大公约数和最小公倍数。2.用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。

实验六 数组(4学时)

实验性质:设计性实验

一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组和字符串函数的使用。3.掌握与数组有关的算法(特别是排序算法)。

二、实验内容

编程序并上机调试运行。

1.用选择法对10个整数排序。10个整数用scanf函数输入。2.将两个字符串连接起来,不要用strcat函数。实验七 函数(4学时)

实验性质:设计性实验

一、实验目的

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

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

4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。

二、实验内容

编程序并上机调试运行。

1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。2.求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出的最大公约数求最小公倍数。

(1)用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。

(2)不用全局变量,两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。

实验八 预处理命令(2学时)

实验性质:设计性实验

一、实验目的

1.掌握宏定义的方法; 2.掌握文件包含处理方法; 3.掌握条件编译的方法。

二、实验内容

编程序并上机调试运行。

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

说明:在程序主函数使用宏时只能用两个实参,如SWAP(a,b),不能用三个参数。2.用条件编译方法实现以下功能:

输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下字母(如‘a’变成‘b’,„,‘z’变成‘a’。其它字符不变)。用#define命令来控制是否要译成密码。例如: #define CHANGE 1 则输出密码。若 #define CHANGE 0 则不译成密码,按原码输出。用条件编译方法来处理。

实验九 指针(4学时)

实验性质:设计性实验

一、实验目的

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

二、实验内容

编程序并上机调试运行程序(都要求用指针处理)。1.输入三个整数,按由小到大的顺序输出。

2.将一个3*3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:

1 7133915511 19将数组名作为函数实参。函数调用后在主函数中输出已转置的矩阵。3.用一个函数实现两个字符串的比较,即自己写一个strcmp函数: strcmp(s1,s2)如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1

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

实验十 结构体和共用体(4学时)

实验性质:设计性实验

一、实验目的

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

二、实验内容

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

1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。

要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

2.输入和运行以下程序:

#include

union data {int i[2]; float a; long b; char c[4]; };

void main(){union data u;

scanf(“%d,%d”,&u.i[0],&u.i[1]); printf(“i[0]=%d,i[1]=%dna=%fnb=%ldnc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%cn”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);} 输入两个整数10000、20000给u.i[0]和u.i[1]。分析运行结果。

然后将scanf语句改为: scanf(“%ld”,&u.b);

输入60000给b。分析运行结果。

实验十一 位运算(1学时)

实验性质:设计性实验

一、实验目的

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

二、实验内容

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

1.设计一个函数,使给出一个数的原码,能得到该数的补码,用八进制形式输入和输出。

实验十二 文件(1学时)

实验性质:设计性实验

一、实验目的

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

二、实验内容

1.从键盘输入一个字符,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符以“!”结束。实验十三 学生成绩管理(4学时)

实验性质:综合性设计性实验

一、实验目的

1.综合运用C程序设计知识,解决实际问题。

二、实验内容

1.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。

2.将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu-sort”中。

3.将上题已排序的学生成绩文件进行插入处理。插入一个学生的三门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。

学生的原有数据为:

91101 Wang 89,98,67.5 91103 Li 60,80,90 91106 Fun 75.5,91.5,99 91110 Ling 100,50,62.5 91113 Yuan 58,68,71 要插入的学生数据为:

91108 Xin 90,95,60

制 订:程世辉 教研室:软件教研室 执笔人:程世辉 审定人:

二00七年八月

篇2:高级语言程序设计(C语言)实验教学大纲

课程编号:1021742 总学时:56学时

适用专业:非计算机理工科各专业 总实验学时:24 实验次数: 12 次 应开实验个数:13 已开实验个数:13 实验开出率:100%

实验一

熟悉C 程序的运行环境

一、学时:2

二、实验类型:演示、验证

三、实验目的和主要内容:

1.了解计算机系统对高级语言的基本操作方法

2.熟悉和了解Turbo C 系统软件的使用和操作

3.能进行简单的C语言程序录入、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.熟悉开机操作,使用单机或计算机上网。

2.进入 Turbo C 系统。

3.熟悉Turbo C 系统各菜单命令的使用和操作

4.模仿简单的源程序,编写自己的小程序,并能运行这些程序。

5.录入、调试、编译和运行C语言程序

实验二

数据类型、表达式及输入输出函数实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1. 熟悉和了解C语言的数据类型

2. 使用C语言的有关算术运算符,以及包含这些运算符的表达式

3.进行简单的C语言输入输出函数的使用,格式控制符的涵意,简单C程序的设计、调 试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.编写简单的有输入输出的C程序,并进行该程序的运行、调试、编译。

3.编写一个输入三条边,计算三角形面积的程序。

4.编写程序,计算a+b×c÷d-d3,其中:a,b为整型变量,c,d为实型变量。

5.编写一个有关数据计算程序,验证运算符及表达式的结果。

6.可从布置的作业中,再任选一编程题,进行上机。

实验三

顺序程序结构程序设计

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.进一步掌握C程序的编辑、编译、连接和运行的过程。2.熟悉顺序结构的程序设计方法。3.熟练使用C的各种表达式。

4.熟练掌握输入、输出函数的使用。

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.输入x,y,编写程序求z=x+|y|的值。实验步骤与要求:

(1)程序中用scanf函数输入x和y的值,请分析以下两个语句 scanf(“%f%f”,x,y);scanf(“%f%f”,&x,&y);

哪一个是正确的,分别运行之,分析程序运行结果。

(2)如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。2.编写输入三角形的三边长a、b、c,求三角形面积area的程序。实验步骤与要求:

(1)输入前要加提示语句。

(2)输出结果前要有必要的文字说明。(3)输入一组数据3,4,5,观察运算结果。

(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。

实验四

分支控制语句实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言系统分支语句的使用和操作

2.进行C语言分支控制语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行分支控制源程序的设计,并进行该程序的运行、调试、编译。

3.编辑一个分支控制程序,求:任意输入数(n>2)是否为素数。

4.编辑一个分支控制程序,求:任意输入3个数,求其最大数。

实验五

循环语句实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言循环语句的使用和操作

2.进行C语言循环语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行循环源程序的设计,并进行该程序的运行、调试、编译。

3.编辑一个循环程序,求:1到100的和及平方和。

4.编辑一个循环程序,求:任意输入10个数,求其最大数。

5.可从布置的作业中,再任选一编程题,进行上机。

实验六

数组实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言数组程序的设计方法

2.学会使用C语言数组进行程序设计

3.进行C语言数组语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行数组的定义和使用方法,即:一维和二维数组的应用。

3.进行数组语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑数组应用程序:

(1)任意输入20个数在一维数组a中,求20个数的平均值。

(2)定义2个二维数组A[2][3]、B[2][3],分别对这2个数组输入数据,求A+B和A-B的值。

(3)用字符数组存储任意输入10字符,求其最大字符。

(4)编辑一个有5个学生,考 3门功课。求出每一个学生的总分及平均分,统计平均成绩低于 60 分的学生人数。

5.可从布置的作业中,再任选一编程题,进行上机。

实验七

有关数组的程序设计

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.掌握有关数组和字符串的程序设计方法。

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤: 已知一组数据如下:6,3,42,23,35,71,98,67,56,38。编写程序,把它们按 从小到大的次序排列起来。求2行3列矩阵A 的转置矩阵。

实验八

函数实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言函数程序的设计方法。

2.学会使用C语言函数的定义及调用,并进行程序编制。

3.进行C语言函数语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行函数的定义及调用。

3.进行函数语句源程序的设计,并进行该程序的运行、调试、编译。

(1)任意输入一个数n,用两个子函数实现1+2+3„n以及n!,在主函数中输出该结果。

(2)在主函数中定义二维数组A[3][4]、B[4],用子函数对数组A[3][4]每一行求和,其值放在数组B[4]中,在主函数中输出该值。

(3)用字符数组存储任意输入的10字符,在子函数中把该字符数组的小写字母转换成大写字母。

4.可从布置的作业中,再任选一编程题,进行上机。

实验九

常用指针实验

(一)一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言指针一般设计方法

2.学会使用C语言指针进行程序设计

3.进行简单C语言指针语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言指针语句的定义和使用方法。

3.进行C语言指针语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个找出字串 str1中 str2出现的位置,用指针编程实现。

5.可从布置的作业中,再任选一编程题,进行上机。

实验十

复杂指针实验

(二)一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.进一步熟悉和了解C语言指针语句设计方法

2.进行C语言中的指针与函数、指针数组、多级指针语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言指针与函数、指针数组、多级指针语句的定义和使用方法。

3.进行C语言该指针语句源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个在主程序里输入十个不等长的字串,调用自编的函数把它们按升序排列,用指针编程实现。

5.可从布置的作业中,再任选一题编程题,进行上机。

实验十一

结构类型实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言结构、联合数据的定义及设计方法

2.学会使用C语言结构、联合数据类型进行程序设计

3.进行C语言结构、联合语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言结构、联合数据类型的定义和使用。

3.进行C语言结构、联合数据类型源程序的设计,并进行该程序的运行、调试、编译。

4.编辑一个能处理学生综合信息的程序(包括:学号、姓名、班级、语文成绩、数学成绩、英语成绩等)。

实验十二

有关结构的程序设计

一、学时:2(课后完成或选作)

二、实验类型:验证、设计

三、实验目的和主要内容:

1.掌握结构体类型和结构体变量的定义。2.掌握结构类型变量的定义和使用;

3.掌握链表的概念,初步学会对链表进行操作;

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。实验步骤与要求:

用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。

2.三个人围成一圈,从第一个人开始顺序报号1,2,3。凡报到“3”者退出圈子,找出最后流在圈子中的人原来的序号。

3.建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

实验十三

文件实验

一、学时:2

二、实验类型:验证、设计

三、实验目的和主要内容:

1.熟悉和了解C语言文件系统的组成及设计方法。

2.学会使用C语言文件系统进行程序设计

3.进行C语言文件语句的设计、调试、编译和运行

四、需用仪器、设备:

1.硬件环境

PC-486以上微机

32M以上的内存

VGA显卡

2.软件环境

西文DOS操作系统(可使用UCDOS汉字操作系统)或Windows操作系统

Turbo C(2.0版)

五、实验方法及步骤:

1.进入 Turbo C 系统。

2.进行C语言文件系统类型的定义和使用。

3.进行C语言文件系统类型源程序的设计,并进行该程序的运行、调试、编译。

4.编辑程序。

(1)用数组存储10个数据,并存储在“date.dat”文件中

篇3:C语言程序设计实验课程教学探索

C语言程序设计作为一门重要的程序设计语言入门语言, 在课程体系中的地位不言而喻。盐城师范学院将C语言程序设计作为计算机专业本科生程序设计课程的基础核心课程, 已有多年历史。该课程对培养学生计算思维、编程能力、自学能力和分析解决计算机问题的能力有着至关重要的作用, 并对后续课程, 譬如算法与数据结构、数据库原理、操作系统等核心课程的学习有非常大的支撑作用。但是, C语言中概念多、难点多、语法复杂、设计到的硬件知识多、使用灵活、不易调试等特点, 容易导致学生出现畏难情绪, 极大地遏制了学生的学习兴趣。本文针对以上问题就该课程对应的实验课程做几点思考, 从课程内容、教学方法、教学手段等几个方面进行大胆改革, 积极投身教学实践, 结果显示我们的改革能取得较好的效果。

2 传统教学模式存在的问题 (Defects of traditionalteaching model)

C语言程序设计实验课程是计算机专业进入大学后要学习的第一门程序设计实践课程, 它对提高学生编程兴趣和动手能力有着至关重要的作用。或者说, 该课程是热爱编程和害怕编程的两种学生的分水岭。传统教学模式在实际教学过程会存在以下问题[1]。

(1) 生源的计算机基础参差不齐, 有些学生进入大学前就已经通过计算一级考试, 有些学生还没有接触过计算机。进入大学后同一平台学习程序设计, 后者明显感觉到有压力, 自信心受打击从而出现厌学的情绪。

(2) 传统教学模式的过程以教师为主体, 学生被动的学, 对于实践性很强的课程, 学生逐渐丧失兴趣, 缺乏学习的动力。C语言程序设计实验课程上, 如果只是简单的做些验证性实验, 则不能培养学生独立编程解决问题的能力, 极大地扼杀了学生的创造力。

(3) 由于被动的学习, 造成只是照本宣科, 缺乏钻研精神, 导致学生在后续专业课程或参加设计性、综合性实验课程时, 往往力不从心, 达不到预期的教学效果。

(4) 教师对课程教学目标不明确, 认为将该课程的语法知识传授给学生就达到教学目的, 这样就背离了通过学习C语言应该培养学生能够用编程语言去分析和解决实际问题的能力的宗旨。

3 改革方案 (Project of innovation)

C语言程序设计是一门实践应用性较强的学科, 在日常的教学过程中需要不断强化实验环节, 让学生在操作实践过程中不断地发现、分析和解决新问题。为了实现上述目标, 教师在教学过程中必须要结合有效教学理论的要求, 努力改进教学方法。

3.1 精心设计好教学内容

案例教学教学法的理论依据是构建主义学习理论[2]。构建主义者认为, 教学设计要发挥学习者在学习过程中的主动性和构建, 教师的职责在于使学习者置身于探索知识之中, 为他们提供适当的“情境”[3]。在设计案例时, 要兼顾不同基础的学生, 不能让实验课变成少数人的实验课。因此, 我们将教学内容按层次组织。第一个层次为基本知识, 所有的学生都必须能够通过自身的努力顺利完成, 这样可以极大提高学生的学习积极性。第二个层次为对所学知识简单的应用, 这个层次对基本概念和方法加深理解, 需要学生通过自己的钻研、参考课外资料, 发挥自己的学习能力。通过这一层的学习, 所有的学生应该能够学会主动积极地查阅文献, 切实提高自己的钻研和自学能力, 同时也能鼓舞学生的斗志。第三个层次是用所学知识去解决实际问题, 真正做到培养学生的创造力。这个层次需要通过大量的思考和联系才能达到, 同时也能选拔出具有一定天分的学生。

3.2 激发学生的学习兴趣

兴趣是最好的老师, 同时兴趣也是学好程序设计的关键, 而培养学生对C语言程序设计课程的兴趣关键在于实验课。激发学生的学习兴趣的关键莫过于让学生有解决实验中碰到问题的能力, 不会因为C语言本身的问题丧失学习的信心。比如, 让学生掌握调试手段。首先我们使用一个有趣的现象引出为何要使用调试工具, 以及调试工具使用方法。例如, 我们给出如下所示代码, 请学生写出运行结果。绝大部分学生会给出从246到255的十个数。运行的结果告诉他们结果应该是一个死循环, 这样会激发学生的想知道原因的兴趣。

#include

int main ()

{

unsigned char a;

for (a=246;a<256;a++)

printf (“%dt”, a) ;return 0;

}

我们用VC++ 6.0的调试工具, 在循环体语句前设置一个断点, 执行debug, 并执行单步调试, 发现当a为255后for循环并没有能停止, a的值变成了0, 如图1和图2所示。这时学生会回忆起unsigned char类型的变量取值范围为0—255。当变量a值为255时再加1就回头变成了0。这样学生会对调试工具的使用有一个非常深刻的印象, 同时也会明白掌握调试工具的重要性。更重要的是, 极大地激发了学生的学习兴趣。

3.3 设计考核体系

目前许多高等院校C语言程序设计课程学习成绩的评定, 仅以期末一张考试卷的完成情况而定, 这使得很多学生不重视实验课, 认为实验课学得好与不好对成绩影响不大, 很多学生重理论、轻实验[4]。我们将考核贯穿整个学习过程中, 每学完一个知识点进行一次考核。考核的方式灵活多样, 可以通过诸如答辩、课后撰写小论文、完成实验报告等方式。考核过程中发现的问题决定教师教的过程, 可以通过集中讲授、设计思考题、提供参考资料等方式解决学习过程发现的问题。

4 结论 (Conclusion)

多年来, 我校在C语言程序设计实验课上进行了改革的尝试, 许多老师积极参与教学改革, 取得了辉煌的成果。我们一直在努力寻找提高学生对C语言程序设计实验课程的兴趣、最有效的教学手段, 为计算机专业学生提高动手能力、编程思维能力做出自己的努力。

参考文献

[1]王创伟, 汤克明, 蔡长安.“C语言程序设计”教学改革方案与实践[J].现代计算机, 2010 (10) :23-25.

[2]温彭年, 贾国英.建构主义理论与教学改革:建构主义学习理论综述[J].教育理论与实践, 2002, 23 (5) :17-22.

[3]储岳中, 秦锋, 刘哄申.“C语言程序设计”理论与实践一体化教学的几点实践[J].计算机教育, 2012 (12) :22-25.

篇4:C语言实验课教学设计

关键词:C语言实验教学;教学改革;教学设计;教学流程

中图分类号:G642.0 文献标识码:A

一、引言

C程序编写能力是要靠大量的练习学会的,只有让学生多多动手,他们才会对程序设计语言感兴趣。因此在C语言课程教学中应该重视实验课。但是,目前C语言实验课的教学存在着以下弊端:第一,在教学理念上重视理论教学,轻视实验课的练习。第二,在实验课教学过程中教师往往放任学生自由上机,学生只能被动地编写教师提供的程序清单对编程知识缺少深入思考。第三,在实验课的教学过程中,学生之间缺少交流。而在实际的程序开发行业中所有开发人员是需要相互合作的。基于以上因素需要对C语言实验课的教学过程进行改进。

二、C语言实验课教学目标的确定

教学目标就是教学的一个标准,教学目标规定了教学要达到的程度,它是教师教学和学生学习的依据,教学目标的制定可以克服教学的盲目性,在教学过程中占有重要的地位。因此,C语言实验课教学首先要确定教学目标。

C语言实验课教学目标的制订要从认知领域、动作技能领域和情感领域这三个方面来确定。例如对于C语言课程中的“控制结构”这部分的实验内容其实验目标确定如下:在认知领域方面,学生要理解基本的解决问题的技巧,理解计数控制循环和标记控制循环;在动作技能领域方面,学生能够熟练掌握自顶向下逐步求精算法设计,能够熟练应用if语句,if/else语句和switch语句来实现选择结构,能够应用while语句,do/while语句和for语句实现程序循环结构,学生可以使用++、--、赋值和逻辑运算操作符,在循环语句中能够应用break语句和continue语句来控制程序的结构;在情感領域方面,要培养学生认真学习、严谨求实、实事求是和勇于探索的科学精神和态度。

三、确定C语言实验课的操作流程

为了上好C语言实验课,并且能够完成制订好的教学目标,需要根据C语言实验课的具体题目可以将实验课教学过程分为三大部分进行:课前部分、课中部分和课后部分。其具体的操作流程如下图所示:

C语言实验课操作流程图

在上图中,课前教学部分、课中教学部分和课后教学部分都要按照实验教学目标来制定。课前教学部分是在课堂讲授课程完毕之后并且在实验课进行之前进行的,在这部分中主要是要对所讲授课程的知识点进行巩固,并对实验课涉及的知识进行预习。教师在设计实验题目时要设计好学习环境,利用良好的环境调动学生学习的积极性。在实验课学生现场自主编程中,可以发现C语言的语法错误和逻辑错误,提高学生自己分析和解决问题的能力。在这个过程中,教师要给予学生必要的指导和帮助。在协助学习实验题目过程中,教师要确定协作小组让学生共同完成学习目标并将个人习得成果转化为大家习得成果,并且教师要对不同的学习任务进行选择,要设计好实验课程的协作环境,保证实验课程的顺利实施,最后要对实验教学效果进行评价,以此来刺激教学的进行。

四、结论

在C语言实验课的教学中,要充分尊重学生学习活动的主体性地位。所以在大学C语言程序设计这门课程的实验教学中采用了以学为主的教学设计方案,这样可以促进学生独立分析问题的能力,充分调动学生学习的兴趣和主动参与意识。

参考文献:

[1]吴文虎.计算机程序设计基础课程改革[J].中国大学教学,2004(02).

[2]乌美娜.教学设计[M].北京:高等教育出版社,1994.

[3]孙可平.现代教学设计纲要[M].西安:陕西人民教育出版社,1998.

篇5:《C语言高级应用》实验指导书

实验指导书

电子与计算机科学技术学院 实验一 顺序、选择及循环结构程序设计

一、实验目的

1.熟悉C语言编程环境 2.掌握输入输出函数的使用

3.掌握if语句和switch语句的使用

4.掌握for语句、while语句和do-while语句的使用 5.通过练习掌握顺序、选择及循环结构程序设计方法

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料

3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时

四、实验内容和步骤

1.实验内容

(1)求解方程ax2+bx+c=0。

(2)打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

打印水仙花数时,要分别求出三位数的个位数、十位数和百位数,试问:除了你所用的的方法外,是否还有其它方法?请写出。

实验二 数组的应用

一、实验目的

1.通过实验理解掌握数组的基本概念

2.熟悉数组的定义、数组元素初始化、数组元素引用 3.理解字符数组的基本概念、基本操作和应用 4.能利用数组解决简单的应用问题

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.首先应熟悉Turbo C运行环境,正确操作 2.自主编写程序,必要时参考相关资料

3.实验前应画出流程图并写出程序大致框架或完整的程序代码 4.实验学时:2学时

四、实验内容和步骤

1.实验内容

(1)将一个数组中的值按逆序重新存放。

(2)编一程序,将两个字符串连接起来,不要用strcat函数。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

(1)在字符串常量中,其结束符‘’要占一个字节的内存空间,在计算字符串长度时,是否也包括了字符串结束符?

(2)在对字符数组进行输入时,可以用scanf函数,也可以用gets函数,若定义了一字符数组,从键盘输入了以下内容:You are my student。试问:用scanf函数和gets函数得到的结果一样吗?请分别指出。

实验三 结构体及其应用

一、实验目的

1.理解结构体的基本概念 2.掌握结构体类型的定义方法

3.掌握结构体变量的定义、初始化和引用 4.理解结构体数组的定义、初始化和引用 5.通过实验熟悉结构体及结构体数组的应用

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解结构体的应用及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,求出每个学生3门课的平均成绩,并输出最高分的学生的数据(包括学号、姓名、3门课的成绩、平均成绩)。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

假如你所定义的结构体类型名为:STUDENT,试问:sizeof(STUDENT)的值是多少?

实验四

函数的应用

一、实验目的

1.理解函数的基本概念

2.掌握函数的定义、调用方法及参数传递方式 3.理解变量的作用域和变量的存储类别 4.通过实验掌握函数的使用

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解函数的应用及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

(1)写一个判素数的函数,在主函数中输入一个整数,输出是否是素数的信息。(2)写一函数,使给定的一个二维数组(3×3)转置。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

如果一个函数的定义如下所示: void hello(){ „„ return;} 请说明其中return语句的作用。其中的return语句可以省略吗?

实验五

指针及其操作

一、实验目的

1.通过实验进一步掌握指针的概念

2.理解指针的定义和简单指针变量的使用方法

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解指针的使用及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

输入4个整数,按由小到大的顺序输出,使用指针进行处理。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题: 请说明以下程序段存在的问题,并改正。int a,*p;scanf(“%d”,p);

实验六

数组的指针操作

一、实验目的

1.理解数组的指针和指向数组的指针变量 2.理解指针变量作为函数参数时的参数传递方式

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解数组指针的使用及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

(1)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数实现:① 输入10个数;②进行处理;③输出10个数(2)将n个整数的前面各数向后移m 个位置,最后m 个数变成最前面m个数。在主函数中输入n个整数和输出调整后的n个数。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

int *p, a[10]={0,1,2,3,4,5,6,7,8,9};p=a;试问:如果数组a的首地址为:0x1000,&a[3]与p+3的值分别是多少?*p+3与*(p+3)的值分别是多少?

实验七

结构体的指针操作

一、实验目的

1.理解结构的指针和指向结构的指针变量及链表的基本概念 2.理解链表的基本操作

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解结构的指针的使用及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中有年龄等于此年龄的结点,则将此结点删除,否则新建一结点,插入到链表末尾。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

在建立链表时,要用到malloc函数来开辟内存空间,例如: p=(struct student *)malloc(sizeof(struct student));试问:为什么要在malloc函数前加(struct student *),去掉其中的*号可以吗?并说明原因。

实验八

文件的基本操作与应用

一、实验目的

1.理解文件及文件指针的概念

2.学会使用打开、关闭、读、写等文件操作函数 3.学会创建自己需要的文件格式

二、实验环境

1.计算机

2.Turbo C集成环境

三、实验说明

1.熟练操作Turbo C运行环境

2.自主编写程序,必要时参考相关资料 3.充分理解文件的基本操作及编程技巧

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

编程实现以下内容:

(1)建立一数据文件,该数据文件包括文件头:0X146F,0X1234;

(2)一个班有5个学生,每个学生包括:学号、姓名和三门课成绩,从键盘输入5个学生的信息,并保存到该数据文件;

(3)从文件中读出5个学生的信息,计算平均成绩;

(4)把5个学生的所有信息(包括平均成绩)输出到数据文件。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)进入Turbo C集成环境。(3)编辑源程序并进行保存。

(4)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(5)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

为什么在对文件操作结束后,要用fclose函数关闭文件?

实验九

串口通信的简单应用

一、实验目的

1.理解串口的操作方式和模式控制方式 2.理解串口数据通信的实现过程 3.能够编写简单的串口通信程序

二、实验器材

1.计算机

2.DB_9串口插头两个,导线若干

三、实验说明

1.自主编写程序,必要时参考相关资料 2.充分理解串口的基本操作 3.理解串口通讯的基本过程

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

将两台计算机的COM口相连,一个作为接收端,另一个作为发送端,编程实现两台计算机之间的简单通信。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)将两台计算机的COM口连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。(5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(6)执行程序,并检查程序输出结果。

五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

两台计算机在通过串口进行串行通信时,它们的串口参数(如波特率)可以设置为不一样吗?

实验十

并口通信的简单应用

一、实验目的

1.理解并口的操作方式

2.理解并口寄存器的含义和并口读写时序

3.能够针对简单的应用问题,编写简单的并口通信程序

二、实验器材

1.计算机

2.实验电路板(包括并行接口、数模转换器DAC0832、运算放大器LM741、电阻、电容等),DB_25并口插头一个,导线若干 3.示波器、微机—II型电源各一套

三、实验说明

1.自主编写程序,必要时参考相关资料 2.充分理解并口的基本操作 3.理解并口通讯的基本过程

4.实验前应画出流程图并写出程序大致框架或完整的程序代码 5.实验学时:2学时

四、实验内容和步骤

1.实验内容

通过计算机并口向数模转换器发送数据,实现D/A转换。2.实验步骤

(1)分析实验内容,画出流程图并写出程序大致框架或完整的程序代码。(2)把实验电路板与计算机并口、示波器、电源(此时电源关闭)连接好。(3)进入Turbo C集成环境。(4)编辑源程序并进行保存。

(5)编译源程序,若有错误,修改错误后再次进行编译和连接,如此反复进行到不显示出错为止。

(6)打开电源,执行程序,通过示波器观察D/A转换器和运算放大器输出的波形。

(7)如发现波形输出有问题,若是程序有问题,关闭电源,修改程序并保存,重复步骤(5),(6),(7),直到输出正确的波形为止。若是电路有问题,请查找原因,或更换实验板,验证程序的正确性。

五、实验报告要求

1.整理实验结果,填入相应表格中 2.小结实验心得体会 3.回答思考题:

篇6:C语言程序设计实验教学的探讨

C语言程序设计实验教学的探讨

本文在分析C语言程序设计实验中普遍存在的问题后,探讨了C语言程序设计实验教学的.改进,并提出了具体的改进方法.

作 者:曲庆红 作者单位:白城师范学院教育技术系,吉林,白城,137000刊 名:科技信息英文刊名:SCIENCE & TECHNOLOGY INFORMATION年,卷(期):“”(23)分类号:G71关键词:实验教学 程序设计 创新

篇7:C语言程序设计实验教案

实验一visual c++编译环境的使用..............................................................................2 实验二 顺序程序设计...............................................................................................6 实验三 选择结构程序设计........................................................................................9 实验四 循环结构程序设计......................................................................................13 实验五 函数...........................................................................................................17 实验六 指针...........................................................................................................22 实验七 数组...........................................................................................................25 实验八 结构体........................................................................................................32

实验一visual c++编译环境的使用

实验目的:

1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。

2.掌握c语言程序设计的基本框架,能够编写简单的c程序。3.了解程序调试的思想,能找出并改正c程序中的语法错误。实验内容:

1.在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可以是学号姓名。2.调试示例,在屏幕上显示一个短句“Hello World!”。

源程序

#include void main(){ printf(“Hello World!n”);} 运行结果:

Hello World!基本步骤:(要求熟练掌握)1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C++6.0”进入VC++编程环境。2)新建文件(*.cpp)

“文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修改文件保存“目录”和“文件”(文件名),单击“确定”。

3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符标点都要在半角状态下,同时注意大小写,一般都用小写)

在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件”->“另存为” 4)编译(*.obj)

用来检查语法错误

“编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。5)连接(*.exe)“编译”->“构件”或F7 6)运行

“编译”->“执行”或Ctrl+F5 7)关闭程序工作区

“文件”->“关闭工作区” 8)打开文件

“文件”->“打开”

9)查看C源文件、目标文件和可执行文件的存放位置。

源文件在保存目录下,目标文件和可执行文件在“保存目录Debug”中

3.编程,在屏幕上显示一个短句“this is my first c program.”。4.调试示例,在屏幕上显示一个短句“welcome to you!”。源程序(有错误的程序)#include void mian(){ printf(Welcome to You!n”)} 运行结果(改正后的运行结果)Welcome to You!操作步骤:

1)按照实验2中介绍的步骤1)~3)输入上述源程序并保存。

2)编译,“编译”->“编译”(Ctrl+F7),信息窗口中显示编译出错信息,如下图所示。3)找出错误,在信息窗口中依次双击出错信息,编辑窗口就会出现一个箭头指向程序出错的位置,一般在箭头的当前行或上一行,可以找到出错语句。

第4行,出错信息:Welcome是一个未定义的变量,但Welcome并不是变量,出错的原因是Welcome前少了一个双引号。

4)改正错误,重新编译,得下如下图所示出错信息。

出错信息:“}”前少了分号。

5)再次改正错误,在“}”前即printf()后加上“;”(英文状态),生新编译,显示正确 6)连接,“编译”->“构件”(F7),出现如下出错信息。

出错信息:缺少主函数。

7)改正错误,即把“mian”改为“main”后,重新连接,信息窗口显示连接正确。8)运行,“编译”->“执行”(Ctrl+F5),观察结果是否与要求一致。5.改错,改正下列程序中的错误,在屏幕上显示以下3行信息。

**************** Welcome **************** 源程序(有错误的程序)#include void main(){ Printf(“****************n”);

}

实验报告要求

将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。

Printf(“

Welcome”)Printf(“****************n”);

实验二 顺序程序设计

【实验目的】

1.学会顺序程序设计的思想

2.进一步熟悉Turbo C集成编译环境的使用,达到熟练使用的目的 3.熟练掌握各种数据类型的输入输出格式,并学会使用输入输出函数 4.学会使用表达式

【实验内容】

1.在屏幕中输出一行文字“Hello,Welcome!” 说明:

(1)只需要在屏幕中显示一行文字即可 参考程序如下:

#include main(){

printf(“Hello,Welcome!n”);}

2. 输入一个华氏温度,要求输出摄氏温度。公式为

输出要求有文字说明,取两位小数

说明:

(1)摄氏温度F和华氏温度c都应用float类型变量存储(2)注意表达式书写中的各变量的顺序问题(3)输出时只需输出两位小数 参考程序如下:

#include main(){

float F,c;

printf(“input F:”);

scanf(“%f”,&F);

c=5*(F-32)/9;

printf(“c=%.2fn”,c);}

3.输入三角形三边长a、b、c,求三角形周长和l面积s。用scanf输入数据,输出计算结果,输出时要求有文字说明,取消书店后两位小数。说明:

(1)程序设计中使用的所有变量均为float类型 c59F32(2)三角形周长公式:labc

abc2(3)三角形面积公式;sp(pa)(pb)(pc),其中

p

(4)注意应保证输入数据能够构成三角形

(5)需要使用开根号函数sqrt,在程序顶部加上#include一句(6)以a3.0,b4.0,c5.0运行程序,查看执行结果 参考程序如下:

#include #include main(){

float a,b,c,l,s;

float p;

printf(“input a,b,c:”);

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

l=a+b+c;

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

printf(“l=%.2fn”,l);printf(“s=%.2fn”,s);}

4.设圆半径r1.5,圆柱高h3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取消书店后两位小数。说明:

(1)程序设计中使用的所有变量均为float类型(2)圆周长公式:l2r(3)圆面积公式:S1r(4)圆球表面积公式:S24r

V14322(5)圆球体积公式:

r3

(6)圆柱体积公式:V2rh 参考程序如下:

#include #define PI 3.14

2main(){

float r=1.5,h=3;

float l,s1,s2,v1,v2;

l=2*PI*r;

s1=PI*r*r;

s2=4*PI*r*r;

v1=4*PI*r*r*r/3;

v2=PI*r*r*h;

printf(“l=%.2fn”,l);printf(“s1=%.2fn”,s1);printf(“s2=%.2fn”,s2);printf(“v1=%.2fn”,v1);printf(“v2=%.2fn”,v2);}

实验三 选择结构程序设计

【实验目的】

1.了解C语言的逻辑运算 2.学会使用if语句和switch语句 3.熟练掌握选择结构程序设计方法

【实验内容】 1.有一函数

y x

x1 1x10 2x

13x11

x10

写一程序,输入x,输出y值 说明:

(1)根据输入x的不同求y的值,使用if语句

(2)分别输入三个分段中的三个数,判断输出结果是否正确,测试程序正确与否 参考程序如下:

#include main(){

float x,y;

printf(“input x:”);

scanf(“%f”,&x);

if(x<1)

y=x;

if(x>=1 && x<10)

y=2*x-1;

if(x>=10)

y=3*x-11;printf(“y=%fn”,y);}

2.从键盘输入一个字符,可以是数字、字母、或是标点符号,对输入的字符进行判断,如果是数字则输出“* is a number!”,如果是字母则输出“* is a letter!”,如果是其他的字符怎输出“* is the other!”(*为输入的字符)说明:

(1)从键盘输入一个字符,用char类型变量存储(2)使用if语句作判断(3)判断条件根据输入字符的ASCII码值的范围,具体的ASCII码值参看书后的ASCII码表

参考程序如下:

#include main(){

char c;

printf(“input a char:”);

scanf(“%c”,&c);

if(c>=48 && c<=57)

printf(“%c is a number!n”,c);

else if((c>=65 && c<=90)||(c>=97 && c<=122))

printf(“%c is a letter!n”,c);

else

printf(“%c is the other!n”,c);}

3.输入两个实数a、b,保证变量a中存储的是较大的数,变量b中存储的实较小的数,并按照由大到小的顺序输出。说明:

(1)需要对输入的两个数进行比较,判断是否需要交换两个数(2)按照从大到小的顺序输出两个数 参考程序如下:

#include main(){

float a,b;

float temp;

printf(“input a,b:”);

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

if(a

{

temp=a;

} printf(“%f,%fn”,a,b);} 4.输入一年份,判断该年是否是闰年。说明:

(1)判断闰年的条件:能够被4整除,但不能被100整除或者能被100整除,又能被400整除

(2)使用一个变量来代表是否是闰年 a=b;b=temp;10(3)如果是闰年则输出“* is a leap year!”,否则输出“* is not a leap year!”。*代表输入的年份

参考程序如下:

#include main(){

int year;

int flag=0;

printf(“input a year:”);

scanf(“%d”,&year);

if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0))

flag=1;

if(flag==1)

printf(“%d is a leap year!n”,year);

else

printf(“%d is not a leap year!n”,year);}

5.从键盘输入一个月号,显示输出该月号的英文名称 说明:

(1)使用if语句较为麻烦,因为需要做12次比较(2)使用switch语句

(3)如果输入月份超出范围,则应当输出错误信息 参考程序如下:

#include main(){

int month;

printf(“input a month:”);

scanf(“%d”,&month);

switch(month)

{

case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: printf(“January!n”);printf(“February!n”);break;break;printf(“March!n”);break;printf(“April!n”);break;printf(“May!n”);break;printf(“June!n”);break;printf(“July!n”);break;printf(“August!n”);break;printf(“September!n”);break;case 10: printf(“October!n”);break;case 11: printf(“November!n”);break;case 12: printf(“December!n”);break;

} } default: printf(“input error!n”);12

实验四 循环结构程序设计

【实验目的】

1.学会使用while、do-while、for语句 2.熟练掌握循环结构程序设计方法 3.掌握选择结构与循环结构的嵌套

【实验内容】

201.求和说明: n!n1(即求1!+2!+„„+20!)

(1)首先要求出每一项的n!的值

(2)然后把各项相加得到所求的值

(3)存储求和运算结果的变量的初始值应为0(4)存储求积运算结果的变量的初始值应为1 参考程序如下: ①使用while循环

#include main(){

float sum=0;

float mid=1;

int n=1;

while(n!=21)

{

mid=mid*n;

} printf(“sum=%fn”,sum);}

②使用for循环

#include main(){

float sum=0;

float mid=1;

int n;

for(n=1;n<=20;n++)

{

mid=mid*n;n++;sum=sum+mid;

sum=sum+mid;} printf(“sum=%fn”,sum);}

2.求出100到200以内最大的素数和最小的素数,并求出两者的差值 说明:

(1)素数的概念:只能被1和自身整除的正整数

(2)分别求出这个两个素数,并输出,输出格式为:

big one:*

small one:*

最小的素数正序找出

最大的素数倒序找出

(3)求出两者的差,并输出,输出格式为:

result:* 参考程序如下:

#include main(){

int big,small;

int result;

} for(i=200;i>=100;i--){

int i,j;int flag;for(i=100;i<200;i++){ flag=0;for(j=2;j

} if(i%j==0){

} flag=1;break;if(flag==0){

} small=i;break;flag=0;for(j=2;j

{

} if(flag==0){

} big=i;break;if(i%j==0){ flag=1;break;}

} result=big-small;printf(“big:%dn”,big);printf(“small:%dn”,small);printf(“reslut:%dn”,result);}

3.输入两个正整数m和n,求其最大公约数和最小公倍数 说明:

(1)最大公约数:能够被m和n同时整除的最大正整数(2)最小公倍数:m和n相乘的积除以最大公约数

(3)使用for循环,将m和n同时除以1到m(m为m和n两者中较小者),直到找出最大的正整数即为最大公约数(4)输出格式如下:

The greatest common divisor is *!

The least common multiple is *!参考程序如下:

#include main(){ int m,n,temp;int i;int great,least;

printf(“input m,n:”);

scanf(“%d,%d”,&m,&n);if(m>n){

temp=m;m=n;

n=temp;} for(i=1;i<=m;i++){

if(n%i==0 && m%i==0)

great=i;} least=m*n/great;printf(“The greatest common divisor is %dn”,great);printf(“The least common multiple is %dn”,least);}

4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本书。例如,153是一水仙花数,因为153153 说明:(1)“水仙花数”是三位数,所以范围是从100到999(2)使用for循环

(3)循环中需要把数字的每一位都分离出来,然后求和,同原数字比较,进行判断 参考程序如下:

#include main(){ int a,b,c;

int i;int temp;for(i=100;i<1000;i++){ a=i/100;b=(i-a*100)/10;c=i%10;temp=a*a*a+b*b*b+c*c*c;if(i==temp)printf(“%dn”,i);

33} }

实验五 函数

【实验目的】

1.掌握C语言函数的定义、声明以及函数的调用方法 2.了解主调函数和被调函数之间的参数传递方式 3.熟练掌握数组作为函数参数的用法

【实验内容】

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

(1)判断素数的函数名为Prime(2)传递参数为int类型的变量(3)输出格式为:

* is a prime!或者* is not a prime!参考程序如下:

#include Prime(int num){ int i;int flag=0;for(i=2;i

if(num%i==0)

{

} flag=1;break;} if(flag==0)printf(“%d is a prime!n”,num);else

printf(“%d is not a prime!n”,num);} main(){ int num;printf(“input a num:”);scanf(“%d”,&num);Prime(num);} 2.写一个函数,用“冒泡法”对输入的10个数字由小到大顺序排列,并输出。说明:

(1)排序的函数名为Sort(2)排序前后的输入输出都应在主函数中完成(3)使用数组作为函数参数(4)使用“冒泡法”排序 参考程序如下:

#include Sort(int num[]){ int i,j;int temp;for(i=0;i<=8;i++){

} } main(){ int num[10];int i;printf(“input 10 numbers:”);for(i=0;i<10;i++)

scanf(“%d”,&num[i]);Sort(num);printf(“the sorted numbers:”);for(i=0;i<10;i++)

printf(“%d ”,num[i]);}

3.写一函数,使给定的一个二维数组(5×5)转置,即行列互换。说明:

(1)使用5×5的二维数组存放数据

(2)矩阵转置的函数名为Turn(2)转置前后的输入输出都应在主函数中完成(3)使用数组作为函数参数 for(j=0;j<9-i;j++){

} if(num[j]>num[j+1]){ temp=num[j];

} num[j]=num[j+1];num[j+1]=temp;18 参考程序如下:

#include void Turn(int num[5][5]){ int i,j;int temp;for(i=0;i<5;i++){

} } main(){ int num[5][5]={{1,2,3,4,5},{6,7,8,9,0},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};

int i,j;printf(“Before array be turned:n”);for(i=0;i<5;i++){ for(j=0;j<5;j++)printf(“%2d ”,num[i][j]);for(j=i;j<5;j++){

} temp=num[i][j];num[i][j]=num[j][i];num[j][i]=temp;

printf(“n”);} Turn(num);printf(“After array be turned:n”);for(i=0;i<5;i++){

} }

4.写一函数,使输入的字符串反序存放,在主函数中输入和输出字符串。说明:

(1)字符串反序的函数名为Reverse(2)反序前后的输入输出都应在主函数中完成(3)使用数组作为函数参数 for(j=0;j<5;j++)printf(“%2d ”,num[i][j]);printf(“n”);19(4)需要使用strlen函数得到字符串长度,需要在源文件头部加入#include 参考程序如下:

#include #include void Reverse(char str[]){ int length;int i;char temp;length=strlen(str);for(i=0;i

} } main(){ char str[50];printf(“input a string:”);scanf(“%s”,str);Reverse(str);printf(“After reversed is %sn”,str);}

5.写一函数,将两个字符串连接。

说明:

(1)连接两个字符串的函数名为:Connect(2)将连个字符串存入两个字符串数组中,要保证第一个字符串的长度能够容纳两个字符串之和

(3)连接两个字符串主要是找到第一个字符串的结尾,然后将第二个字符串连接到第二个字符串的后边

(4)输出格式为:

The connected string is *!(5)使用数组作为函数参数

(6)连接前后的字符串输出都要在主函数中完成,自定义函数只完成连接功能 参考程序如下:

#include void Connect(char str1[],char str2[]){ int i,j;for(i=0;str1[i]!=';i++);for(j=0;str2[j]!=';j++,i++)temp=str[i];str[i]=str[length-1-i];str[length-1-i]=temp;

str1[i]=str2[j];str1[i]=';} main(){ char str1[50],str2[20];int i,j;printf(“input string1:”);scanf(“%s”,str1);getchar();printf(“input string2:”);scanf(“%s”,str2);Connect(str1,str2);printf(“The connected string is %sn”,str1);}

6.写一函数,求字符串的长度,并编写主函数。说明:

(1)求字符串长度的函数名为:Count(2)字符串结束的标志是’’(3)输出格式为:

The length of string is *!(4)使用数组作为函数参数 参考程序如下:

#include int Count(char str[]){ int i;for(i=1;str[i]!=';i++);return i;} main(){ char str[10];int length;printf(“input the string:”);scanf(“%s”,str);length=Count(str);printf(“The length of string is %d!n”,length);}

实验六 指针

【实验目的】

1.掌握C语言指针变量的定义、声明和赋值 2.学会使用指针变量的程序设计 3.掌握指针作为函数参数的用法

【实验内容】

1.使用指针作为函数参数,写一交换两个数的函数 说明:

(1)交换两个数的函数名为:Swap(2)使用指针变量作为函数参数

(3)在主函数中输入输出,自定义函数只完成交换功能 参考程序如下:

#include Swap(int *p1,int *p2){ int temp;temp=*p1;*p1=*p2;*p2=temp;} main(){ int a,b;int *p1,*p2;printf(“input a,b:”);scanf(“%d,%d”,&a,&b);p1=&a;p2=&b;printf(“Before swap a=%d,b=%dn”,a,b);Swap(p1,p2);printf(“After swap a=%d,b=%dn”,a,b);}

2.使用指针作为函数参数,写一求数组中最大值和最小值的函数。说明:

(1)函数名为:MaxAndMin(2)使用指针指向一维数组

(3)最大值和最小值的输出必须要在主函数中 参考程序如下:

#include MaxAndMin(int *array,int *max,int *min){ int i;

*max=array[0];*min=array[0];for(i=0;i<10;i++){ if(*maxarray[i])*min=array[i];

} } main(){ int array[10]={0,1,2,3,4,5,6,7,8,9};int max,min;int *p1,*p2;p1=&max;p2=&min;MaxAndMin(array,p1,p2);printf(“max=%dnmin=%dn”,max,min);}

3.找出以下程序的错误,并加以修改。①交换两个数

#include Swap(int *p1,int *p2){ int *temp;

temp=p1;

p1=p2;

p2=temp;} main(){ int a,b;int *pointer_1,*pointer_2;

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

pointer_1=&a;pointer_2=&b;Swap(pointer_1,pointer_2);

}

②输出数组重点全部元素

#include printf(“n%d,%dn”,a,b);main(){ int *p,i,a[10];p=a;for(i=0;i<10;i++)

*p++=i;

for(i=0;i<10;i++)

printf(“a[%d]=%dn”,i,*p++);}

4.写一函数,求出矩阵中的最大值和最小值,要求使用指针作为函数参数。说明:

(1)使用二维数组存放矩阵元素(2)只用指针变量指向数组(3)函数名为:ArrayMaxAndMin 参考程序如下:

#include ArrayMaxAndMin(int *array,int *max,int *min,int n){ int i=0,j=0;*max=*(array+i*n+j);

*min=*(array+i*n+j);for(i=0;i

} if(*max<*(array+i*n+j))*max=*(array+i*n+j);if(*min>*(array+i*n+j))*min=*(array+i*n+j);

} } main(){ int array[3][3]={1,2,3,4,5,6,7,8,9};int max,min;int *p,*p1,*p2;p=array;p1=&max;p2=&min;ArrayMaxAndMin(p,p1,p2,3);printf(“max=%dnmin=%dn”,max,min);}

实验七 数组

【实验目的】

1.掌握一维数组和二维数组的定义、赋值和初始化的方法 2.掌握字符数组的使用

3.熟练掌握与数组相关的各种算法

【实验内容】

1.从键盘输入10个整数,对这个十个数进行排序,并输出 说明:

(1)将这10个整数存入一个含有10个元素的一维数组中

(2)冒泡法:从第一个数开始依次让相邻的两个数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍比较后,最大的数已放在最后,第二遍只需考虑剩下的数,以此类推直到最后两个数比较后就可以完成排序。(3)比较完成后将数组中元素依次输出 参考程序如下:

#include main(){ int num[10];int i,j;int temp;printf(“input 10 numbers:”);for(i=0;i<10;i++)

scanf(“%d”,&num[i]);for(i=0;i<=8;i++){

for(j=0;j<9-i;j++){

if(num[j]>num[j+1]){

temp=num[j];num[j]=num[j+1];num[j+1]=temp;

} } } printf(“the sorted numbers:”);printf(“%d ”,num[i]);for(i=0;i<10;i++)

}

2.从键盘输入一串字符串,统计字符串中特定字符的个数(特定字符也需要从键盘输入),并输出个数

说明:

(1)输入时需要用到的输入格式控制字是%s(2)字符串存入一个足够大的字符数组中,保证输入的字符个数不要超过最大个数(3)使用循环控制语句,需要了解字符数组的结束标志是’’,作为循环的结束标志(4)输出格式如下:

The number of * is *!参考程序如下:

#include main(){ char str[50];char ch;int count=0;int i=0;printf(“input a string:”);scanf(“%s”,str);getchar();printf(“input the char:”);scanf(“%c”,&ch);while(str[i]!=')

{

if(str[i]==ch)count++;i++;} printf(“The number of %c is %d!n”,ch,count);}

注意:

程序中多了一行getchar(),这并不是多余的,而是因为在输入完字符串后,键入的回车被放入到内存的输入缓冲区中,在输入特殊字符的时候ch得到了上一个回车,而无法得到我们要输入的字符,因此需要使用一行getchar()将缓冲区中的回车读出,相当于清除缓冲区的作用。

3.青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

说明:

(1)将10位评委的打分放入一个含有10个元素的一维数组中(2)程序设计重点是排序

(3)排序后只要用中间的8个元素即可(4)输出格式为:

The average is *!参考程序如下:

#include main(){ float score[10];float average=0;float sum=0;int i,j;float temp;printf(“input the 10 score:”);for(i=0;i<10;i++)

scanf(“%f”,&score[i]);for(i=0;i<=8;i++){

for(j=0;j<9-i;j++){

if(score[j]>score[j+1]){

} temp=score[j];score[j]=score[j+1];score[j+1]=temp;} } for(i=1;i<=8;i++){ sum=sum+score[i];

} average=sum/8;printf(“The average is %f!n”,average);}

4.将两个字符串连接起来,不要使用strcat函数。

说明:

(1)将连个字符串存入两个字符串数组中,要保证第一个字符串的长度能够容纳两个字符串之和

(2)连接两个字符串主要是找到第一个字符串的结尾,然后将第二个字符串连接到第二个字符串的后边

(3)输出格式为:

The connected string is *!参考程序如下:

#include main(){ char str1[50],str2[20];int i,j;

printf(“input string1:”);scanf(“%s”,str1);getchar();printf(“input string2:”);scanf(“%s”,str2);for(i=0;str1[i]!=';i++);for(j=0;str2[j]!=';j++,i++)

str1[i]=str2[j];str1[i]=';printf(“The connected string is %sn”,str1);}

5.已有一个已排好序的数组,从键盘输入一个数,要求按原来排序的规律将它插入数组中。说明:

(1)需要保证数组的元素据个数比插入前多1(2)需要找到在数组中插入的位置

(3)可倒序查找:假设从小到大排序,从最后一个开始查找,如果要插入元素比当前数组元素小则将该数组元素赋予后边一个元素,继续比较;否则将要插入元素赋予该数组元素的下一个元素,然后break结束循环(4)输入该数组即可 参考程序如下:

#include main(){ int a[10]={0,1,2,4,5,6,7,8,9};int b=3;int i;for(i=8;i>=0;i--){

if(a[i]>b)a[i+1]=a[i];else {

} a[i+1]=b;break;} printf(“The new sorted array is ”);for(i=0;i<10;i++)

} printf(“%d ”,a[i]);6.将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。说明:

(1)只要将原来数组中的值以中间值为中心交换

n1(2)交换次数为2次

(3)注意此时的n是数组最后一个元素的下标 参考程序如下:

#include main(){ int num1[10]={0,1,2,3,4,5,6,7,8,9};int num2[9]={1,2,3,4,5,6,7,8,9};int i;int temp;for(i=0;i<(9+1)/2;i++){

temp=num1[i];

num1[i]=num1[9-i];num1[9-i]=temp;} for(i=0;i<(8+1)/2;i++){ temp=num2[i];num2[i]=num2[8-i];num2[8-i]=temp;

} printf(“The converted array1 is ”);for(i=0;i<10;i++)

printf(“%d ”,num1[i]);printf(“nThe converted array2 is ”);for(i=0;i<9;i++)

printf(“%d ”,num2[i]);}

7.求一个3×3矩阵的对角线元素之和 说明:

(1)使用3×3的二维数组存储数据

(2)使用for循环嵌套,判断数组中元素是否是对角线元素,如果是则相加(3)对角线元素的特点是行号和列号相同 参考程序如下:

#include main(){

int array[3][3]={1,2,3,4,5,6,7,8,9};int sum=0;int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++){

} if(i==j)sum=sum+array[i][j];{

} printf(“summary is %dn”,sum);} 8.设计一个较为复杂的一维数组操作程序,实现对一维数组的基本操作 说明:

(1)通过输入函数实现对一维数组的输入,可以将数组定义为100个整型元素,输入其中的10个元素

(2)在屏幕上将数组中的10个元素输出

(3)往数组中插入一个元素,并将插入后的11个元素输出(4)从数组中删除一个元素,并将删除后的10个元素输出

(5)从数组中查找一个元素,并将查找后的元素下标输出,如果元素不存在,给出提示 参考程序如下: #include main(){

int a[100],i,j;int ins,del,find,pos;printf(“input the data: ”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);printf(“The array is ”);for(i=0;i<10;i++)printf(“%d ”,a[i]);printf(“ninsert a data: ”);scanf(“%d”,&ins);for(i=0;i<10;i++){

if(ins

for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=ins;break;

} } if(i==10)

a[i]=ins;printf(“nAfter insert: ”);for(i=0;i<11;i++)printf(“%d ”,a[i]);printf(“ndelete a data: ”);scanf(“%d”,&del);for(i=0;i<11;i++){

if(del==a[i])

{

for(j=i;j<10;j++)

a[j]=a[j+1];break;

} } if(i==11)

printf(“nnot foundn”);else {

printf(“nAfter delte: ”);

for(i=0;i<10;i++)printf(“%d ”,a[i]);} printf(“nfind a data: ”);scanf(“%d”,&find);for(i=0;i<10;i++){

if(find==a[i])

{

pos=i;

break;

} } if(i==10)

printf(“nnot foundn”);else

printf(“npos=%dn”,pos+1);}

实验八 结构体

【实验目的】

1.掌握C语言结构体变量的定义和使用 2.学会设计简单的结构体程序

【实验内容】

1.有一学生信息包含学号、姓名、性别、年龄、电话等信息,要求设以一个结构体用于存储该学生信息,实现学生信息的输入和显示。说明:

(1)使用结构体实现学生信息的存储(2)按照序号顺序排列学生信息(3)实现按照序号查找学生信息 参考程序如下:

#include struct student { char num[10];char name[10];char sex[5];int age;};main(){ struct student stu[3];int i;int choice;printf(“You can input three studentsn”);for(i=0;i<3;i++){

if(i==0)printf(“The first onen”);if(i==1)printf(“The second onen”);if(i==2)printf(“The third onen”);printf(“ input number:”);scanf(“%s”,stu[i].num);printf(“ input name:”);scanf(“%s”,stu[i].name);printf(“ input sex:”);scanf(“%s”,stu[i].sex);printf(“ input age:”);scanf(“%d”,&stu[i].age);

}

篇8:高级语言程序设计(C语言)实验教学大纲

1 高校C语言实践教学中存在的问题

1.1 实践教学内容有待优化

实践教学内容全部依附于理论教学课程, 实验项目陈旧, 只是配合每一章所学的内容在计算机上进行实践, 验证性实验项目较多, 缺少综合性、设计性实验。扩展内容太少, 不利于学生进行开拓性实验内容的设计, 不利于学生创新思维能力的培养。

1.2 实践教材形式单一

课程采用的实验教材与习题集合二为一的, 每一个实验题目都能在本书中找到答案, 学生只要把源程序输入计算机, 进行简单的调试就可以得到实验结果, 用不着去查资料、思考和创新, 编译出错时不是根据错误提示查找原因, 而是与书上的程序进行比对, 改正录入错误。这样不利于培养学生发现问题、分析问题、解决问题的能力。

1.3 实践教学方法有待创新

教师在教学过程中使用单纯的讲授法, 往往把实验过程、注意事项等讲得很详细, 学生实验时只是按照步骤被动的进行, 缺少独立思考、提问、尝试的机会, 主动性得不到发挥, 创新思维训练无从谈起。上课讲的内容在讲过之后, 无法反复学习研究, 学习者层次不一, 对知识的接受能力也存在较大差异, 造成学习者对教师所操作的步骤无法全部掌握。不利于激发学生对实验教学的兴趣和积极性, 不利于学生进行探究式学习。

2 C语言实践教学的实施内容

2.1 优化实验教学内容

为全面提高学生的实践能力, 使实验教学能够满足不同层次学生的自主学习需求, 我们对实验课程内容进行了规范和优化, 新的C语言程序设计实验内容系统地构建了实验项目模块, 确定开设16个实验。考虑到本课程为专业基础课, 实验项目以基础实验项目为主, 增加综合性实验项目, 使其具有从易到难、从基础到综合的系统性。

实验项目的精心选择。C语言有三种基本结构:顺序结构、选择结构和循环结构, 这三种结构是学生程序学习的入门结构, 所以我们进行了精心的选择, 例如我们在循环结时设计了两个题目, 1.编程计算5!, 要求输出结果为:1×2×3×4×5=120。2.输入10个数, 求其中的最大数和最小数。这两个程序难易适中, 不仅能够很好运用循环结构, 而且为后续的递归结构打下基础, 环环相扣, 由浅入深。

实验题型的多样化。在以往的实验课中, 大部分老师布置的实验题目题型单一, 内容不丰富, 为了全方位地训练学生程序设计能力, 在程序设计中设计多种类型的实验题目, 包括填空设计题, 程序修改题, 编程题等。

2.2 加强实验教材建设

实验教学的正常实施, 离不开相应教材的指导, 为给学生提供一定广度和深度的实验教材和辅助资料, 我们将编写实验指导手册;同时在新的教材中扩充一部分高级编程, 扩展学生的知识面;再加入常见错误代码, 以便学生能够更快的改正自己的程序, 也可预防一些错误的发生。

2.3 完善实验教学方法

将问题分析法, 项目实验法、任务驱动法等多种教学方法融合, 提高学生解决问题的能力, 增加学生的学习兴趣。鼓励学生参加学生社团, 开展趣味编程。组建编程竞赛和兴趣小组, 加入真实的实践项目, 增加学生参与项目的能力。

2.4 实验考核方法的改进

目前实验成绩主要是各个实验成绩的总合, 不能合理的评判出学生的水平和能力。我们将实验成绩分为三个部分, 实验考勤20%, 实验现场打分40%, 实验报告40%。这样给出的实验成绩不仅能够反映学生的真实能力, 而且量化科学。另外设定一部分加分项目, 当学生完成高难度项目时, 另设定加分内容。

3 C语言实践教学的具体实施

围绕理论教学, 设计出相关的例题, 习题、上机指导题以及工程化思想的项目指导题, 坚持实践和理论教学相结合, 以实践教学促进对理论教学的深入理解, 将理论教学置于实际应用的背景之下;以实践教学为手段, 培养学生的计算思维、工程化思想, 训练学生的分析问题、用程序的思维去解决问题的能力, 提高学生的编程能力及调试能力。主要从以下五种实践教学方面实施。

3.1 课内上机实践环节

上机实践课上要求学生在实验室按照理论课讲解的内容进行巩固相应的理论教学知识, 特别是相应的语法知识的熟悉, 然后根据教师布置的题目进行相关的程序分析与设计, 主要是分析该应用中主要用的相关语法知识, 解决思路、分析和处理实际问题。通过上机实践环节, 学生可以基本分析、处理、解决、调试程序的能力。

3.2 课外实验实践环节

要求学生按照本教材配套的C上机实验指导书完成相关的实验操作, 上面的题目设计是以理论教学和上机实践环节相对应的知识去设计的, 能够很多的满足学生对该门课的学习。

3.3 综合性实践环节

布置一个小型软件项目设计, 让学生以工程化的思想从需求分析到最后的实现、运行维护整个工程化阶段去完成课程的设计实践, 使学生在应用项目中学习理论和实践知识。进一步开发学生独立分析、独立思考、独立完成和解决实际应用问题的能力, 综合运用所学的理论知识, 做到融会贯通, 加深学生对编程基本理论的认识和理解。

3.4 学生学习社团趋动

学院有相应的学习社团, 每个社团为每个学生提供的专门的学习场所 (具有上机练习的环境) 及相应的指导教师、高年级的学生的指导, 定期的知识技术的讲座、培训、辅导, 另外还有本专业相关的应用项目支持, 从而达到了实践教学的更高的目的。

3.5 自主研发的云平台的环境支持

学生实验环境全部在学院自行研发的云平台的系统进行操作和实验的, 使学生能切实感受到在自己开发的平台下运行软件, 编写程序与调试程序的乐趣。

4 结语

C语言程序设计是对于初学者来说难以掌握, 很容易让初学者失去学习程序的兴趣, 而实验教学更是难于把握。本文针对C语言实验教学中存在的各种问题, 给出了具体的改革措施, 并在2013、2014级新生中进行实践, 通过这种教学方法的改革, 新生的C语言实践能力得到了明显的提升。通过调查, 学生对于学习编程语言的兴趣大大提升, 对于理论知识的理解也更加深入。

参考文献

[1]董永权.C语言程序设计实验教学中的问题及改革措施[J].科技视窗, 2011 (26) :61-62.

[2]郝慧馨, 李秀坤, 夏清泉.C语言程序设计实验教学探索[J].计算机教育, 2010 (17) :82-84.

上一篇:数学组2009学年度第一学期教学工作总结下一篇:初恋的地方诗歌