哈工大(威海)c语言实验报告册答案_第1页
哈工大(威海)c语言实验报告册答案_第2页
哈工大(威海)c语言实验报告册答案_第3页
哈工大(威海)c语言实验报告册答案_第4页
哈工大(威海)c语言实验报告册答案_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、实验1简单判定性问题求解一、实验学时完成本实验需4学时。二、实验目的1、阅读程序题(1)掌握C语言数据类型,熟悉如何定义一个整型、 字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运 算符,以及包含这些运算符的表达式。2、编程题(1)如何运用判定性结构进行程序设计;(2)如何运用判定性结构进行程序设计。3、调试题(1)熟悉C程序的编辑、编译、连接和运行的过程。三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的 指导意见,可供参考。1、

2、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注 意观察数据在内存中的存储方式、含不同种运算符表达式 的输出结果。2、编程题必须首先画出流程图, 弁反复思考判断程序 设计的正确性,完成程序的设计。要注意简单判定性问题 的结构选择。3、调试题应明确程序的调试、 测试是一项非常烦琐的 工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。四、实验内容1、阅读程序题(1)()/*/c12;/*/c1=97;c2=98;(n12); /*(n12); /*该程序的输出结果98。定义字符型变量向

3、字符变量赋以整数以字符形式输出*/以整数形式输出*/是a b(换行)97思考:可否改成cl , c2;输出结果是? 相同()75;(n);该程序的输出结果是 0思考:若将语句中变为,可否输出分式的值?可以()9;/*包含复合的赋值运算符的赋值表达式*/(n);该程序的输出结果是-18思考:赋值表达式a+=a=a+a的求解步骤? 第一步:()9第二步18(4)()1;(n);该程序的输出结果是4294967295。思考:一1在内存中的存储形式?取反加11111111111111111111111111111111(32个)()x1;1;x1; /*有符号数据传送给无符号变量*/(1);该程序的输

4、出结果是4294967295思考:不同类型的整型数据相互赋值时,规则是什么?(有符号赋值给无符号)(6)() 345;(n,(!(ab)(1);();该程序的输出结果是 0 (换行)5思考:若将第一个语句中变为,结果将如何?1 (换行)6() 123;()(n);(n);该程序的输出结果是。2、编程序弁上机调试运行(包括题目及要求、流程图、 程序清单、测试数据及结果)(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:百分制90-10080-8970-7960-6960等级制优良中差劣具体要求如下:1)用语句实现该功能;2)用键盘输入百分制成绩,输入前要有提示信息,对于不合

5、理的数据应输出错误信息;3)输出结果应包含百分制成绩和成绩等级;4)分别输入成绩-10, 30, 60, 68, 75, 83, 95, 102, 查看记录运行结果。流程图 程序代码()见下页测试数据:100, 50, -20输出结果:优,劣,成绩输入错误(2)银行整存整取存款不同期限的月息利率分别为:0.63%期限=1年0.66%期限=2年0.69%期限=3年0.75%期限=5年0.84%期限=8年月息利率=输入存款的本金银行得到的利息与本金的合计。和年限,求到期时能从 (利息的计算公式为:利息=本金x月息利率x 12 x存款年限。程序代码流程图见下页();(输入存储年份:n);();(输入

6、本金数额:n);();(b)(ac)(bc)(n);(n);(ab)(ac)(n);程序中包含有一些错误,按下述步骤进行调试。1)设置断点。2)通过单步执行,观测变量,发现程序中的错误。程序调试记录1、程序出现的错误及改正第四行,前都加&,在中两个之间加空格; 括住六 到九行;把第十行改成 ;2、程序的改进1 .每个 后加一个二;2 .在程序末尾添加如下指令(a)(a)(a)(b)(n);(n);一实验2循环结构及其应用一、实验学时完成本实验需4学时。二、实验目的1、熟练掌握,一,语句实现循环的方法,包括如何正 确地设定循环条件,如何控制循环的次数。2、掌握语句与语句的使用方法。3、熟悉循环的

7、嵌套以及从循环体内退出循环的处理。4、理解什么是循环程序结构。三、实验指导为了达到最佳的实验效果,以下提供几条适于模块化 编程的指导意见,可供参考。1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注 意循环语句的一般使用方法,以及复合运算符的使用。2、编程题必须首先画出流程图, 弁反复思考判断程序 设计的正确性,以面向过程的、模块化设计方法完成程序 设计。【例题解析】编写一个程序,输出半径为 1到10的圆的面积,若面积在40到90之间则予以输出,否则,不予输出。1)解题分析:解决问题的关键算法为求圆的面积弁按 要求输出。循环求圆的面积,若 90,

8、则用语句跳出循环。2)算法流程图如图2-1 :3)综合分析需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循 环,这时就要用到和语句。1 结市一,一.图2-1输出半径为1郁希且曾积在40到90之间的圆 面积的流程图4)程序代码()0.03.14;r;(111)*r*r;(90);(5.2fn);四、实验内容1、阅读程序题。1)( )1;*x; ();(n)该程序的输出结果是 1= . I。()0;(=2);(n);该程序的输出结果是1(换行)2 (换行)3。(3)();(11 ; a=20);(31) 3 ; ; 5;(“ n”);该程序的输出结果

9、是 8 |。(4)()21;(1)a* ;();(、”);该程序的输出结果是 1, -2。2、编程序并上机调试运付(包括题目及要求、流程图程序清单、测试数据及结果(1)输入整数n,求n流程图二、 开始定义及初始 化S=1,i=1输入n/ /)n20)。()程序代码11;;(请 输 入a=i/100; b=(i-a*100)/10; c=i-a*100-b*10程序代码(2)打印出所有“水仙花数”。所谓“水仙花数”是 指一个三位数,其各位数字的立方之和正好等于 该数本身。例如:153是一个“水仙花数”,因 为 153=13+53+33【提示】根据题目要求只要分别求出一个三位 数的个位、十位、百位

10、上的数字,然后判断是 否满足(某一三位数的百位的立方的十位的立 方的个位的立方)这个公式,满足这个条件的 三位数就是“水仙花数”。()100;(n=1000)(3) 一个整数,它加上100后是一个完全平方数,再 加上168又是一个完全平方数,请问该数是多 少?【提示】在10万以内判断,先将该数加上100 后再开方,再将该数加上 268后再开方,如果 开方后的结果满足如下条件,即是结果。定义及初始 化i=0,A,B口A= (i+100 ) A 1/2B= (i+168 ) A 1/2结束不i=100000是.程序代码()0;3、程序选做题(1)猴子吃桃问题。猴子第一天摘下若干个桃子,当 即吃掉了

11、一半,还不过瘾,又多吃了一个。第二 天早上又将剩下的桃子吃掉一半,又多吃了一个以后每天早上都吃了前一天剩下的总数一半鬟二题桃子了。个。到第10天早上想再吃时,见只剩一个 求第一天共摘了多少桃子。,的(1) *2()【提示】使用逆向推导的方式,设后 桃子为N个,则其前面一天的桃子为 个,以此类推。(2 )“百钱买百鸡”问题:公鸡每只 3元,小鸡每3只1元;用100 问公鸡,母鸡,小鸡各买多少只?5元,母鸡每只 元买10d只鸡,【提示】设公鸡x只,母鸡y只,小000;鸡 z(a=15)贝U有 1=18, 1=31,1=98,且同时满足 533=100, 100, 3=0这三个条件。通过数冬运(0=

12、25)14*8*b;算可改变条件,从而可用不同的方法来解决此问题,请尝试不同的循环次数解决该问题。五、程序调试记录要求:写出题号,弁编写顺序号。如四(1)出现的错(1) (2) 1、程序出现的错误及改正2、程序的改进实验3模块化设计与应用一、实验学时完成本实验需要4学时。二、实验目的1、阅读程序题(1)掌握函数实参和形参的对应关系以及“值传递” 的方式;(2)理解函数调用的过程以及函数的返回值;(3)弄清楚带参函数和带参的宏之间的异同。2、编程题(1)深刻理解模块化程序设计的思想及如何进行模块 划分;(2)掌握定义函数的方法以及函数原型的声明;(3)灵活运用函数调用(有参函数和无参函数、有返回

13、 值的函数和无返回值的函数)。三、实验指导为了达到最佳的实验效果,下面提出几点指导意见或要求以供参考:1、阅读程序题应先运用自己在课堂所学的知识,推导出结果。上机时输入计算机,验证自己推导的结果是否正 确。若不正确,应分析原因。2、编程题注意事项:(1) 一个模块(或函数)应有一个入口点和一个退出 点。(2) 一般每个模块(或函数)只执行一个任务。不要将 无关的任务放于同一模块中,只将完成同一任务的语句组 合在一起。(3)先画流程图,后写程序代码;(4)变量和函数标示符尽量“见名知义”;(5)程序中应有适当注释。3、应记录调试程序时出现的错误,以便经验的积累。四、实验内容1、阅读程序题(1)下

14、面程序的输出结果是5,8 o f( m)2;()s;(2);(,n, s, f(s);(2)下面程序的输出结果是777()f( a )2;0;( i =0 3)3;(a);1;1;();(3)下面程序的输出结果是 3 (空格)5。()(*a, *b)35,*,*;*t;();(n,*P,*q);(4)下面程序的输出结果是 12 oM() x*()123;(n, M();(5)下面程序的输出结果是 19 oM( x, y, z)p;(p);()123;(n, M();2、编程序弁上机调试运行。(1)请设计一个函数(),它的功能是:判断是否是素 数。若是素数,返回1;若不是素数,返回0。的值由主函

15、 数从键盘读入。函数():主函数():测试数据及输出结果:33 037 1程序代码();(请输入要检测 的数字:n);();(n();(2)请设计一个函数(),它的功能是:将两个两位数的正整数a、b合弁形成一个整数放在 c中。合弁的方式是:将a数的十位和个位数依次放在 c数的千位和十位上,b数的十位和个位数依次放在 c数的百位和个位上。例如,当a=45, 12。调用该函数后,4152函数():程序代码(y)c;*100;主函数():流程图输入a,b两 个二位数程序代码(c);调用函数();(请输入要组合的数字(都为二位数):n);();测试数据及输出结果:9 21输入数字错误!21 23212

16、3(3)请设计两个函数()和(),它们的功能是:前者用 于求两个正整数的最大公约数,后者用于求两个正整数的 最小公倍数。函数():函数():实验4相同数据类型集合一、实验学时完成本实验需4学时。二、实验目的1、阅读程序题(1)掌握一维和二维数组的定义、赋值和输入输出(2)学会使用一维数组、二维数组(3)学会使用多维数组、字符数组(4)学会使用字符串处理函数2、编程题(1)如何运用数组进行程序设计(2) 了解字符串处理函数三、实验指导为了达到最佳的实验效果,以下提供几条适于模块化 编程的指导意见,可供参考。1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的

17、结果,注 意数组下标的使用方法。2、编程题必须首先画出流程图,弁反复思考判断程序设计的正确性,注意数组下标不要越界(为了加深认识, 自己可以尝试一下下标越界的情况)。3、调试程序要有耐心,反复的调试过程,虽然表面看 起来费时费力,但是你一定会受益非浅。四、实验内容1、阅读程序题(1)() 7=6521;0;(0i=0i=92)10*i-0;(n);该程序的输出结果是6| () a口;(05)ai;(”n*a*n);(05)(a=);(i);”* *n)(1) (1a1) j;aj1;a1;(%3d:);(1) (j);(n);(:n);(1)(i); 该程序的输出结果是冒泡排序显示过程,并最终

18、把输入的十个数字由小到大无空格排 列。N 20()fN;f0=1;f1=1;(2)(n);fi12;(0) (40)(nn);(f2d5d ”i);该程序的运行结果()f0 =1f1 =1f2 =2f3 =3f4 =5f5=8f6 =13 f7 =21 。f8 =34 f9=55f10=89 f11=144f12=233 f13=377 f14=610 f15=987f16=1597 f17=2584 f18=4181 f19=6765a33=11,12,13,21,22,23,31,32,33;(n);(03)(03)(%3dij);(nn);(03)(0)皿;a皿皿i;a皿i;(a n);

19、(03)(0=ai=Ai=Z)sii+32;(i);该程序的运行结果为将输入大写字母转变为小写,小写字母转变为大写 32、编程序并上机调试运行(包括题目及要求、流程图、 程序清单、测试数据及结果)(1)编写一个3*4矩阵,找每行中最大元素弁与第一列元素交换。具体要求如下: s34;(a)使用二维数组存放该 3*4矩阵;(b)定义弁初始化该二维数组;00;(c)(d)输出原矩阵和变换后的 有必要的提示信息。矩阵巧彳础询序输入12个数字,L流程图见下页声明数组nArr34并初始化,声明 i , j ,外层循环控制以空格或回车分隔:n);(程2戏码(0=3)(ij);(n);(0=2) (0=3)一

20、nn);( ij);(n);2的长度必须足够大;程序代码()180290;i;(输入字符串:n);(2)编程实现如下功能:将字符数组1中的全部字符 拷贝到字符数组2中,具体要求如下:(a)不能使用字符串拷贝函数();(b)必须将1中的字符串结束标志0 一起拷贝, 但其后的字符不拷贝;(c) 1的长度不超过80,(d)有必要的提示信息。c(3)设某班共有10名学生,为了平定某门课程的奖 学金,按照规定超过全班平均成绩10喷发给一等奖,超过全班平均成绩5婿发给二等奖。编写程序,输出学生学 号、成绩和奖学金等级。流程图程序代码()见下页1020;(请按照学号、成绩的顺序依次输入数据:n);开始(01

21、0)(02)初始化二维数组nArr102, 定义变量用小码:av川=0(nij);主函数啊调(010)fori=0 to9汹口;否j=j+1; avr=(avr+nArri0)/j是(结束Arr输出 nArri口,一等奖10;Arr输出(学号/成嘎奖奖节等级n);(0 avr*1.1 3 (i1*1.1)不.nArri0口avr*1.05 .五、程序调试记录( 1)调试下面程序。N 10() =12,15,23,29,30,31,34,45,56,70;/* 存放被查找的整数, 数组存放有序数列 */01;/* 、和分别标记查找区间的下界和上界及中间位置*/( :n);();/* 输入要查找的

22、整数*/( :n);(1)( i);/*输出有序数列 */()1;/* 若小于中间位置的数据,等于 1*/1;/*若大于中间位置的数据,等于 1*/()(n);/*若大于,则查找失败*/程序中包含有一些错误,按下述步骤进行调试。程序调试记录1、程序出现的错误及改正1 .用把十四十五行括起来2 .第十行1改成0;2、程序的改进1.把七八九三行与十十一两行换一下位置,方便用户操作;实验5深入模块化设计与应用一、实验学时完成本实验需4学时。二、实验目的1、阅读程序题(1)学会使用函数嵌套调用的使用方法(2)学会使用一维数组做为函数参数(3)递归调用的设计与使用(4)学会使用指针做为函数的参数2、编程

23、题(1)如何运用指针进行程序设计(2)如何以一维数组、二维数组做为函数参数进行程 序设计(3)冒泡排序、选择排序的灵活应用三、实验指导为了达到最佳的实验效果,以下提供几条适于模块化 编程的指导意见,可供参考。1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注 意观察函数嵌套调用、一维数组做为函数参数、指针做为 函数的参数、递归调用的使用方法。2、编程题必须首先画出流程图, 弁反复思考判断程序 设计的正确性,以面向过程的、模块化设计方法完成程序 设计。要注意变量设置、函数参数及返回值在数据传递或 共享中的重要作用。四、实验内容1、阅读程序题(1)

24、( a, b) ();() 258;();(“n);该程序的输出结果是15。 f( b口,n);1;(02) (1)(2);(2);() ( 、(3); 该程序的输出结果是 4。(4) f( *s) 0;(*s) *10+*;(k);以f( “1234”)方式调用该函数,结果1234。(5) ( * n);(01);(1)(*()*();()*();*()=*();*();()*10;(010)(“”);;(p,10);(010)(“,*p);(、”);该程序的输出结果是将输入数字按照从小到大顺序排列后组成一个新数字。2、编程序弁上机调试运行(包括题目及要求、流程图、 程序清单、测试数据及结果)(1)编写一个函数(*s),函数的功能是把字符串中 的内容逆置。例如,字符串中原有的内容为,则调用该函 数后,字符串中的内容为。C开始(2)构造函数(8),将8名同学的姓名存入二维数组中;构造函数(8),用冒泡排序算法按学生的姓 名进行排序;构造函数(8),将排序后的结果输出。函数(8)函数(8)测试数据:输出结果:a b c d e f g s(3)构造函数(8, 8),将8名同学的姓名存入二维数组中;构造函数(8),用选择排序算法按学生 的成绩进行排序;构造函数 (8 , 8),将排序后的结果输出。函数(口8, 8)k=i函数(口8 , 8

温馨提示

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

评论

0/150

提交评论