《高级语言程序设计实验(电子、通信、电科).doc》由会员分享,可在线阅读,更多相关《高级语言程序设计实验(电子、通信、电科).doc(15页珍藏版)》请在金锄头文库上搜索。
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=2174506,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);或pri
8、ntf(“u=%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万元(100000P=200000元)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;3200000P=400000时,低于20万元的部分按上述办法,高于20万元的部分5%提成;4400000P=600000时,高于40万元的部分按3%提成;5600000P1000000时,超过100万元的部分按1%提成。要求:从键盘输入A、B、C、D四员工当月所创利润PA、PB、PC、PD,对应输出各人应发奖金及企业应发奖金总数。要求:(1) 用ifel
11、se或nested if编写;(2) 用switch或nested switch编写;(3) 以表格形式输出。Input:*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个或更多任意数进行大
12、小比较呢,可使用任何方法。输入/输出结果应有统一格式:Input:*The Operation Digit*A B C D Output:*The Result Sequence*SEQ ASCEND: (按照升序排列)SEQ DESCEND:(按照降序排列)三、调试步骤及运行结果按照实验内容要求,完成各项任务。使用流程图描述程序的逻辑结构,要求增加一些输入语句和输出语句,以便使上述程序能在不同输入值情况下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。对照相应格式输出,如实记录运行结果。自行编制的程序,需注意程序编写的规范。四、分析与讨论1. 设定不同的数据类型对分支控制
13、流进行全面(覆盖)检验。2. 对不同程序结构(if/switch/?:)的特点进行分析。3. 分析所编制程序中使用的变量、常量个数及使用结构嵌套层数。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。实验四 循环语句实验时间:2010/11/15一、实验目的1. 掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2. 了解条件型循环结构的基本测试方法。3. 掌握如何正确地控制计数型循环结构的次数4. 了解
14、对计数型循环结构进行测试的基本方法5. 了解在嵌套循环结构中,提高程序效率的方法二、实验内容及步骤1. 打印出所有的“水仙花”数字。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。分析:运用循环语句和条件判断语句,根据”水仙花数”的特点,可以用FOR/while计数循环来控制100999的执行次数,然后对每个数分解出百位、十位和个位,最后再判断是否满足要求。如果满足,则打印,反之进行下一个数的判断。2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。要求:使用ctype.h中的character test function对键盘输入的一行字符串(80 char)进行类型判断,并在输入结束后打印统计结果。3. 打印出指定的“钻石”图案。* * * *要求:按照图形所示,使用循环结构完成图形的输出。4. 下面是一个计算e的近似值(使误差小于给定的)的程序。main() double e=1.0,x=1.0,y,detax; int i=1; printf(n