第一篇:《C语言高级应用》实验指导书
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.回答思考题:
计算机并口的基地址有哪些?若要改变并口的基地址,应如何操作?
第二篇:《高级语言程序设计C》实验教学大纲
《高级语言程序设计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”文件中
(2)对存储在“date.dat”文件中的数据读入到一个数组中,求出总和及最大值,并把它存储在“dsum.dat”文件中
第三篇:高级语言程序设计(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
printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); } 在此基础上 ①将第二行改为: int c1,c2;再使之运行,分析结果。②再将第三行、第四行改为: c1=300;c2=400;再使之运行,分析其运行结果。
2.输入并运行教材第三章习题3.6,在上机前先用人工分析程序写出应得结果,上机后将二者对照。
3.输入并运行习题3.10。即: #include
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.有一个函数 xy2x13x11x11x10 x10用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 7133915511 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七年八月 实验一 C语言的运行环境和基础知识 一、实验目的 1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。 2.熟练掌握Visual C++ 6.0环境运行的C程序上机步骤 3.数据类型、常量和变量的使用 4.表达式及运算符的应用 5.C程序的调试。 二、实验内容和源程序清单、测试数据、结果。 1、最简单的C程序。(要求文件名:1_1.c)#include printf(“Hello world!n”);return 0;} 2、一个具有致命错误的程序,请修改。(要求文件名:1_2.c)#include printf(“i=%dn”,i); return 0;} 3、一个具有警告语法错的程序。(要求文件名:1_3.c)#include s=i+j;printf(“s=%dn”,s);return 0;} 4、写出一个程序测试整型、字符型数据表示,并输出以验证是否正确。(要求文件名:1_4.c)#include int x=010,y=10,z=0x10; /* 整型数据表示 */ char c1='M',c2='x4d',c3='115',c4=77,c; /* 字符型数据表示 */ /* 整型数据的输出 */ printf(“x=%o,y=%d,z=%xn”,x,y,z); /* 数据以原进制输出,注意是否有前导0或0x */ printf(“x=%d,y=%d,z=%dn”,x,y,z); /* 数据以10进制输出,换算到10进制,结果对吗? */ /* 字符型数据的输出 */ printf(“c1=%c,c2=%x,c3=%o,c4=%dn”,c1,c2,c3,c4); /* 数据以原进制输出,注意是否有前导0或0x ?*/ printf(“c1=%c,c2=%c,c3=%c,c4=%cn”,c1,c2,c3,c4); /* 结果都是什么字符?,也就是说字符可以自由的表示成几种形式? */ printf(“c1=%d,c2=%d,c3=%d,c4=%dn”,c1,c2,c3,c4); /* 看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符 */ /* 字符型数据参与算术运算 */ c=c1+32; /* 字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数 /* 参与数学运算;结果还是一个整数-另外一个字符的ASCII码 */ printf(“c=%c,c=%dn”,c,c); /* 看看这个字符是什么?哇,'M'+32='m'了,看看ASCII码表,原来如此!*/ return 0;} 参考结果: x=10,y=10,z=10 x=8,y=10,z=16 c1=M,c2=4d,c3=115,c4=77 c1=M,c2=M,c3=M,c4=M c1=77,c2=77,c3=77,c4=77 c=m,c=109 三、实验报告要求 将题目:2和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。2 实验二 顺序结构程序设计 一、实验目的: 1.掌握顺序结构程序设计 2.掌握赋值语句的用法 3.熟练地进行数据输入和输出 二、实验内容和源程序清单、测试数据、结果。 1、已知:a=2,b=3,x=3.9,y=2.3(a,b整型,x,y浮点),计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。试编程上机验证。(要求文件名:2_1.c)提示编程要点: (1)先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,本例用r存放结果;(2)程序先给几个变量赋初值,然后将表达式赋值给变量r;(3)最后打印变量r的值就是表达式的值。参考程序: #include int a=2,b=3;float x=3.9,y=2.3; float r; r=(float)(a+b)/2+(int)x%(int)y; printf(“%fn”,r);return 0;} 参考结果: 3.500000 思考:为什么是这个结果? 2、分析下面程序结果,并上机验证。(要求文件名:2_2.c)#include int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“i=%d, j=%d, m=%d, n=%dn”,i,j,m,n); return 0;} 参考结果: i=9, j=11, m=9, n=10 3、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。从键盘如何输入?(要求文件名:2_3.c)#include 4、编程序,用getchar函数读入两个字符给c1、c2,然后分别用 putchar函数和 printf函数输出这两个字符。(要求文件名:2_4.c)参考程序: #include 三、实验报告要求 将题目:1和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验三 选择结构程序设计 一、实验目的 1.2.3.4.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 学会正确使用逻辑运算符和逻辑表达式; 熟练掌握if语句和switch语句; 熟练掌握switch语句中break语句的作用。 二、实验内容和源程序清单、测试数据、结果。 (1)掌握各种格式转换符的正确使用方法,输出结果。(要求文件名:3_1.c)#include (2)1.从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输出“Yes”,否则输出“No”。已知符合下列条件之一者是闰年:(1)能被4整除,但不能被100整除;(2)能被400整除。(要求文件名:3_2.c)参考程序: #include int year, flag;printf(“Enter year:”);scanf(“%d”, &year);if(year%4==0&&year%100!=0 || year%400==0) { flag = 1; } else { flag = 0; } if(flag) { printf(“Yesn”); } else { printf(“Non”);} return 0;}(3)编程序,并给出程序的运行结果,注意思考case中break的用法以及为什么是这样的结果?(要求文件名:3_3.c)参考程序: #include int x=2,y=1,a=1,b=2;switch(x){ case 2: switch(y) { case 1:a++; case 2:b++;break; } case 3:a++;b++;break;} printf(“%d %dn”,a,b);return 0;}(4)编程序:输入4个整数,要求按由小到大的顺序输出。(要求文件名:3_4.c)参考程序: #include int t,a,b,c,d;scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;} if(c>d){t=c;c=d;d=t;} printf(“%d,%d,%d,%dn”,a,b,c,d);return 0;} 三、实验报告要求 将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验四 循环结构程序设计 一、实验目的 1.2.3.4.5.熟练使用while、for语句实现循环程序设计 理解循环条件和循环体,以及while、for语句的相同及不同之处 掌握嵌套循环程序设计 熟练掌握下拉菜单Debug的程序调试方法 掌握break和continue的用法 二、实验内容和源程序清单、测试数据、结果。 (1)输入两个正整数m和n,求它们的最大公约数和最小公倍数。(要求文件名:4_1.c)参考程序: #include m=x;else m=y;for(i=1;i<=m;i++){ if((x%i==0)&&(y%i==0)) max=i;} printf(“%dn”,max);printf(“%dn”,x*y/max);return 0;}(2)从键盘输入一个 int 类型的正整数,输出它的所有因子。如输入6,输出1,2,3;输入20,输出1,2,4,5,10。(要求文件名:4_2.c)参考程序: #include printf(“%dn”,i);} return 0;}(3)输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。(要求文件名:4_3.c)参考程序: #include if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else if(c>='0'&&c<='9') digit++; else if(c==' ') space++; else other++;} printf(“%d,%d,%d,%dn”,letter,digit,space,other);return 0;}(4)编程计算111111的值。(要求文件名:4_4.c)23499100参考程序: #include int sign = 1;double sum = 1;double deno = 2;double term = 1;while(deno<=100){ sign =(-1)*sign; term = sign*(1/deno); sum = sum+term; deno++;} printf(“%lfn”,sum);return 0;} 三、实验报告要求 将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验五 数组 一、实验目的 1.掌握一维、二维数组的定义、引用、应用 2.掌握字符数组的定义、引用、应用 3.掌握字符串处理函数 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的结果,思考为什么?(要求文件名:5_1.c)#include char a[]=“Chinaren”,b[]=“Tiananmen”;char *p1,*p2; int k=0;p1=a; p2=b;for(k=0;k<10;k++) if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k));printf(“n”);return 0;}(2)有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。(要求文件名:5_2.c)参考程序: #define M 3 #define N 4 #include int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}}; max=a[0][0]; for(i=0;i for(j=0;j if(a[i][j]>max) { max= a[i][j]; r=i; c=j; } printf(“max=%d , row =%d , colum=%d n”,max , r, c); return 0;}(3)编程序用于读入10个字符串,然后找出最大的字符串并打印。(要求文件名:5_3.c)参考程序: #include char str[10][80],maxstring[80]; int i;printf(“Enter ten strings:n”);for(i=0;i<10;i++) { scanf(“%s”, str[i]);} strcpy(maxstring, str[0]); for(i=1;i<10;i++) { if(strcmp(str[i],maxstring)>0) { strcpy(maxstring,str[i]); } } printf(“The max string is:%sn”,maxstring);}(4)给出下面程序的运行结果,思考为什么?(要求文件名:5_4.c)#include int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};int i,j,s=0;for(i=0;i<4;i++){ for(j=0;j<4;j++) { if(a[i][j]<0)continue; if(a[i][j]==0)break; s+=a[i][j]; } } printf(“%dn”,s);return 0;}(5)测试二维数组的各个地址值,结果是什么,思考原因。(要求文件名:5_5.c)#include int a[M][N];printf(“%xn”,a);printf(“%xn”,a[0]);for(int i=0;i printf(“%x,”,&a[i][j]); return 0;} 三、实验报告要求 将题目:2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验六 函数 一、实验目的 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的结果,思考为什么?(要求文件名:6_1.c)#include #include printf(“%d is prime!”,number);else printf(“%d is not!”,number);return 0;} int prime(int number)/*此函数用于判别素数*/ { int flag=1,n;for(n=2;n if(number%n==0) flag=0;return(flag);}(3)求两个整数的最大公约数和最小公倍数。写一个函数求最大公约数。(要求文件名:6_3.c)参考程序: #include max=i;} return(max);}(4)写一函数,输入一个十六进制数,输出相应的十进制数。(要求文件名:6_4.c)参考程序: #include if(shu[i]>=48&&shu[i]<=57) sum=sum+(shu[i]-48)*pow(16,k-i); else if(shu[i]>=65&&shu[i]<=70) sum=sum+(shu[i]-55)*pow(16,k-i); else if(shu[i]>=97&&shu[i]<=102) sum=sum+(shu[i]-87)*pow(16,k-i); else { printf(“error!n”); break; } return sum;} int main(){ char str[100];long s;gets(str);s=change(str);if(!s) printf(“The number is not oxn”);else printf(“change:%ldn”,s);return 0;} 三、实验报告要求 将题目:3和4的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验七 指针 一、实验目的 1.掌握指针变量的定义与引用。 2.熟练使用函数指针、数组指针、字符串指针编写应用程序。 二、实验内容和源程序清单、测试数据、结果。 (1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。参考程序:(输入三个整数,按由小到大的顺序输出)(要求文件名:7_0.c)#include #include int x,a[100],*p,i;p=a;scanf(“%d”,&x);for(i=0;i scanf(“%d”,p++);p=a;printf(“n”);maopao(p,x);printf(“the sorted numbers:n”);p=a;for(i=0;i printf(“%dt”,*p); return 0;} void maopao(int *p,int x){ int i,j,temp;for(i=0;i for(j=0;j if(*(p+j)>*(p+j+1)) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } }(3)利用函数和指针将给定字母字符串的第一个字母变成大写字母,其它字母变成小写字母。在main函数中接收字符串的输入,改变后的字符串的输出也在main函数中实现。(要求文件名:7_3.c)参考程序: #include *s-=32;s++; } for(i=0;i *s+=32; 三、实验报告要求 将题目2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验八 结构体和共用体 一、实验目的 1.掌握结构体类型和结构体变量的定义。 2.掌握结构类型变量的定义和使用。 3.掌握链表的概念,初步学会对链表进行操作。 二、实验内容和源程序清单、测试数据、结果。 (1)给出下面程序的运行结果,思考为什么?(要求文件名:8_1.c)#include char num[10]; float score[3];}; int main(){ struct STU s[3]={{“1122301”,90,95,85}, {“1122302”,80,90,75}, {“1122303”,98,92,85}}, *p=s; int i; float sum = 0; for(i=0;i<3;i++){ sum = sum + p->score[i]; } printf(“%6.2fn”,sum); return 0;}(2)有10个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入十个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。(要求文件名:8_2.c)#include char num[6]; char name[8]; float score[3]; float avr;} stu[N]; int main(){ int i,j,maxi; float sum,max,average; for(i=0;i { printf(“input scores of student %d:n”,i+1); printf(“NO.:”); scanf(“%s”,stu[i].num); printf(“name:”); scanf(“%s”,stu[i].name); for(j=0;j<3;j++) { printf(“score %d:”,j+1); scanf(“%f”,&stu[i].score[j]); } } average=0; max=0; maxi=0; for(i=0;i { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if(sum>max) { max=sum; maxi=i; } } average/=N; printf(“ NO.name score1 score2 score3 averagen”); for(i=0;i for(j=0;j<3;j++) printf(“%9.2f”,stu[i].score[j]); printf(“ %8.2fn”,stu[i].avr); } printf(“average=%5.2fn”,average); printf(“The highest score is : student %s,%sn”,stu[maxi].num,stu[maxi].name);printf(“his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.n”,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);return 0;}(3)建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(要求文件名:8_3.c) #include char num[6];char name[8];char sex[2];int age;struct student *next;} stu[10]; int main(){ struct student *p,*pt,*head;int i,length,iage,flag=1;int find=0; //找到待删除元素 find=1,否则find=0 while(flag==1){ printf(“input length of list(<10):”); scanf(“%d”,&length); if(length<10) flag=0;} //建立链表 for(i=0;i p=(struct student *)malloc(LEN); if(i==0) head=pt=p; else pt->next=p; pt=p; printf(“NO.:”); scanf(“%s”,p->num); printf(“name:”); scanf(“%s”,p->name); printf(“sex:”); scanf(“%s”,p->sex); printf(“age:”); scanf(“%d”,&p->age); } p->next=NULL; p=head;printf(“n NO.name sex agen”); //显示 while(p!=NULL){ printf(“%4s%8s%6s%6dn”,p->num,p->name,p->sex,p->age); p=p->next;} // 删除 printf(“input age:”); //输入待删年龄 scanf(“%d”,&iage);pt=head;p=pt; if(pt->age==iage) //链头是待删元素 { p=pt->next; head=pt=p; find=1; } else //链头不是待删元素 pt=pt->next; while(pt!=NULL){ if(pt->age==iage) { p->next=pt->next; find=1; } else // 中间结点不是待删元素 p=pt; pt=pt->next; } if(!find) printf(“ not found %d.”,iage); p=head; printf(“n NO.name sex agen”);//显示结果 while(p!=NULL){ printf(“%4s%8s”,p->num,p->name); printf(“%6s%6dn”,p->sex,p->age); p=p->next; } return 0;} 三、实验报告要求 将题目3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验九 文件操作 一、实验目的 1.掌握文件和文件指针的概念以及文件的定义方法。 2.了解文件打开和关闭的概念和方法。 3.掌握有关文件的函数。 二、实验内容和源程序清单、测试数据、结果。 (1)对data.dat文件写入100条记录。(要求文件名:8_1.c) #include int i; float x; fp=fopen(“c:data.dat”,“w”); for(i=1;i<=100;i++) { scanf(“%f”,&x); fprintf(fp,“%fn”,x); } fclose(fp); return 0;} (2)设有一文件cj.dat存放了50个人的成绩(英语、计算机、数学),存放格式为:每人一行,成绩间由逗号分隔。计算三门课平均成绩,统计个人平均成绩大于或等于90分的学生人数。(要求文件名:8_2.c) #include int num=0; float x , y , z , s1 , s2 , s3; fp=fopen(“c:cj.dat”,“r”); while(!feof(fp)) { fscanf(fp,“%f,%f,%f”,&x,&y,&z); s1=s1+x; s2=s2+y; s3=s3+z; if((x+y+z)/3>=90) num=num+1; } printf(“分数高于90的人数为:%dn”,num); fclose(fp); return 0;} (3)统计上题cj.dat文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud”中。(要求文件名:8_3.c) #include “stdio.h” int main(){ FILE *fp1,*fp2; float x,y,z; fp1=fopen(“c:cj.dat”,“r”); fp2=fopen(“c:stud”,“w”); } while(!feof(fp1)){ fscanf(fp1,“%f,%f,%f”,&x,&y,&z); printf(“%f,%f,%f,%fn”,x,y,z,x+y+z); fprintf(fp2,“%f,%f,%f,%fn”,x,y,z,x+y+z);} fclose(fp1);fclose(fp2);return 0; 三、实验报告要求 将题目1、2和3的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 篇一:c语言程序设计实验指导书课后答案 实验一 (1)编程求37+29的值,实习vc环境。#include #include #include 十进制数168对应的八进制数是250 十进制数168对应的十六进制数是a8 实验二 2.1顺序结构 2.1.1已知a=1.5,b=5.3,c=2.9,计算s=??2-4ac的结果并输出。#include 2.2.1输入两个整数,求出其中的较小值输出。#include #include 1.掌握运行c语言程序的全过程。 2.熟悉编译环境visual c++或者dev c++或者turbo c2.0//3.0。3.初步熟悉c语言程序的语法规定。4.了解简单函数的使用方法。实验内容: 1.编程且上机运行:求3个整数的和。 2.编程且上机运行:求2个数的和、差、积和商。3.编程且上机运行:输入3个数,求最大值。 4.编程且上机运行:输入圆的半径,求圆的面积和周长。5.在屏幕上输出:“hello world!” 6. 输入并编辑本章中给出的c程序例子,在自己用的环境中形成一个c语言源程序文件;对这个源程序进行加工,得到对应的可执行程序,看一看它的效果。实验结果: 1.#include 实验目的:理解c语言的类型系统。 实验内容:写程序测试数据 -2在类型char,int,unsigned int,long int,unsigned long int中存储情况。实验过程: 实验结果:参见各种类型的存储实现描述。#include 实验目的:了解混合类型计算中类型的转换规则。 实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。注意unsigned int和 int数据运算时类型转换的方向。实验过程: /* * 类型转换问题 * 试问下面两个表达式等价吗? */ #include 实验内容:写程序测试数据溢出,注意分别在16环境和32环境中测试。实验过程: 实验结果:参见【例3.3】。实验三(第3章实验四) 实验目的:char的符号问题。 实验内容:写程序测试你所用的c语言编译器char符号问题的处理方案。实验过程: /* * 这个程序验证编译器对 char 的解决方案,是有符号,还是无符号 */ #include 实验目的:自增和自减运算符。 实验内容:写程序测试++、--运算符。实验过程: main(){ int i=3;printf(i=%dn,i++);printf(i=%dn,i);printf(i=%dn,++i);printf(i=%dn,i);} 实验结果: i=3 i=4 i=5 i=5 实验三(第3章实验六) 实验目的:理解输入输出函数。1.掌握输入输出函数的使用方法。2.掌握格式字符的使用方法。3.掌握不同数制间使用格式字符转换数据的方法。 实验内容:用getchar、putchar、printf、scanf函数实现各种数据的输入和输出。实验过程: 实验结果:例如://用getchar、putchar、printf、scanf函数实现各种数据的输入和输出。#include 学号 姓名 成绩 一、实验目的 1.熟悉c语言visual c++6.0调试环境。2.掌握c程序的编辑、调试及运行。 二、实验内容 项目1.调试并运行下面程序,并写出运行结果: #include 项目2.调试并运行下面程序,并写出运行结果: #include 项目3.调试并运行下面程序,并写出运行结果: #include 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。程序代码 运行结果:常熟理工学院 电气与自动化工程学院 《c语言程序设计》实验指导书 实验二 数据及其运算 班级 学号 姓名 成绩 一、实验目的 1.掌握c数据类型的概念、熟悉整型、字符型和实型基本类型的常量的用法;学会三种基本类型变量的定义、赋值和使用方法。2.掌握算术表达式、关系表达式及逻辑表达式的特点及用法。3.熟悉运算符的优先级和结合性的概念。4.学习简单程序的编写方法。 二、实验内容 项目1.编辑运行下面程序,并分析运行结果。#include 项目2.编辑运行下面程序,并分析运行结果。#include (3)对上面程序进行修改,当输入一个非法的边长(负数或零),会给出提示而不计算矩形的面积。输入-24和5,运行结果: 项目3.先阅读程序,并写出结果,再运行程序并分析结果。#include i=__10___;j=__10___;m=___9__;n=__10___;p=__9___;q=__-10___;x=__20___;y=__0___ 运行结果: 项目4.(选做)篇四:2014《c语言实验指导书》 《c语言》实验指导书 编 (全校理工类本科用)2014年2月 目 录 实验一 简单c语言程序设计.................................1 实验二 顺序结构程序设计...................................3 实验三 实验四 实验五 实验六 实验七 实验八 附录1c选择结构程序设计...................................5 循环结构程序设计...................................7 数组程序设计......................................10 函数程序设计......................................13 指针程序设计......................................16 结构体程序设计....................................17 语言上机步骤....................................18实验一 简单c语言程序设计 实验类型: 验证性 时 间:2014 年月日 实验课时: 4 指导教师:课 次:第节 教学周次:第周 实验分室: 实验台号: 实 验 员: 一、实验目的 1.掌握所用的c语言环境的基本操作方法。2.掌握编辑、编译、连接和运行c程序。3.掌握c程序的数据类型、运算符,表达式。 二、实验内容和要求 1.打开c语言环境,编辑如下程序,写出运行结果。#include 4.已知三角形的三边长为3,4,5,求三角形周长 5.完成习题集中习题二内容实验二 顺序结构程序设计 实验类型: 验证性 时 间:2014 年月日 实验课时: 2指导教师:课 次: 第 节 教学周次: 第 周 实验分室: 实验台号: 实 验 员: 一、实验目的 1.掌握基本输入输出函数、库函数的使用。2.能够编程实现简单的结构化程序。 二、实验内容和要求 1.执行程序,写出运行结果。#include #include 第四篇:C高级语言程序设计实验内容
第五篇:C实验指导书答案