高级语言程序设计实验指导书.doc

上传人:仙人指路1688 文档编号:2386254 上传时间:2023-02-17 格式:DOC 页数:34 大小:206.50KB
返回 下载 相关 举报
高级语言程序设计实验指导书.doc_第1页
第1页 / 共34页
高级语言程序设计实验指导书.doc_第2页
第2页 / 共34页
高级语言程序设计实验指导书.doc_第3页
第3页 / 共34页
高级语言程序设计实验指导书.doc_第4页
第4页 / 共34页
高级语言程序设计实验指导书.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《高级语言程序设计实验指导书.doc》由会员分享,可在线阅读,更多相关《高级语言程序设计实验指导书.doc(34页珍藏版)》请在三一办公上搜索。

1、实验1 C语言的编程环境一实验目的1初步了解C程序的编译、连接和运行的过程。2掌握和理解C程序的结构。二实验内容1使用TC2运行一个简单的C程序三实验环境PC微机;DOS操作系统或 Windows 操作系统;Turbo C 程序集成环境。四实验步骤1启动Turbo C如果用户计算机系统已经安装了Turbo C编译系统,则在DOS命令状态下键入命令tc。进入Turbo C集成环境后,首先在屏幕上显示Turbo C主菜单窗口。 在该窗口,有8个菜单条目。每一个菜单的意义如下:File 处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS 。Ed

2、it 建立、编辑源文件。Run 控制运行程序。如果程序已经编译连接好,且Debug/Source Debugging以及Option/Compiler/Code generation/OBJ Debug Information开关置为On,则可以用此菜单初始化调试阶段。Compile 编译并生成目标程序与可执行文件。Project 允许说明程序中包含哪些文件的管理条目。Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录Include Output及Library文件目录,保存编译任选项和从配置文件加载任选。Debug 检查、改变变量的值,

3、查找函数,程序运行时查看调用栈。选择程序编译时是否在执行行代码中插入调试信息。Break/Watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。而选择Edit项目后,只是进入编辑器。为了从主菜单中选择所需要的功能,可以用以下两种方式之一:(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(与)选择需要的菜单,然后按回车(Enter)键。(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。例如,按Alt+F表示选择文件子菜单(File)

4、。当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(与)来移动该高亮度线,从而选择所需要的功能。在菜单调用时,按Esc键后将直接返回到活动窗口。2输入程序 输入以下程序main()printf(“How are you!”);3运行程序按Ctrl+F9运行程序,如果没有报错,可以按Alt+F5查看运行结果,再按空格键回到编辑窗口。4保存文件按F2键,弹出一个对话框,在对话框中输入文件名,如:exam1c。5退出TC程序按Alt+X键,弹出对话框,提示是否真的要退出TC,如果输入Y就会退出TC。6打开已经存在的文件(1)首选启动TC。(2)按F3,弹出对话框。(3)在该对话框

5、中,输入文件名即可。输入程序main()printf(“How are you!”);运行结果re you.n);五思考题总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。实验2 数据类型、运算符和表达式一实验目的1了解语言中数据类型的意义;2掌握不同数据类型之间的赋值的规律;3学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是是+和运算符的使用。4进一步熟悉C程序的编辑环境。二实验内容1用printf函数来输入表达式运行结果2观察实验步骤中表达式的结果三实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1当x=5,y=6,

6、z=7时xxx!=yx=z-2x=x-2x=zx=z以上表达式的值输入程序main()int x,y,z;x=5;y=6;z=7;printf(“%dn%dn%dn”,xx,x!=y);x=z-2;printf(“%dn”,x);x=x-2;printf(“%dn”,x);printf(“%dn%dn”,x=z,x=z);运行结果2当x=0,y=-1,z=1时x&yx|yy&zy|zx&yx|y以上表达式的值输入程序main()int x,y,z;x=0;y=1;z=1;printf(“%dn%dn%dn%dn%dn%dn”, x&y,x|y,y&z,y|z,x&y,x|y);运行结果五思考题

7、1“=”和“=”有什么区别?答:“=”是赋值,而“=”是等于。2“&”和“&”、“|”和“|”有什么区别?答:“&”是位运算符,含义为“按位与”。“&”表示为“逻辑与” “|”是位运算符,含义为“按位或”,“|”表示为“逻辑或”。实验3 控制语句一实验目的1熟练掌握if 、ifelse、ifelseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2熟练掌握while语句、do while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3掌握简单、常用的算

8、法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 二实验内容1 选择结构程序设计;2 if语句的使用;3 使用switch语句实现多分支选择结构;4 三种循环语句的应用;5 循环结构的嵌套;6 break和continue语句的使用。三实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1编程实现:输入一个整数,将其数值按照小于10,1099,100999,1000以上四个类别分类并显示。 要求: (1)将变量定义为整型。(2)输入整数前,利用puts()/printf()给出提示信息。(3)输出结果时

9、要有必要的说明,例如:输入358时,显示358 is 100 to 999。(4)该程序利用if语句实现。运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。2编写程序:根据公式 ,输出 的值。 要求: (1)变量为单精度类型,n为整型; (2)计算当n的取值分别为20,50 ,100,200时的值,说明什么问题? (3)修改程序,不给出n值,而改为求值,直到最后一项的数值小于10-4 为止。 (4)对修改后的程序,输出值以及总的项数n。输出格式为:=值;n=值。输入程序# include# includeVoid maij()int s;float n,t,pi;t=1;p

10、i=0;n=1.0;s=1;while(fabs(t)1e-6) pi=pi+t; N=n+2;s=-st=s/n Pi=pi*4; Printf(“pi=%10.6fn”,pi); 运行结果3从键盘输入一个01000之间的任意整数,输出该整数的所有因子(例如:输入12,其因子为1,2,3,4,6,12)。 要求: (1)采用while循环语句实现。 (2)输出格式为:Input:12 Output:1,2,3,4,6,12 4编程实现:由用户从键盘输入一串字符(以回车键结束),统计其中数字、大、小写字母、空格、其它字符的个数。 要求: (1)通过键盘输入字符。 (2)给出相应的输入/输出信息

11、提示。并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果。输入程序# include Void main() char string81 int i , num=0,word=0; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c=)word=0;else if(word=0) Word=1;Num+ Prinf(“there are %d words in the line .n”,num); 运行结果5计算并输出1000以内最大的10个素数以及它们的和。 要求: (1)在程序内部加必要的注释。(2)由于偶数不是素数,可以

12、不考虑对偶数的处理。 (3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 (4) 输出形式为:素数1+素数2+素数+素数10=总和值。补充程序#includevoid main()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);运行结果五思考题1对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句?2小结三种形式的循环使用的区别。实验4 函 数一实验目的1掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及

13、参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法; 2掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法; 3在编程过程中加深理解函数调用的程序设计思想。 二实验内容1多模块的程序设计与调试的方法;2函数的定义和调用的方法;3用递归方法进行程序设计。三实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num是素数,返回该数;否则返回0值。 要求: (1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。输出格式为:nu

14、m is prime或num is not prime。 (2)分别输入以下数据17,28,77,运行程序并检查结果是否正确。输入程序 #includevoid main() int prime(int); int n; printf(ninput an integer:); scanf(%d,&n); if(prime(n) printf(n %d is a prime.n,n); else printf(n %d is not aprime.n,n);int prime(int n)int flag=1,i;for(i=2;in、mn、mu) t=u; u=v; v=t; while(r=

15、u%v)!=0) u=v; v=r; return(v);运行结果补充程序#includevoid main() float fac(int n); int n; float y; printf(input an integer number:); scanf(%d,&n); y=fac(n); printf(%d!=%10.0fn,n,y);float fac(int n) float f; if(n0) printf(n0,dataerror!); else if(n=0|n=1) f=1; else f=fac(n-1)*n; return(f);运行结果五思考题1 小结函数的定义及调用

16、方法;答“无参数函数定义:类型标识符 函数名() 声明部分 语句部分 有参数函数定义:类型标识符 函数名(形式参数表列) 声明部分 语句部分 空函数定义:类型说明符 函数名() 函数调用的一般形式函数名(实参列表)2 小结函数中形参和实参的结合规则;答:在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传给实参3 编写和调试包含多模块的程序时,容易出现什么样的错误?根据自己的实践总结一 下。实验5 数 组一实验目的1掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 2

17、掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 3掌握与数组相关的算法,包括排序算法和查找算法等。 二实验内容有关数组的程序设计三实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求:(1)数组为整型数组(10个元素)。(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值

18、以及最小值在数组中的位置。 (4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序? 2编程实现:在给定的字符串中查找满足条件的第一个字符。要求:(1)字符串采用初始化的方式处理。(2)通过scanf函数读入一个任意字符。(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。3编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n n),形成n n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组

19、不允许动态定义)。 例如:原始数据: n=4 结果数据:1 2 3 4 8 11 14 163 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求: (1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。(3)对输入的210之间的整数(例如4)以n=4的格式输出。(4)输入一个n n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。 (6)修改程序,对最大值与最小值可能出现在一行上的情况

20、做出说明。 (7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。输入程序#includevoid main() int a10; int i,j,t; printf(input 10 number:n); for(i=0;i10;i+) scanf(%d,&ai); printf(n); for(j=0;j9;j+) for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t;printf(the sorted numbers:n);for(i=0;i10;i+) printf(%d,ai); printf(n); 运行结果4编程实现“折半查找”的

21、过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。 要求: (1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。 (2)用scanf函数输入一个要找的数。 (3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。 (4)任意输入一些数据,检查程序的正确

22、性。 (5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。 (6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。5编程实现:三个学生、五门课程的成绩分别存放在46矩阵的前35列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下: Input(输入成绩):

23、65 87 68 56 78 83 94 67 85 91 71 75 69 84 89 Output(输出结果) : 65 87 68 56 78 705 83 94 67 85 91 840 71 75 69 84 89 775 2190 2560 2040 2580 2320 0 average: 730 853 680 860 773 要求: (1)数组类型为实型,输入成绩由scanf函数实现。(2)输出已输入的原始成绩数据(35)。 (3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(46)。(4)j计算单科平均成绩后输出。输入程序 #inclu

24、devoid main() float average(float array10); float score10,aver; int i; printf(input 10 scores:n); for(i=0;i10;i+) scanf(%f,&scorei); printf(n); aver=average(score); printf(average score is %5.2fn,aver); float average(float array10) int i; float aver,sum=array10; for(i=1;i10;i+) sum=sum+arrayi; aver=

25、sum/10; return(aver); 运行结果6编写函数catStr(char str1,char str2)用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。编写函数cmpStr()用于判断两个字符串的大小。 要求: (1)不允许使用字符处理库函数。(2)在主函数以初始化的方式输入两个字符串str1、str2。调用函数lenStr()计算字符串的长度。 (3)调用函数cmpStr()判断两个字符串的大小,如果str1大于等于str2,调用函数catStr()进行两个字符串的连接,将str1连接在str2后,否则,将str2连接在str1后,调用函数lenStr

26、()统计连接后的字符串长度。 (4)在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度。五思考题小结有关数组和字符串的程序设计方法。实验6 指 针一实验目的1掌握指针的基本概念和基本用法。包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2掌握数组与指针的关系并能够利用指针解决数组的相关问题;3掌握字符串与指针的关系并能够利用指针处理字符串的问题;4掌握指针与函数的关系并能够利用指针处理函数问题;5了解指向指针的指针的概念及其使用方法;6能够使用指针进行程序设计。二实验内容有关指针的程序设计三实验环境PC微机DOS操作系统或 W

27、indows 操作系统Turbo C 程序集成环境四实验步骤1编程实现:任意输入的10个数,求其平均值。 要求: (1)10个数采用scanf语句读入。 (2)利用指针实现对这10个数的访问。 (3)要求平均值的精度为小数后面2位。输入程序#includevoid main() void sort(int x,int n); int*p,i,a10; p=a; for(i=0;i10;i+) scanf(%d,p+); p=a; sort(p,10); for(p=a,i=0;i10;i+) printf(%d,*p);p+; void sort(int x,int n) int i,j,k,

28、t; for(i=0;in-1;i+) k=i; for(j=i+1;jxk) k=i; if(k!=i) t=xi;xi=xk;xk=t; 运行结果 2编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要求: (1)整数数组由初始化方式输入。任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。输入程序#includevoid main() void sort(int x,int n); int*p,i,a10; p=a; for(i=0;i10;i+) scanf(%d,p+); p=a;

29、 sort(p,10); for(p=a,i=0;i10;i+) printf(%d,*p);p+; void sort(int x,int n) int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jxk) k=i; if(k!=i) t=xi;xi=xk;xk=t; 运行结果3编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。 要求: (1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后的结果。4编程实现:输

30、入三个整数,按由大到小的顺序输出。 要求: (1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理的特点。输入程序 #includevoid main()void exchange(int *q1,int *q2,int *q3);int a,b,c,*p1,*p2,*p3;scanf(%d,%d,%d,&a,&b,&c);p1=&a;p2=&b;p2=&c;exchan

31、ge(p1,p2,p3);printf(n%d,%d,%dn,a,b,c); void exchange(int *q1,int *q2,int *q3)void swap(int *p1,int *p2);if(*q1*q2) swap(q1,q2);if(*q1*q3) swap(q1,q3);if(*q2*q3) swap(q2,q3);void swap(int *pt1,int *pt2)int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;运行结果五思考题小结函数指针、数组指针、字符串指针的使用。答:函数指针:一个函数在编译时被分配给一个入口地址。这个函数的

32、入口地址就成为函数的地址数组指针:所谓的数组元素的指针就是数组元素的地址,每个数组元素都在内存中占有存储单元,从而它们都有相应的地址。而指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放在一个指针变量中)。字符指针:用字符指针指向字符串中的字符实验7 结构体与公用体一实验目的1理解结构体类型的含义;掌握结构体类型变量的定义方法和使用;结构体类型变量的说明以及初始化方法。2理解结构体与数组的区别;掌握结构体类型数组的概念、定义和使用方法。 3掌握链表的概念,初步学会对链表进行操作,包括建立链表、输出链表。 4掌握共用体的概念与使用。 二实验内容有关结构与共同体的程序设计三实验环

33、境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境四实验步骤1编写程序,输入今天的日期,计算今天在本年中是第几天。 要求: (1)建立结构体变量;(2)利用scanf函数输入年、月、日; (3)输出格式是:The day is the ?day;(4)修改程序,判断某天是某年的第几天。(提示:需要对闰年做判定)输入程序 #includevoid main() int sum_day(int,int); int leap(int year); int year,month,day,days; printf(input date(year,month,day):);

34、scanf(%d,%d,%d,&year,&month,&day); printf(%d,%d,%d,year,month,day); days=sum_day(month,day); if(leap(year) & month=3) days=day+1; printf(is the %dth day in this year.n,days);int sum_day(int month,int day) int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31; int i; for(i=1;imonth;i+) day+=day_tabi; r

35、eturn(day); int leap(int year) int leap; leap=year%4=0&year%100!=0|year%400=0; return(leap); 运行结果2编程实现:在一个结构数组中,存有三个人的姓名和年龄,输出三人中年龄居中者的姓名和年龄。 要求: (1)利用指针实现处理过程。 (2)三个人的数据采用初始化方式输入。 (3)修改程序,将(2)改为采用scanf函数读入方式。 输入程序#include#include#define FORMAT”%dn%sn%fn%fn%fn”Struct studentint num;Char name20;Float score3;void main()Void print(struct student);Struct student stu;Stu.num=12345;Strcpy(stu.name,”Li Li”);Stu.score0=67.5;Stu.score1=89;Stu.score1=78.6;Print(stu);Void print(struct student stu)Printf(FORMAT,stu.num,stu.na

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号