高级语言程序设计实验(电子、通信、电科_第1页
高级语言程序设计实验(电子、通信、电科_第2页
高级语言程序设计实验(电子、通信、电科_第3页
高级语言程序设计实验(电子、通信、电科_第4页
高级语言程序设计实验(电子、通信、电科_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 熟悉C 程序的运行环境时间:2010/10/25一、实验目的1. 熟悉ANSI C程序的运行环境;2. 了解计算机系统对高级语言的基本操作方法;3. 熟悉和了解WinTC 系统软件的使用和操作;4. 能进行简单的C语言程序录入、调试、编译和运行;5. 了解语言中数据类型的意义。二、实验内容参照实验教学大纲安装和运行C编译程序,练习编辑、编译和运行几个简单C程序。1. C语言上机步骤:(A)启动后请选择WinTC编译平台。(B)常用命令:编译(F9),运行(CTRL+F9)2. 编制简单程序,实现程序输出“Hello world!”。3. 编制C程序,实现计算键盘输入的两整数的积及平均值

2、,并在屏幕显示过程。include main()int Var1,Var2,Multi,Avg;scanf(“% Var1,% Var2,&Var1,&Var2);avg = (var1+var2)/2;multi = Var1*Var2;printf(“The average is :”avg);printf(“The multi is :”multi);三、调试步骤及运行结果1. 调试步骤:1静态地检查所编制程序,改正程序中的错误。2编译并运行所编制程序,若有,则记下出错信息。3按照事先静态检查后所改正的情况,进行纠错。4编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止

3、。5下面给出组测试用例,你认为哪几组较好?为什么?()0,0()0,99()20,50()33000,20()-5,-2()-5,2要进行较全面的程序试运行并获得尽可能多的测试结果,你认为应当用几组测试用例?2. 调试无语法错误后,分别使用下列测试用例对上述程序进行测试:()2,6()1,3()-2,-6()-1,-3()-2,6()-1,3()1,0()1,6()32800,33000()-32800,330001分析上述哪几组测试用例较好?通过测试,你发现程序有什么错误了吗?若有错误,请指出错误原因。操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数。请编写一个程序,测试各基

4、本数据类型所占用的存储空间大小。四、分析与讨论1. 记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2. 总结程序的结构和书写规则。(简要)3. 如何正确地选用数据类型?(提示:给合前面所做的实验及书本内容进行讨论总结)五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,对出现错误的情况做简要分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验二 顺序程序结构程序设计时间:2010/11/1一、实验目的1. 理解常用运行符的意义,掌握语言表达式的运行规则;2. 掌握语言程序输入、输

5、出的方法和格式;3. 能够根据具体任务要求,编写顺序结构程序。二、实验内容1. 编写一个语言程序,测试下列各表达式i , ji + 1,j + 1i + + ,j + + + i, + + ji + + + + + j+ + i + + + + + j + +要求在各表达式中i和j都分别有相同的初值。在实验中注意下列问题:(1) 哪些表达式是错误的?为什么?(2) 理解+,+,+i,i+的意义和优先级别。2. 输入并编辑下面的程序main()int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf(“%d,%d”,a,b);sca

6、nf(“%f,%f”,c,d);scanf(“%ld,%ld”,e,f);scanf(“%o,%o”,u,v);scanf(“%c,%c”,c1,c2);printf(“n”);printf(“a=%7d,b=%7dn”,&a,&b);printf(“c=%10.2f,d=%10.2fn”,&c,&d);printf(“e=17ld,f=%17ldn”,&e,&f);printf(“u=%o,d=%on”,&u,&v);printf(“c1=%c,d=%cn”,&c1,&c2);这个程序有语法错误吗?为什么?3. 调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:a=123,b=45

7、6,c=17.6,d=71837.65,e=70000,f=,u=62000,v=58765,c1=a,c2=b分析运行结果。特别注意输入c1,c2的值是什么?什么原因?4. 将输入e和f的语句改为:scanf(“%d,%d”,&e,&f);再用上述测试数据测试并分析结果。5. 将输入u、v的语句改为:scanf(“%d,%d”,&u,&v);再用上述测试数据测试并分析结果。6. 将输出e,f的语句改为:printf(“e=%17d,f=%17dn”,e,f);再用上述测试数据测试并分析结果。7. 将输出u、v的语句改为:printf(“u=%u,v=%un”,u,v);或printf(“u=

8、%d,v=%dn”,u,v);再用上述测试数据测试并分析结果。8. 在scanf(“%c,%c”,&c1,&c2);语句之前加一个语句:getchar();9. 验证转义字符n 与 r的意义有何不同。10. 从键盘输入三角形的三边长(合理设置),能够求出其面积。给出程序,并在屏幕显示计算结果。11. 从键盘输入一个华氏温度,要求按照公式Fahr = (9.0*celsius) / 5.0 + 32.0,输出摄氏温度。修改程序,要求以逆转换输出华氏温度值。三、调试步骤及运行结果按照实验内容要求,完成各项任务,程序改错需标明错误位置及错误原因。运行结果,应如实记录。自行编制的程序,需注意程序编写的

9、规范。四、分析与讨论1. 分析总结运算符的优先级。2. 总结在printf函数中可以使用的各种格式指定符。3. 总结在printf函数中可以使用的各转义字符及其功能。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验三 分支控制语句实验时间:2010/11/8一、实验目的1. 了解条件与程序流程的关系。2. 了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。3. 了解if及switch的嵌套结构。二、实验内容1. 设计企业发

10、放的奖金根据利润提成问题1利润低于或等于10万元的,奖金可提10%;(利润及奖金为实数型)2利润高于10万元,低于20万元(P=元)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;3P=时,低于20万元的部分按上述办法,高于20万元的部分5%提成;4P=时,高于40万元的部分按3%提成;5P时,超过100万元的部分按1%提成。要求:从键盘输入A、B、C、D四员工当月所创利润PA、PB、PC、PD,对应输出各人应发奖金及企业应发奖金总数。要求:(1) 用ifelse或nested if编写;(2) 用switch或nested switch编写;(3) 以表格形式输出。I

11、nput:*Enterprise Interest Count*A B C D Output:*Enterprise Employee Bonus*A bonus is:B bonus is:C bonus is:D bonus is:THE TOTAL BONUS ARE: 2. 利用if或switch实现4个数字比较大小,要求:(1) 通过键盘输入比较对象;(2) 分别对整数、字符、实数等数据类型进行比较实验;(3) 采用 ? : 操作符实现;(4) 若为10个或更多任意数进行大小比较呢,可使用任何方法。输入/输出结果应有统一格式:Input:*The Operation Digit*A

12、B C D Output:*The Result Sequence*SEQ ASCEND: (按照升序排列)SEQ DESCEND:(按照降序排列)三、调试步骤及运行结果按照实验内容要求,完成各项任务。使用流程图描述程序的逻辑结构,要求增加一些输入语句和输出语句,以便使上述程序能在不同输入值情况下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。对照相应格式输出,如实记录运行结果。自行编制的程序,需注意程序编写的规范。四、分析与讨论1. 设定不同的数据类型对分支控制流进行全面(覆盖)检验。2. 对不同程序结构(if/switch/?:)的特点进行分析。3. 分析所编制程序中使

13、用的变量、常量个数及使用结构嵌套层数。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验四 循环语句实验时间:2010/11/15一、实验目的1. 掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2. 了解条件型循环结构的基本测试方法。3. 掌握如何正确地控制计数型循环结构的次数4. 了解对计数型循环结构进行测试的基本方法5. 了解在嵌套循环结构中,提高程序效率的方法二、实验内容及步骤1. 打印出所

14、有的“水仙花”数字。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。分析:运用循环语句和条件判断语句,根据”水仙花数”的特点,可以用FOR/while计数循环来控制100999的执行次数,然后对每个数分解出百位、十位和个位,最后再判断是否满足要求。如果满足,则打印,反之进行下一个数的判断。2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。要求:使用ctype.h中的character test function对键盘输入的一行字符串(80 char)进行类型判断,并在输入结束后打印统计结果。3. 打印出

15、指定的“钻石”图案。* * * *要求:按照图形所示,使用循环结构完成图形的输出。4. 下面是一个计算e的近似值(使误差小于给定的)的程序。main() double e=1.0,x=1.0,y,detax; int i=1; printf(n please input enter a error:); scanf(%lf,&detax); y=1/x; while(y=detax) x=x*i; y=1/x; e=e+y; +i; printf(%12.10lf,e); getch();实验步骤:1阅读上面的程序,写出程序所依据的计算公式;2当输入的detax各是什么值时,能分别使程序按下面

16、的要求运行: 不进入循环; 只循环一次; 只循环两次; 进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?3原程序中while语句中的y=detax,分别换成ydetax,y=detax,ydetax,y=detax,观察程序运行将会有什么变化。假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。4把原程序中while语句之前的y=1/x语句去掉,观察程序的运行将会发生什么样的变化。假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。5若把原程序中的+

17、i换成i+,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了?6把原程序中的while结构改写成dowhile结构,再分别按上述的(2)、(3)两步进行实验。5. 下面一个计数型循环程序,main() int i ,j; long sum=0; for(i=1,i=20,i+) for(j=1;j=3;j+) sum=sum+(i+1)*(i+1)*(j+2) printf(sum is :%dn,sum); getch();1调试程序,试修改某些语句,以便能知道控制表达式 i=1;j=20;i+ 和 j=1;j3;j+= 各执行了

18、多少次?2将内、外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观察对换后的外循环与内循环控制表达式执行的总次数有无变化?3将源程序改写为:main() int i,j,k; long sum=0; for (j=1;j=3;j+) k=j+2; for(i=1;i=20;i+) sum=sum+(i+1)*(i+1)*k; printf(sum is :%ldn,sum); getch();观察程序的执行结果有无变化。三、分析与讨论1. 分析循环及条件判读语句的嵌套使用。2. 总结一下测试条件循环结构的一般方法。3. 如何测试计数型循环结构的控制表达式中的错误?五、实验报告要求1

19、. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验五 数组实验时间:2010/11/22一、实验目的1. 掌握数组定义的规则。2. 掌握C语言数组的基本用法。3. 掌握数组操作的若干功能。二、实验内容及步骤1. 编写程序,测试下列数组的定义方式是否正确1main()int n;scanf(“%d”,&n);int an;2main()const int n=10;int an;3#include #define M 10 main() int aM

20、;4main() int a2+2*4;5#include #define M 2#define N 8 main() int aM+N;通过这一实验,可以说明什么问题?2. 输出一列二维数组,使之按行列式的格式,main( ) int num43=1,2,3, 4,5,6, 7,8,9, 10,11,12; int i,j; for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,numji); printf(n); getch();改错,使之能正确输出。3. 操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要设计一个程序,返回3*5二维数组各元

21、素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。4. 用选择法对10个整数排序。选择法排序是一种简单易实现的数据排序法,设有数组A10,其算法原理为:首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A0为基准从A0,A9中找出最小的元素,将其与A0交换;然后将基准位置右移一位,重复上面的动作,比如,以A1为基准,找出A1A9中最小的,将其与A1交换;一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,完成排序)。以下为一个用C描述的函数实现上述排序:void sort(int array,int n) / n 为数组元素

22、个数int i,j,k,temp; / i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置for(i=0;in-1;i+) k=i; / k 初始化为基准位置for (j=i+1;jn;j+) if (arrayjarrayk) k=j ; / k 始终指示出现的较小的元素的位置temp=arrayk;arrayk=array;array=temp; / 将此趟扫描得到的最小元素与基准互换位置5. 将一个数组中的值按逆序排放。这是对数组元素的一个简单操作。6. 打印出10行杨辉三角形。11 11 2 11 3 3 11 4 6 4 115101051 三、分析与讨论1

23、. 通过实验,分析定义与引用数组的区别。2. 总结、体会多维数组的内存组织方式。3. 分析使用数组进行数据组织的特点,并总结数组元素的操作功能。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验六 函数实验时间:2010/11/29一、实验目的1. 掌握C语言函数的定义方法、函数的声明及调用规则。2. 了解主函数和子函数间的参数传递方式。3. 了解用户定义函数的组织方式。二、实验内容及步骤1. 上机调试下面的程序,记录系统给出的出

24、错信息,并指出出错原因。main() int x,y; printf(%dn,sum(x+y); int sum(a,b) int a,b; return(a+b); 通过这一实验,熟悉函数的运行规则。2. 编写函数,将给定的二位数组(44)转置,即进行行列互换。/*矩阵的转置*/#define N 4int arrayNN;convert(array) int i,j,t; for (i=0;iN;i+) for (j=i+1;jN;j+) t=arrayij; arrayij=arrayji; arrayji=t; main() int i,j; printf(the input arra

25、y elments:n); for (i=0;iN;i+) for (j=0;jN;j+) scanf(%d,&arrayij); printf(nthe src array:n); for (i=0;iN;i+) for (j=0;jN;j+) printf(%5d,arrayij); printf(n); convert(array); printf(the conv array:n); for (i=0;iN;i+) for (j=0;j1)。程序中需要设定一个递归函数,如果n0,n=0或n=1时都将结束函数的执行,否则就递归调用子函数自身。每次递归调用的实参为n-1,即把n-1的值赋予形参n,最后当n-1的值为1时再作递归调用,形参n的值也为1,将使递归终止,然后可逐层退回。进行递归函数编写时,重要一点是确定递归终止的条件,不再继续递归调用而开始逐层返回主函数。三、分析与讨论1. 针对以上实验内容写出相应的参数传递过程并分析结果。2. 讨论参数的传递的几种形式。3. 分析并记录递归函数调用的控制流并记录之。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论