南昌大学实验报告高级语言程序设计2.doc
实 验 报 告实验课程: 高级语言程序设计 学生姓名: 学 号: 专业班级: 2013年10月12日目 录实验一 C的IDE基本操作与简单程序1实验二数据类型、运算符、表达式与输入输出3实验三选择结构与循环结构5实验四数组与字符串7实验五C函数9实验六C函数(2)10实验七函数的嵌套调用与递归调用12实验八预处理13实验九指针14实验十指针(2)15实验十一结构体与链表16实验十二文件17 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-02-24 实验成绩: 实验一 C的IDE基本操作与简单程序一实验目的1 熟悉C语言运行环境。2 掌握语言程序的书写格式和语言程序的结构。3 掌握C语言上机步骤,了解运行C程序的方法。二实验基本原理IDE环境中进行C程序开发的基本过程三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤1 进入所选择的IDE环境。2 熟悉IDE的界面和有关菜单命令的使用方法。3 编写一个程序,将华氏温度f转换为摄氏温度c并输出.转换公式为:C = 32 )4 调试以下源程序使之能正确运行并指出错误/* 源程序1*/#include <stdio.h> /* 预处理命令 */ #include <stdlib.h>int main() double x, y, average; printf("input 2 float numbers:"); scanf("%lf %lf", x, y); average=(x+y)/2; printf("the average of x and y is: %.2fn", average); system("pause"); return 0; 5 已知1970年1月1日是星期四,设计一个算法求出今天是星期几。要求画出算法流程图。五 实验数据及处理结果(写出源程序及运行结果的截图)六思考讨论题或体会或对改进实验的建议答:对实验原理有更深的理解通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-02-24 实验成绩: 实验二数据类型、运算符、表达式与输入输出一实验目的4 熟悉C语言运行环境。5 掌握语言程序的书写格式和语言程序的结构。6 掌握C语言上机步骤,了解运行C程序的方法。二实验基本原理IDE环境中进行C程序开发的基本过程三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤6 调试运行下列程序,观察输出的效果 main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%cb%ctc%ctabcn”,c1,c2,c3); printf(“tb%c %c”,c4,c5); 7 分析以下程序的运行结果,并与实际输出的效果进行比较。include <stdio.h>main()int a, b, c, d;a = 10;b = -8;c = +a;d = b+;printf(“%d, %d, %d, %dn”, a, b, c, d);8 编写程序,计算以下数学表达式的值. (a, b, c 为浮点数,要求从键盘输入)(x为浮点数,要求从键盘输入)9 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序实现相关计算。五 实验数据及处理结果(写出源程序及运行结果的截图)6.调试结果如下:7.分析结果:输出 11,-7,11,-8运行结果如下:8. 程序1:运行截图:程序2:程序3:运行结果:9.运行结果:六思考讨论题或体会或对改进实验的建议总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。答:对该理论在实践中的应用有深刻的理解通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 1实验类型: 验证 综合 设计 创新 实验日期: 06-03-10 实验成绩: 实验三选择结构与循环结构一实验目的1 熟练掌握if 、ifelse语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2 熟练掌握while语句、dowhile语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3 掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。二实验基本原理结构化程序设计的三种基本控制结构三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤1 编程实现:输入一个整数,将其数值按照小于10,1099,100999,1000以上四个类别分类并显示。(使用if()else结构和switch语句分别实现)。2 编程在屏幕上输出以下图形:* 模拟菜单 * * 1. 菜单项1 * 2. 菜单项2 * 3. 菜单项3 * 4. 菜单项4 * 5. 菜单项5 * 6. 菜单项6 *从键盘读入(16)之间的一个整数,并显示对应的菜单项。如:从键盘输入2,则在屏幕上输出”2.菜单项2”3 编写程序:根据公式 输出 的值。4 编写程序从键盘读入一行英语句子(以EOF为结束标识),统计其中英语单词的数量。5 编写一个四则运算练习程序,要求每次输出一个100以内的整数的四则运算题,如“2918” 形式,要求“”、“”、“”、“/”运算随机出现。从键盘输入答案,程序做出正确与否的判断,然后给出下一题,要求出10道题,每做对一题加10分,最后给出总分。说明:可以利用rand()函数生成运算数,语句如下:srand(int)time(NULL);/* 设定随机数种子*/rand()%100;/*产生0-99的随机数。*/五 实验数据及处理结果(写出源程序及运行结果的截图)1.2.运行截图:3.4.5.六思考讨论题或体会或对改进实验的建议1 试分析使用ifelse语句实现选择控制和使用break语句实现选择控制的不同之处。答:使用ifelse语句实现选择控制,必须判定多个条件以便决定执行什么操作。使用break语句实现选择控制,只在选择结构(switch)和循环结构(while、for)中有意义;break的意思是“跳出”,作用是用于跳出当前选择结构或者循环结构,不在执行结构中后面的动作。2.试分析比较三种循环控制结构的异同之处。答:同:While, do-While, For循环语句,虽然格式不同,但它们有着共同的特点,都实用于循环结构的程序设计。在程序设计的过程中,都具有如下三条内容: (1) 循环体的设计。(2) 循环条件的设计。(3) 循环入口的初始化工作。循环体语句的正确执行,依赖于循环的条件,循环的条件依赖循环入口时的初始化工作,一环紧扣一环。循环体中按排哪些语句,要从分析具体问题入手,前后呼应,合乎逻辑。并且能确保循环能够终止。而且结论正确。异:While, do-While语句的使用,它的循环条件的改变,要靠程序员在循环体中去有意安排某些语句。而For语句却不必。使用For语句时,若在循环体中想去改变循环控制变量,以期改变循环条件。无异于画蛇添足。 While 循环,do-While循环适用于未知循环的次数的场合,而For循环适用于已知循环次数的场合。使用哪一种循环又依具体的情况而定。凡是能用For循环的场合,都能用While, do-While循环实现,反之则未必。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-03-24 实验成绩: 实验四数组与字符串一实验目的7 1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 8 2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 9 3.掌握与数组相关的算法,包括排序算法和查找算法等。二实验基本原理数组数据类型的特点三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤1.编程输出以下图形2摇动排序是冒泡排序方法的一个改进算法。在冒泡排序过程中,若每次扫描时都记录第一个发生数据交换的位置,显然这个位置以前的元素是已经排好序的,在下一次扫描时从这个位置开始即可;另外,若再把扫描方向改成一次从前向后,一次从后向前,还可以提高排序速度。编写一个实现数组摇动排序的程序。3编写程序,统计给定二维整数组中有多少个互不相同的数,以及每个数的出现频率。最后按出现频率的递增顺序输出。4 编写程序,对给定的字符串判断它是否回文字。回文字是指正读和反读都相同的单词。例如就是回文字。如果不是回文,则将字符串逆置。如字符串“ab56d”,逆置后变为“d65ba”。五实验数据及处理结果(写出源程序及运行结果的截图)1. 2.3六思考讨论题或体会或对改进实验的建议答:激发了学习的积极性通过该课程设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-07 实验成绩: 实验五C函数一实验目的10 1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法。 11 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。 3.在编程过程中加深理解函数调用的程序设计思想。二实验基本原理三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验项目1. 编写一个程序模拟发牌过程。一副扑克牌有4种花色(黑桃、红心、方块和草花)52张牌,将52张牌平均发给4个人,最后输出4个人所得到的牌的牌型,按黑桃、红心、方块和草花的次序排列花色,每种花色中的牌按牌点大小排列(牌点大小次序为A K Q J T 9 8 7 6 5 4 3 2, 其中T代表10)。如某人的牌型如下: AKQ985 KJT8 K8 A五 实验数据及处理结果 程序运行截图:六思考讨论题或体会或对改进实验的建议1小结函数的定义及调用方法。答:1.C语言提供了丰富的库函数,包括常用数学函数、对字符和字符串处理函数、输入输出处理函数等。在调用库函数时要注意以下几点:(1)调用C语言标准库函数时必须在源程序中用include命令,include命令的格式是:#include头文件名include命令必须以#号开头,系统提供的头文件名都以.h作为后缀,头文件名用一对双引号或一对尖括号括起来。(2)标准库函数的调用形式:函数名(参数表)2.在C语言中库函数的调用可以以两种形式出现:出现在表达式中;作为独立的语句完成某种操作。2小结函数中形参和实参的结合规则。答:函数的形参和实参具有以下特点:1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-07 实验成绩: 实验六C函数(2)一实验目的12 1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法。 13 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。 3.在编程过程中加深理解函数调用的程序设计思想。二实验基本原理三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验项目1. 角谷定理。 输入一个自然数,若为偶数,则把它除以 2; 若为奇数,则把它乘以3 加 1。经过如此有限次运算后,总可以得到自然数 1。编写函数求经过多少次运算可得到自然数 1。例如:10/2=5, 5*3+1=16, 16/2=8, 8/2=4, 4/2=2, 2/2=1, 整数10经过6次运输得到自然数1。2. 某一数列 a 有 N 个非零数字(10N100),请编制一函数 jsVal(),其功能是:依次从数列 a 中取出一个数,如果该数连续大于其后的 3 个数且是奇数,则统计出满足此条件的数的个数 cnt,并把这 cnt 个数按从小到大的顺序存入另一个数列 b 中,并在屏幕上输出该数列。要求:(1)数组 cnt、N、a、b 定义为全局变量。(2)输入和输出在 main()函数中完成。输入要求:包括2 行,第一行是数字N,表示数列的长度。第二行是连续N 个非零数字。输出要求:包括 2 行,第一行是表示有 cnt 个符合条件的数字,第二行是对这 cnt 个数字排序后的数列 b 的结果。输入样例:156012 5099 9009 7025 8085 7055 5334 7607 8145 6012 5099 9011 7025 8088 7055输出样例:38085 9009 9011五 实验数据及处理结果程序运行截图:2.六思考讨论题或体会或对改进实验的建议1小结函数的定义及调用方法。2小结函数中形参和实参的结合规则。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-07 实验成绩: 实验七函数的嵌套调用与递归调用一实验目的1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法。 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。 3.在编程过程中加深理解函数调用的程序设计思想。二实验基本原理三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验项目1 编写一个函数 fun,求 pm!/n!(m-n)!的值,其中 m 与 n 为两个正整数,且要求 m>n。2 编写一个递归函数求 1 + 2 + 3 + + n 的值。3 编写一个递归函数求两个整数的最大公约数。五 实验数据及处理结果1.2.3.六思考讨论题或体会或对改进实验的建议1小结函数的定义及调用方法。2小结函数中形参和实参的结合规则。七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-07 实验成绩: 实验八预处理一实验目的熟悉和掌握C语言的预处理命令 3.在编程过程中加深理解函数调用的程序设计思想。二实验基本原理三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验项目4 利用文件包含命令来编写:求两个数的最大数、最小数和平均数的程序。要求:max(), min()和average()的函数原型定义在一个.h文件中,函数定义在一个.c文件中,然后用 #include“文件名”命令将几个文件整合在main()函数所在的文件中。5 三角形的面积为:其中 s = a,b,c 为三角形的三边。定义两个带参数的宏,一个用来求 s,另一个用来求 area。写程序用带参数的宏求三角形面积(注意:在三角形中,两边之和大于第三边)。五 实验数据及处理结果运行截图:六思考讨论题或体会或对改进实验的建议1带参数的宏与函数的区别。答:1函数调用时,先进性实参表达式的值,然后带入形参,而使用宏只是进行简单的字符替换.2函数调用是在程序运行时处理的 ,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值得传递处理,也没有 "返回值"的概念.3对函数中的实参与形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可.宏定义时,字符串可以是任何类型的数据.4调用函数只可得到一个返回值,而用宏可以设法得到几个结果.5使用宏次数多时,宏展开后源程序变长,因为每展开一次都使程序增长,而函数调用不使程序变长.6宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元/保留现场/值传递/返回)一般来说,用宏来代表间短的表达式比较适合七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-21 实验成绩: 实验九指针一实验目的1 掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等。 2 掌握数组与指针的关系并能够利用指针解决数组的相关问题。 3 掌握字符串与指针的关系并能够利用指针处理字符串的问题。 4 掌握指针与函数的关系并能够利用指针处理函数问题。 5 了解指向指针的指针的概念及其使用方法。6.能够使用指针进行程序设计。二实验基本原理指针数据类型三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤1 编写以下函数并验证:void sort(int *array, int n),实现对一个长度为n的整数数组的排序,void insert(int *array, int x), 将整数x插入排序后数组中,数组仍保持有序。int search(int *array, int x),在数组中查找值为x,的元素,查找成功则返回元素的下标,失败则返回-1。void copy(int *source, int *target, int start, int end), 实现将整数数组source中start位置到end位置的元素复制到目标数组。五实验数据及处理结果(写出源程序及运行结果的截图)1 .1.2编写程序void insert(int *array, int x), 将整数x插入排序后数组中,数组仍保持有序。1.3编写程序int search(int *array, int x),在数组中查找值为x,的元素,查找成功则返回元素的下标,失败则返回-1。1.4编写程序void copy(int *source, int *target, int start, int end), 实现将整数数组source中start位置到end位置的元素复制到目标数组。六思考讨论题或体会或对改进实验的建议体会指针类型的特点七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-21 实验成绩: 实验十指针(2)一实验目的6 掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等。 7 掌握数组与指针的关系并能够利用指针解决数组的相关问题。 8 掌握字符串与指针的关系并能够利用指针处理字符串的问题。 9 掌握指针与函数的关系并能够利用指针处理函数问题。 10 了解指向指针的指针的概念及其使用方法。6.能够使用指针进行程序设计。二实验基本原理指针数据类型三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤1编写函数,使用各种不同的方法输出一维和二维数组的元素,为每种方式编写单独的函数,并编写程序验证。2写一个函数。求一个字符串的全部子串,并将这些子串保存并输出。3编写三个函数,它们分别将以秒为单位的总时间转换成小时、分钟和秒。然后在一个函数中通过指向函数指针参数来调用这些函数。五实验数据及处理结果(写出源程序及运行结果的截图)1.2.3.六思考讨论题或体会或对改进实验的建议体会指针类型的特点七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-21 实验成绩: 实验十一结构体与链表一实验目的初步认识结构体和链表。6.能够使用指针进行程序设计。二实验基本原理指针数据类型三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤仔细阅读源文件chainedlist.c,编写一个函数 void addToEnd(chainedList,head, int data); 实现将一个结点置于链表的表尾的操作。五实验数据及处理结果(写出源程序及运行结果的截图)六思考讨论题或体会或对改进实验的建议体会指针类型的特点七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:06-04-21 实验成绩: 实验十二文件一实验目的1 掌握文件的基本概念,包括:文件与文件输入/输出的基本概念、C语言中文件的组织形式、文件的一般操作步骤、文件的基本操作及其特点。2 掌握常用文件操作函数的使用,如文件的打开/关闭、文件的读/写等操作。3 掌握对文件的简单操作,应用文件系统进行程序设计。二实验基本原理C语言文件操作三主要仪器设备及耗材PC微型计算机系统DOS操作系统或 Windows 操作系统Turbo C 集成开发环境、Visual C+ 开发环境、或其它C语言开发环境。四实验步骤建立一个磁盘文件word.txt,在文件中保存3个英语单词。然后将些文件内容复制到文件copy.txt中。五实验数据及处理结果(写出源程序及运行结果的截图)程序运行截图:六思考讨论题或体会或对改进实验的建议体会指针类型的特点七参考资料C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社