




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 C语言的基本框架 上机指导 本节将提供4个实验的指导,通过本节内容的学习和实践,读者可以更好地了解C语言程序,并熟悉Turbo C 20集成环境。【实验11】 设计简单菜单界面。1实验题目 设计如图16所示的菜单界面,并在Turbo C20集成环境中编辑、编译、连接和运行该程序。图1.6 加减乘除主菜单2实验要求 (1)程序中只包括主函数。 (2)程序在输出菜单前先清屏。 I(3)参照实例11中的程序,按缩进格式输入源代码。(4)整理出程序录入到运行过程中遇到的问题,并分析其原因。3实验目标(1)熟悉Turbo C 20集成环境。(2)了解C语言程序的编辑、编译、连接和运行过程。4实验指导(1)进入Turbo C 20集成环境。在资源管理器中双击TCEXE文件,将进入如图17所示的Turbo C 20集成环境。图17 Turbo C 20初始屏幕主菜单:包括File、Edit、Run等8个菜单。编辑窗口:是输入或修改C源程序的区域。信息窗口:显示编译或连接程序时发现的错误位置和错误类型。功能键提示行:显示F1、F5等常用功能键所代表的操作。(2)在编辑窗口中输入如下源程序。#include#include *使用清屏函数时加此命令行*main() , clrscr( ); *清屏函数* printf(” |-|n”); printf( | Please choose: |n”); printf(” |-|n”); printf(” | + - addition |n”); printf(” | - - subtraction |n”); printf(” | *- multiplication |n”); printf(” | / -division |n”); printf(” | E Exit |n”); printf(” |-n”); 输入或修改(即编辑)源文件时,经常使用如表11所示的块操作命令。表11块操作命令命令功 能说 明Ctrl+KB定义块首定义前需要把光标移动到块开始的位置Ctrl+KK定义块尾定义前需要把光标移动到块结束的位置Ctrl+KV移动块移动前先定义块首和块尾,然后把光标移动到需要块移动的位置Ctrl+KC复制块复制前先定义块,然后把光标移动到需要块复制的位置Ctrl+KY删除块删除前必须先定义块Ctrl+KH取消块删除块和取消块的作用不同为了提高程序的可读性,请读者养成按缩进格式输入的好习惯。(3)保存程序。 在选择File|Save命令后出现的对话框中输入“d:tstl_1c”,即可保存程序,输入时扩展名可省略。如果以后再需要保存程序,则不要求输入文件名。Save命令的快捷键是F2键。File| Write To命令用于修改文件名或文件存放的路径。 (4)编译和连接程序。 按F9键即可进行编译(生成tstl_1obj)和连接(生成tstl_1exe)操作。如果编译或连接时有警告错误或语法错误,则应修改后重新编译和连接。编辑窗口和消息窗口之间的切换按F6键即可实现。 (5)运行程序。 按Ctrd+F9组合键,可运行可执行文件tstl_1exe。如果按该组合键后显示错误信息,也应修改后重新编译和连接。 (6)查看运行结果。 按Alt+F5组合键将Turbo C集成环境切换到DOS屏幕后,就可以查看运行结果,按任何键,又重新回到Turbo C集成环境。 (7)分析运行结果。 判断运行结果与本题的预期结果是否相符,如果不相符,则需要修改程序后重新编译、连接、运行,直到结果正确为止。 若要退出Turbo C 20集成环境,则执行File|Quit命令。 【实验12】数学函数的使用。 1实验题目 编写程序,计算数学表达式的值。2实验要求(1)X的值从键盘输人。(2)先分别计算表达式sinx、ln(x+1)、ex、|cosx|的值,然后再计算整个表达式的值。(3)对被调用的标准库函数,必须加注释说明其功能。(4)反复运行程序,当X分别取1570796、0、1、一3141592时,观察sinx、ln(x+1)、ex、|cosx|的值3实验目标 (1)熟悉数学函数的使用方法。 (2)领会临时加printf()观察计算结果的好处。 (3)学会处理复杂表达式,并合理选择测试数据。 4实验指导 (1)将sinx、ln(x+1)、ex、|cosx|的值分别赋给4个变量a、b、c、d,即使用以下语句: a=sin(x); b=log(x+1); c=exp(x): d=fabs(cos(x); (2)为了观察各变量得到的值,在上述各语句下面均添加printf( )函数。例如,在语句“a=sin(x);”下面,临时添加语句“printf(“a=lfn”,a);”。 (3)最终表达式的值可通过y=(a+b)(c+d)计算。 (4)请注意,C语言对实型数据进行运算后会有误差。 【实验13】了解程序的执行过程。 1实验题目 有以下程序 #include void myswap(double,double); main() double x,y; x=15: y=25; myswap(x,y); printf(”x=lf,y=lfn”,x,y); void myswap(double a,double b) double c; c=a: a=b: b=c: (1)写出运行以上程序后的预期结果。 (2)观察实际输出结果和预期结果是否相符。 (3)将所有a和b分别改为X和Y,再观察实际输出结果和预期结果是否相符。(4)用单步执行的方法,了解程序执行过程中数据的变化情况。(5)用注释符“*”括起函数原型说明部分(即程序中的第2行),观察编译时的情况。2实验要求(1)在进行上机实验之前先写好预期结果。(2)理解3条语句“c=a;a=bb=c;”的执行过程,了解myswap()函数的功能。(3)在每行代码右侧加注释说明该行作用。3实验目标(1)掌握用F7键单步执行、用Ctrl+F7组合键设置监视项的方法。(2)掌握参数传递过程和函数调用过程。了解形参名称对函数功能没有影响。(3)体会函数原型说明的用途。(4)掌握交换数据的方法。4实验指导(1)先按F9键将程序编译、连接后,再按F7键单步执行。每按一次F7键,程序执行一行,而且即将被执行的程序行上有绿色条。(2)在单步执行的过程中,用Ctrl+F7组合键可以随时设置监视项,监视项的变化情况在Watch窗口中显示,单击BreakWatch菜单删除监视项,如图18所示。图18设置和删除监视项【实验14】函数的定义和使用。1实验题目设有一个平行四边形,其顶点坐标依次为A(2,4)、B(1,2)、C(5,2)、D(6,4)。编写程序,计算两个对角线AC、BD的长度。2实验要求(1)根据题目需要,合理选择数据类型。(2)自定义一个函数,该函数的功能是计算两点问的距离。(3)在主函数中调用两次函数实现本题中的功能。(4)分别用F7键和F8键单步执行程序。3实验目标(1)学会定义函数。(2)掌握函数的使用方法。(3)了解F7、F8两个快捷键的区别。(4)了解选择数据类型的原则,为下一章的学习做准备。4实验指导(1)设两个点的坐标为(x1,y1)和(x2,y2),则两点间的距离为(2)计算两点间距离的函数需要有4个参数xl、x2、yl和y2。调用两次该函数才能计算两个对角线的长度。(3)由于4个点的坐标是整数,所以可用整型(int型)类型。例如“int x;”,这时x中只能存放整型数据。但对角线的长度不能用整型,输出整型数据时的说明符是d,有关数据类型将在22节介绍。第2章 C语言的数据运算 上机指导【实验21】变量的变化情况。1实验题目 有以下程序 #include #include main( ) int x; float y; clrscr( ); x=503; y=503; x=1030; y=1030; x=49; y=49; x=53; y=53; x=306; y=306; x=52*3; y=52*3; x= 一x; y= 一y; x= 10*x; y=10*y; printf(”x=d y=fn”,x,y); printf(”x=f y=dn”,x,y); 用单步执行的方法,体会程序运行时各变量值的变化情况。2实验要求(1)在进行上机实验之前先将每执行一条语句后变量x和y的预期结果写在相应语句旁。(2)设置两个监视项x和y后单步执行程序。(3)当绿色条停留在clrscr();”语句上时,观察Watch窗口中变量x和y的值。(4)每执行一条语句后,对比watch窗口中变量x和y的值与预期的值是否一致,若不一致,请解释原因。(5)运行结束后查看输出结果,确认该结果是否与预期的值一致。3实验目标(1)变量经定义后,系统只为其分配存储单元,在给变量赋初值前,其中的值是不确定的。(2)理解变量类型对计算结果的影响,学会编程时正确选择变量类型。(3)理解变量类型与printf()函数中格式说明符的匹配关系。4实验指导(1)先按F9键将程序编译、连接后,再单步执行。(2)按F7键或F8键均可单步执行,但按F7键(Trace)进入函数,按F8键(Step)不进入函数。(3)用Ctrl+F7组合键设置Watch窗口中的监视项。(4)按Alt+F5组合键查看输出结果。【实验22】逻辑表达式的计算。1实验题目有以下程序,用单步执行的方法观察各逻辑表达式的值。#include#includemain() int a=10,b=10,c=20,d=20,e=30,f=30;clrscr( );printf(”a=d b=dn”,a,b);printf(”0&(a=5) is d ”,0&(a=5);printf(”a=dn”,a);printf(”3&(b=8) is d ”,3 &(b=8);printf(”b=dnn”,b);printf(”c=d d=dn”,c,d);printf(”0 |(c=5) is %d”,0|(c=5);printf(”c=dn”,c);printf(”3 |(d=8) is %d”,3 |(d=8);printf(”d=dnn”,d);printf(”e=d f=dn”,e,f);printf(”e |0 &(e=5) is %d”,e | 0 &(e=5);printf(”e=dn”,e);printf(0 |(f10)&(f=10) isd ”,0 |(f10)&8L(f=10);printf(”f=%dnn”,f); 2实验要求 (1)在进行上机实验之前先将每执行一条语句后变量的预期结果写在相应语句旁。(2)设置6个监视项a、b、c、d、e和f后,单步执行程序。(3)每执行一条语句后,对比Watch窗口中变量的值与预期的值是否一致,若不一致,请解释原因。(4)运行结束后查看输出结果,确认该结果是否与预期的值一致。3实验目标(1)掌握逻辑表达式的运算规则及运算值的表示。(2)观察逻辑运算符&和|何时不处理其右侧的表达式。参照实验21的实验指导进行即可。需要块复制或块移动等操作,可参考表11。【实验23】数据类型的强制转换。1 实验题目有以下程序,用单步执行的方法观察数据类型的强制转换效果。2买验要求(1)在进行上机实验之前先准备需输入的3个实数(均大于11000),并将avel和ave2的预期结果写在相应语句旁。(2)用单步执行的方法观察avel和ave2的值。(3)用变量ave代替程序中的avel和ave2后,观察程序的运行结果是否有变化。(4)将变量b改为int型、“b=(long)a;”改为b=(int)a;”后,观察程序的运行结果是否有变化。分析其原因。(5)改写程序。将所有变量名的首字母改写为该变量类型的第一个字母,变量名的第二个字母改为大写;所有变量要求初始化;将3条语句“a=(avel*100+05);b=(1ong)a;ave2=b1000;”改写为一条语句。3实验目标(1)理解数据的强制类型转换用途。(2)掌握对实数的保留位进行四舍五人的方法。(3)体会不同的数据类型取值范围的差别,理解为什么在编程前应设计好合适的数据类型。4实验指导(1)为了测试四舍五入的处理方法是否正确,可在语句“avel=(x+y+z)3;”下面临时加一条语句“scanf(“f ”,&avel);”,并将第一个printf行至语句“avel=(x+y+z)3;”用注释符括起,测试完毕再将程序还原。可分别输入3456和1234测试。(2)当表达式较长、各种运算符的优先级或结合方向不明确时,可用加括号的方法确定处理顺序。第3章 顺序结构及其应用 上机指导本节将提供4个实验的指导,通过本节内容的学习和实践,读者可以体会顺序结构的应用,并巩固有关函数的定义和调用知识。【实验31】scanf()、printf()函数的使用。1实验题目输入3个学生的学号和对应学生的4门课程成绩,输出每个人的学号、4门课程成绩和平均成绩。2实验要求(1)编写一个函数,该函数的功能是输入一个学生的学号和4门课程成绩,并计算平均成绩后输出相应信息。(2)编写主函数,在主函数中调用上述函数完成本题功能。(3)按表格的形式输出,一行内输出一个学生的信息。(4)学号用长整型,各科成绩用单精度型。3实验目标(1)掌握实现人机对话形式的方法。(2)体会根据需要控制输出格式的方法。(3)学会调用函数避免重复工作。4实验指导(1)函数原型可定义为“void funrecord();”。(2)在主函数中需要调用3次funrecord()函数,代码如下: main() funrecord(); funrecord(); funrecord(); (3)在被调函数中可利用输出格式的数据宽度控制数据的对位输出。输出可按如下形式: The number and score of a student is :|-| number | scorel | score2 | score3 | score4 |average|-| 10011 | 675| 880 | 935 | 780 |8175 |-|(4)在被调函数的最后可加语句“getch();”控制暂停运行程序。请思考,若一个班有40名学生,是否要在主函数中写40条“funrecord();”语句?【实验32】getchar()、putchar()函数的使用。1实验题目用getchar()函数读人av之间的一个字母,用putchar()函数输出一个5行5列的矩阵,该矩阵第一行为读入的字母,下一行为紧跟该字母后的字母,依次类推。如输入a,则输出的矩阵为: a a a a a b b b b b c c c c c d d d d d e e e e e2实验要求(1)在主函数中输入矩阵的首行首列字符。(2)在主函数中调用函数输出一行5个同样的字符。(3)在主函数中调用getch()函数控制程序在输出矩阵后暂停以便观察运行结果。3实验目标(1)掌握getchat()、getch()1 putchar()函数的使用,并注意getchar()和getch()函数的区别。(2)通过多次调用同一个函数输出一个特殊矩阵的方法。4实验指导可按如下框架编写程序:main()函数: 读入首字符。 调用行输出函数outrow()输出第一行。 调用行输出函数outrow()输出第二行。 调用行输出函数outrow()输出第三行。 调用行输出函数outrow()输出第四行。 调用行输出函数outrow()输出第五行。 暂停程序。outrow()函数: 输出5个相同字符并换行,字符是形参值。若用本实验中的方法输出200行100列的矩阵显然不方便,这时我们改用第5章将要介绍的循环结构实现。【实验33】整数每位数字的计算。1实验题目随机生成一个3位数,计算个位数、十位数和百位数的平方之和。2实验要求(1)每次运行时产生的随机数不同。(2)先将个位数、十位数和百位数分别存放在变量中,再计算。3实验目标(1)掌握随机函数的使用,能构造出不同范围内的随机数。(2)利用整除、求余相结合的方法求出一个数的个位数、十位数和百位数等。4实验指导(1)randomize()函数能够保证每次运行程序时,random()函数产生不同的随机数。注意,randomize()函数应在random()函数前执行才起作用。(2)由于random(900产生0899范围的整数,所以random(900)+100的取值范围是100999,即随机生成一个3位数。(3)主函数可写为如下形式: main() int iN=0,iSum=0; randomize(); iN=random(900)+100; printf(”n=dn”,iN); iSum=funsum(iN); *计算每位数字平方之和* printf(”The sum of squares=dn”iSum)。 getch(); 【实验34】重量计算。1实验题目某零件截面形状如图36所示,尺寸单位为mm,其厚度为5mm,钢的密度为79gcm3,计算该零件的重量。图36零件截面图2实验要求(1)在求重量的函数funweight()中再调用求圆面积的函数funarea()。(2)在嵌套调用过程中仔细观察各参数的变化情况。3实验目标(1)函数可以嵌套调用,但各函数的定义一定要独立,而不能嵌套定义。(2)体会函数的实参和形参类型的一致性。(3)一定要弄清楚一个函数的调用结束后流程返回的位置。4实验指导(1)在程序中一定要注意计量单位。(2)可按如下框架编写程序:main()调用funweight()函数void funweight() 定义变量 给3个变量分别赋3个圆的半径值 给1个变量赋零件的厚度值 给1个变量赋密度值 调用3次funarea()函数计算3个圆的面积 计算截面面积(大圆面积一中心圆面积一8小圆面积) 计算体积(截面面积厚度)计算重量(体积密度) 输出相关信息float funarea(float fR) 定义变量 计算半径为fR的圆面积 返回圆面积)第4章 分支结构及其应用 上机指导本节将提供7个实验的指导,通过本节内容的学习和实践,读者可以更好地掌握什么样的问题用分支结构实现,以及实现分支结构的if-else和switch语句的使用。 。【实验41】3个数据的排序问题。1 实验题目输人3个学生的身高,按照身高由高到低的顺序排队。2 实验要求(1) 学生的身高从键盘输入。(2) 身高以“厘米”为单位输入,并且要精确到“厘米”。(3) 任意输入3个学生的身高,用单步执行的方法观察程序运行的过程,即排序算法的进行过程。3实验目标(1)掌握少量数据(34)个的排序算法。(2)掌握两个数交换的算法。4实验指导(1)3个数据a、b、c按由大到小的顺序进行排序的算法:先比较前两个数a、b,找出较大的数放在a中,较小的数放在b中;接着比较前两个数中的大数a与第三个数c,将大数放在a中,较小的数放在c中,至此a中的数据就是3个数中的最大数。比较第二个数据b和第三个数据c,将其中大数放在b中,小数放在c中。这样就实现了3个数据按由大到小的排序。可用如下代码实现。 if (ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(b。hour-1&hourl24&hour224。除了对输入的小时数进行正确性检验外,还要对输入的两个时间点的分、秒作正确性检验,要求分、秒数均不能超过59。(2)时问间隔的算法:用后一个时间的秒数(secd2)减去前一个时间的秒数(secdl),如果不够减,可向分钟数借1当60使用;同样用后一个时间的分钟数(mint2)减去前一个时间的分钟数(mintll),如果不够减,可向小时数借1当60使用;最后用后一个时间的小时数(hour2)减去前一个时间的小时数(hottrl),这样就可以得到两个时间点的间隔。该算法的流程图如图46所示。图46计算时间间隔的流程图【实验43】招收球员问题。1实验题目某球队招收球员必须满足如下3个条件:(1)年龄小于25岁且球龄大于5年。(2)体能状况良好(用;d;a99或“A”表示良好)。(3)参加重大比赛的场次多于20次。输入某一球员的基本条件,判断其是否能被录用。2实验要求(1)从键盘输入某个球员的相关信息。(2)写出符合球队招收球员的表达式。(3)根据写出的表达式确定球员的录用情况。3实验目标(1)根据球队对招收球员要求的3个条件,定义合适的数据类型存放球员的条件。(2)正确写出逻辑表达式。 (3)学会正确使用if语句。4实验指导(1)年龄age和球龄ballage可用整型数据表示;体能状况status可用字符型数据表示;比赛场次gamenum可用整型数据表示。(2)满足球队招收球员3个条件的表达式是:age5、status= =a|status= =A、gamenum20。(3)满足以上3个条件才能被录取,要用“逻辑与(&)”运算符将3个表达式连起 来。注意“逻辑与”运算符的优先级高于“逻辑或”。【实验44】整除问题。1实验题目输入一个正整数,判断该数是否能被5、7、9整除,并输出分别能被哪几个数据整除。2实验要求(1)详细输出数据整除的信息,能被5整除,还是能被7或9整除,还是能被5和7整除等。(2)要求用嵌套的if语句实现。(3)使用设置断点的方法调试程序。3实验目标(1)学会使用嵌套的if语句。(2)正确写出某个数据能被5、7、9整除的表达式。(3)掌握设置断点的方法。4实验指导判断某个正整数n能被5整除的表达式是n5= =0,如果表达式的值是1,表示能被5整除,否则就不能被5整除。正整数n能被7、9整除的表达式分别是n7= =0和n9= =0。要输出正整数n能被5、7、9中的哪几个数据整除需要对上述的3个表达式进行相应的组合,如数据n能同时被5、7和9整除的表达式是n5= =0&n7= =0&n9= =0,能被5和7整除的表达式是n5= =0 & n7= =0,根据这些表达式的取值情况输出相应的整除信息。部分代码如下: if(n5= =0n7= =0n9= =0) printf(”d can be divided by 5,7,9n”,n); else if(n5= =0 &n7= =0) printf(”d can be divided by 5,7n”,n);【实验45】奖学金问题。1实验题目假设根据学生的各科成绩和平均成绩以及学生的综合排名确定获得奖学金的情况。获得一等奖学金的条件是平均成绩大于85,每科成绩大于75,综合排名在前5名;获得二等奖学金的条件是平均成绩大于80,每科成绩大于70,综合排名在前10名;获得三等奖学金的条件是平均成绩大于75,每科成绩大于65,综合排名在前15名;以上条件都不符合就不能获得奖学金。输入学生的各科成绩和综合排名确定学生获得奖学金的情况。假设课程只有3门。2实验要求(1)用人机对话的形式输入3门课程成绩和班级综合排名。(2)用嵌套的if语句实现。3实验目标(1)学会使用嵌套的if语句。(2)根据给定的条件写出相应的C语言表达式。4实验指导先输入3门课程的成绩score1、score2和scote3,然后求出它们的平均成绩avescore;输入学生的综合排名sort,开始判断获得奖学金的情况。可以按照如下步骤判断:如果score175、score275、score375、avescore85、sort0、sott70、score270、score370、avescore80、sort5、sott65、score265、score365、avescore75、sort 10、sort1时第5章 循环结构及其应用 上机指导【实验51】求累加和。1实验题目编写程序,求1到n的累加和。2实验要求(1)要求分别用for语句、while语句和dowhile语句实现。(2)n的值由键盘输入。(3)不要求调用函数实现。3实验目标(1)掌握for语句、while语句和dowhile语句的一般形式。(2)掌握累加和的计算方法。4实验指导(1)在进行累加和运算时,要将存放累加和结果的变量初始值设置为0,这样才能计算出正确的结果。(2)当使用while或dowhile循环时,进入while或dowhile循环之前应给循环变量赋初值,并在循环体中改变循环变量的值。请思考,如果计算1到n的连乘积,应怎样修改程序?提示:在计算连乘积的时候,存放计算结果的变量初始值应设置为1。当n的值大于8时,存放计算结果的变量能否使用int型?【实验52】输出斐波那契级数。1实验题目编写程序,计算并输出斐波那契级数前30项数据。 2实验要求(1)用for循环实现。(2)每行输出5个数据,并按表格形式显示。3实验目标(1)掌握斐波那契级数的求解方法。(2)掌握分行输出数据的方法。4实验指导(1)斐波那契级数是这样的一组数,级数的前两个数是1,从第3个数开始各项都是该数前的两个数之和,即1,1,2,3,5,8,13,21,。(2)假设fl和f2分别表示第1项和第2项,f3表示第3项,则有如下关系:fl=1f2=1f3=f1+f2在求第4项数据时,可将f2的值当作新的fl,而刚刚求出的f3当作新的f2,即:fl=f2 f2=f3再通过f3=flq-f2关系求新的f3,即第4项数据。求第5项、第6项、第30项数据的方法与求第4项数据的方法完全相同,所以用循环的方法解决。(3)每行输出5个数的功能可用循环变量i实现,当循环变量i的值能被5整除时输出一个回车换行符。实现该功能的语句是“if(I%5= =0) printf(”n”);”。(4)选择合适的数据类型存放级数的各项数据。当计算到斐波那契级数的第24项时已经超出了整数的范围,所以为了能正确地计算出级数的各项数据,应将存放级数各项数据的变量定义为long型。【实验53】找数。1实验题目在大于100的整数中查找除以15后商和余数相等的数,并统计其个数。2实验要求(1)合理确定循环变量的最佳取值范围。(2)根据题目的要求选择合适的循环语句实现。3实验目标(1)掌握确定循环变量的取值范围的方法。(2)能写出控制循环继续执行的逻辑表达式或关系表达式。4实验指导(1)要解决该题目重点是确定循环变量的取值范围。虽然题目要求处理的是大于100的整数,但根据该数据对15求商和取余数结果相等这一条件可以确定循环变量的最大可能取值。已知任何一个正整数对15求余数后的值只能是0到14中的某一个整数,由此可知题目中要判断的最大正整数是1415,所以循环变量的取值范围应在100到1415之间。可以用for循环实现。(2)一个整数(用变量i表示)对15求商和取余数相等的判断表达式是i15= =i15。如果该表达式成立,则输出数据i,累加器n增1,否则继续判断下一个整数。【实验54】统计自然数个数。1实验题目从11开始写连续的自然数,写了若干个后发现这些数的平均值是25。编写程序统计共写了多少个自然数。2实验要求(1)调用函数实现。(2)提前退出循环时不要使用goto语句。3实验目标(1)正确选用数据类型。(2)选择合理的循环语句,写出循环体语句。(3)学会结束循环的语句使用。4实验指导(1)该题目中循环体语句要完成的功能有计算已写出数据的累加和、数据的个数加1、求出已经写出的数据的平均值、如果平均值不是25则将下一个数据累加到累加和中,重复上面的操作。当平均值是25时退出循环。(2)结束循环所用的语句是break。(3)该题目事前无法确定循环执行多少次,因此选用while语句实现比较方便。【实验55】统计投票数。1实验题目重复输入3个候选人的名字,给他们投票,最后显示每个候选人的得票数。2实验要求(1)3个人的姓名分别用字符a、b和c表示。(2)当投票的所选人姓名是“#”时结束投票。3实验目标(1)掌握统计多个数据的方法。(2)熟练字符的输入方法。(3)判断字符相等的方法。4实验指导统计投票数的操作步骤如下:(1)输入第一张投票所选人的姓名。(2)判断输入的候选人是谁,如果输入的是“a”,则“a”候选人的得票数加1;如果是“b”,则“b”的得票数加1;如果是“c”,则“c”的得票数加1。(3)输入下一张投票所选人的姓名。(4)判断投票的所选人姓名,如果姓名不是“#”,则转到(2);如果姓名是“#”,则转到(5)。(5)输出各候选人的得票结果。【实验56】求各种动物的数量。1实验题目犀牛、鹿、鸵鸟3种动物共有26个头、80只脚和20只犄角,已知犀牛有4只脚和1只犄角,鹿有4只脚和2只犄角,鸵鸟有2只脚。如果已知犀牛、鹿、鸵鸟至少有1只,则犀牛、鹿、鸵鸟各多少只?2实验要求(1)要求不调用函数实现。(2)用双重循环,采用穷举法实现题目的功能。3实验目标(1)熟练穷举法。(2)掌握嵌套循环的使用和执行过程。(3)合理确定内外循环的执行次序,缩小循环变量的取值范围,提高程序的运行效率。4实验指导(1)假设犀牛、鹿、鸵鸟的数量分别用变量x、y、z表示,由于各种动物至少要有1只,所以x、y、z的取值范围都是1至24。(2)根据题意还可以缩小变量的取值范围。3种动物的脚数是80,犀牛有4只脚,所 以犀牛最多18只(即80411);3种动物的犄角数是20,鹿有2只犄角,所以鹿最多 9只(即2021)。(3)为了提高程序的执行效率,往往把循环次数多的循环作为内循环,循环次数少的 循环作为外循环。内层循环体的语句可写成如下形式: z=26一xY; if(z0& 4*(x+y)+2*z= =80&x+2*y= =20) printf(”rhinoceros=d,deer=d,ostrich=dn”,x,y,z);【实验57】判断素数(prime number)问题。1实验题目编写程序,输入一个整型数据,判断其是否为素数。2实验要求(1)输人数据和输出判断结果的操作在主函数中实现。(2)判断素数的功能调用自己编写的函数isprime()实现。(3)当调用函数时传过来的参数为素数,则被调用函数返回的值是1;否则返回0。3实验目标(1)掌握判断素数的算法。(2)巩固for语句的使用方法。4实验指导(1)素数是指那些除了1和它自身之外,不能被其他数整除的正整数。如2、3、5、7等是素数,而4、6、8等都不是素数。(2)判断素数的方法:用该数(用n表示)不断除以2,3,4到n一1,如果n能被其中的一个数除尽,则表示该数不是素数,如果n不能被其中的任何一个数整除,则表示n是素数。 for(i =2;i=n一1;i+) if(ni = =0) return 0; return 1;实际上判断某个正整数n是否为素数,只需判断到即可,所以可将代码改写为: k=sqrt(n); for(i=2;i=k;i+) if(ni = =0) return 0; return 1;这样就可以减少循环的次数,提高程序的运行效率。当然在程序的开头必须加命令行#include。(3)在主函数中可用如下形式输出判断结果:if(isprime(n)= =1)printf(”d is a prime numbern”,n);else printf(“d is not a prime numbern”,n);第6章 指针及其应用上机指导【实验61】观察间接访问存储单元的过程。1实验题目有以下程序 #include main() char cX=t,cY=r; char *cP=NULL,*cQ=NULL; cp=cX; *指针cp指向了cX* cQ=&cY; *指针cQ指向了cY* if(*cP*cQ)*比较指针cP和eQ所指存储单元中的字符的ASCII码值的大小*/ *cP=*cP一32: else *cQ=*cQ一32: cQ=cP; *将指针cP中存放的地址值赋给指针cQ* printf(”ctetctcn”,cX,cY,*cP,*cQ): *输出cX、cY中的内容和指针cP、cQ所指存储单元的内容* 用单步执行的方法,体会程序运行时各存储单元中值的变化情况。2实验要求(1)当绿色条分别在、时,观察变量cX、cY的值和*cP、*cQ的变化情况。(2)将程序改为通过cP和cQ为cX和cY输入值的形式后再单步执行。3实验目标掌握间接访问存储单元的方法。4实验指导(1)按F7键或F8键均可以单步执行。(2)改为输入语句时可用“scanf(”cc”,cP,cQ);”,注意该语句的位置,指针变量在使用前一定要有明确的指向。【实验62】数学计算。1实验题目下面程序的功能是求出100以内所有素数的平方之和s,以及s被5除的余数r。请补充完整程序。 #include #include int prime(int iA); void fun(int iX,long *ISum,int *iRemainder);int prime(int iA) int iK=0,iM=0; iM=(int)sqrt(iA); for(iK=2;iK=iM;iK+) if(iAiK= =0)return 0; return 1;void fun(int iX,long *ISum,int *iRemainder)在此补充函数体main() int iR=0; 在此补充两行 *定义存放
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 停车场合作合同(标准版)
- 通讯设备采购合同(标准版)
- Ditolylguanidine-Standard-生命科学试剂-MCE
- Dibutyl-phenyl-phosphate-生命科学试剂-MCE
- DDOH-生命科学试剂-MCE
- 化学品(溶剂、清洗剂、油漆)泄漏应急预案
- 城市地下空间综合开发项目2025年地下旅游开发与观光可行性分析报告
- 长期承揽加工合同(标准版)
- 订货加工合同(标准版)
- 半导体行业2025年先进光刻光源解决方案深度解析
- 冠脉介入术后并发症
- 2024年全民健康生活方式宣传月专题讲座课件
- 《中小学生研学旅行实务》研学旅行指导课程全套教学课件
- 幼儿园小班语言大老鼠找小老鼠课件
- CJJ166-2011 城市桥梁抗震设计规范
- DZ∕T 0401-2022 矿山地质工作规范
- 体育学院体育教育专业《足球》必修教学大纲
- 化肥欠款协议模板
- 苏教版小学语文第一册电子课本
- “对校园欺凌说不”主题班会课件
- PLC电气控制设计污水处理系统样本
评论
0/150
提交评论