还剩7页未读,继续阅读
文本内容:
实验三程序流程控制结构专业班级学号姓名实验学时2实验类型验证+简单设计实验地点4号楼网络实验室实验时间指导老师成绩教师批语年月日
1、实验目的学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,熟练掌握 if语句和 switch语句,掌握在程序设计中灵活使用顺序结构和选择结构,掌握 while、for、do…while 循环结构的使用方法以及循环条件的使用;能够使用三种循环结构设计程序、分析程序并解决实际问题;掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换
2、实验内容1有一个函数 编写程序计算y的值用 scanf函数输入 x 的值分别为 x≤0,1x10,x≥10,输出 y的值运行程序,察看并分析程序执行结果请将编译通过的程序抄写在下边的空白处#includestdio.hvoid__in{intxy;printf请您输入一个数\n;scanf%dx;ifx=1y=x;elseif1xx=10y=5*x-10;elseifx10y=10*x-20;printfx=%dy=%d\nxy;}运行结果请您输入一个数59x=59y=570Pressanykeyyocontinue2给出一个不多于 5 位的正整数,要求求出它是几位数;分别输出每一位数;按逆序输出各位数字,例如原数为 5631,应输出为 1365运行程序,察看并分析程序执行结果#includestdio.hvoid__in{intabcdenum;printf请输入一个不多于五位的整数\n;scanf%d\nnum;ifnum0||num99999printf输入有误\n;else{a=num/_____;b=num/1000%10;c=num/100%10;d=num/10%10;e=num%10;}ifa!=0{printfnum是一个五位数\n;printf%d%d%d%d%d\nabcde;printf逆序数为\n;printf%d%d%d%d%d\nedcba;}elseifb!=0{printfnum是一个四位数\n;printf%d%d%d%d\nbcde;printf逆序数为\n;printf%d%d%d%d\nedcb;}elseifc!=0{printfnum是一个三位数\n;printf%d%d%d\ncde;printf逆序数为\n;printf%d%d%d\nedc;}elseifd!=0{printfnum是一个二位数\n;printf%d%d\nde;printf逆序数为\n;printf%d%d\nde;}else{printfnum是一个一位数\n;printf%d\ne;}}输出结果请输入一个不多于五位的整数56985698是一个四位数5698逆序数为8965pressanykeytocontinue3某人从汽车销售公司以分期付款的方式__一辆总价为
14.5万元的小客车约定__款为5万元,未付款部分以
5.8%的年利率按月计息,从买车后的第7个月开始每月付款3000元编写程序计算此人付清余款后最终支出了多少利息?先画流程图后写程序#includestdio.hvoid__in{doublemlixi;intic=6;m=
14.5lixi=0;printf__车花费
14.5万元\n;m=m-5;printf__5万元后剩余%f\nm;fori=1;i=6;i++{lixi=lixi+m*
0.058/12;m=m*1+
0.058/12;}printf六个月后产生利息为%f万元\nlixi;printf本息和为%f万元\nm;printf从第七个月开始每月付
0.3万元\n;printf***************\n;fori=1;;i++{c=c+1;lixi=lixi+m*
0.058/12;m=m*
0.058/12+1-
0.3;{ifm0{printf********\n;printf第%d月;\nc;printf本息和为m=%f万元\nm;printf利息%f万元;\nlixi;}elsebreak;}}printf********\n;printf最后一个月;\n;lixi=lixi+m*
0.058/12;printf利息%f万元;\nlixi;printf********\n;printf总共支付利息%f万元\a\nlixi;}__车花费
14.5万元__5万元后剩余
9.500000六个月后产生利息为
0.278850万元本息和为
9.778850万元从第七个月开始每月付
0.3万元***********************第7月;本息和为m=
9.526115万元利息
0.326115万元;********第8月;本息和为m=
9.272158万元利息
0.372158万元;********第9月;本息和为m=
9.016973万元利息
0.416973万元;********第10月;本息和为m=
8.760555万元利息
0.460555万元;********第11月;本息和为m=
8.502__8万元利息
0.502__8万元;********第12月;本息和为m=
8.243995万元利息
0.543995万元;********第13月;本息和为m=
7.983841万元利息
0.583841万元;********第14月;本息和为m=
7.722430万元利息
0.622430万元;********第15月;本息和为m=
7.459755万元利息
0.659755万元;********第16月;本息和为m=
7.195810万元利息
0.695810万元;********第17月;本息和为m=
6.930590万元利息
0.730590万元;********第18月;本息和为m=
6.664088万元利息
0.764088万元;********第19月;本息和为m=
6.396298万元利息
0.796298万元;********第20月;本息和为m=
6.127213万元利息
0.827213万元;********第21月;本息和为m=
5.856828万元利息
0.856828万元;********第22月;本息和为m=
5.585136万元利息
0.885136万元;********第23月;本息和为m=
5.312131万元利息
0.912131万元;********第24月;本息和为m=
5.037806万元利息
0.937806万元;********第25月;本息和为m=
4.762156万元利息
0.962156万元;********第26月;本息和为m=
4.485173万元利息
0.985173万元;********第27月;本息和为m=
4.206851万元利息
1.006851万元;********第28月;本息和为m=
3.927184万元利息
1.027184万元;********第29月;本息和为m=
3.646166万元利息
1.046166万元;********第30月;本息和为m=
3.3637__万元利息
1.0637__万元;********第31月;本息和为m=
3.080047万元利息
1.080047万元;********第32月;本息和为m=
2.794934万元利息
1.094934万元;********第33月;本息和为m=
2.508443万元利息
1.108443万元;********第34月;本息和为m=
2.220567万元利息
1.120567万元;********第35月;本息和为m=
1.931300万元利息
1.131300万元;********第36月;本息和为m=
1.640634万元利息
1.140634万元;********第37月;本息和为m=
1.348564万元利息
1.148564万元;********第38月;本息和为m=
1.055082万元利息
1.155082万元;********第39月;本息和为m=
0.760182万元利息
1.160182万元;********第40月;本息和为m=
0.463856万元利息
1.163856万元;********第41月;本息和为m=
0.166098万元利息
1.166098万元;********最后一个月;利息
1.166257万元;********总共支付利息
1.166257万元Pressanykeytocontinue4一个人大代表选区,要从甲、乙、丙、丁4个候选人中选人大代表请编写一个计票程序先画出程序流程图后写程序#includestdio.hvoid__in{intabcde;charch;a=b=c=d=e=0;printf投票数为\n;scanf%c\nch;whilea=ch=e{switchch{casea:a++;break;caseb:b++;break;casec:c++;break;cased:d++;break;default:e++;printfa=甲的得票数,b=已的得票数,c=丙的得票数,d=丁的得票数,e=弃权\nabcde;ifabacadprintf甲获选为人大代表\n;ifbabcbdprintf已获选为人大代表\n;ifcacbcdprintf丙获选为人大代表\n;ifdadbdcprintf丁获选为人大代表\n;
3、实验总结通过本次试验,我发现自己对if语句和swith语句不够熟练掌握,不能正确使用逻辑运算符和逻辑表达式以及关系运算符和关系表达式,在上机操作时有一定的困难因此,我以后会多加练习实验四模块化程序设计专业班级学号姓名实验学时2实验类型验证实验地点4号楼网络实验室实验时间指导老师成绩教师批语年月日
1、实验目的掌握函数的定义方法,及函数调用的形式;掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;了解全局变量、局部变量、动态变量及静态变量的概念和使用方法
2、实验内容1分析下面程序给出运行结果本题要求理解和掌握函数的定义和调用#include stdio.h int fint i ;void __in { int ij; for i=0;i5;i++{j=fi;printf%d%d ij;}} int fint i{returni*i1; }
①运行程序,察看并分析程序执行结果用单步执行的方式追踪程序的运行过程,并说明上述程序的执行方式运行结果0,-1,1,0,2,3,3,8,4,15,Pressanykeytocontinue
②函数void __in 中的变量i与函数int fint i中的变量i,是同一个变量吗?___?答函数void __in 中的变量i与函数int fint i中的变量i不是同一个变量因为它们虽然公用同一个标识符,但各自作用域不同2下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递理解函数的嵌套调用#includestdio.h#defineN10voidsel_sortintx[]intn;int__xintx[]intn;void__in{inta[N]i;fori=0;iN;i++scanf%da[i];sel_sortaN;fori=0;iN;i++printf%da[i];}voidsel_sortintx[]intn{intij;fori=n;i0;i--{j=__xxi;inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}int__xintx[]intn{intij=0;fori=1;in;i++ifx[i]x[j]j=i;returnj;}
①上机编辑,调试程序;#includestdio.h#defineN10voidsel_sortintx[]intn;int__xintx[]intn;void__in{inta[N]i;fori=0;iN;i++scanf%da[i];sel_sortaN;fori=0;iN;i++printf%da[i];}voidsel_sortintx[]intn{intij;fori=n;i0;i--{j=__xxi;inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}int__xintx[]intn{intij=0;fori=1;in;i++ifx[i]x[j]j=i;returnj;}
②用两组数据,给出程序运行结果;将测试结果写在下面运行结果3567432816761325659910548运行结果5686__4687__24634852132098724___33204685215686__987Pressanykeytocontinue
③程序中有几个函数?它们之间的调用关系是什么?答程序__有3个函数,voidsel_sortintx[]intn函数调用了int__xintx[]intn函数;__in函调用了voidsel_sortintx[]intn函数
④voidsel_sortintx[]intn与int__xintx[]intn两个函数在程序中的作用各是什么?答int__xintx[]intn它传递了一个数组名和数组元素个数,求出该数组元素中的最大元素的下标,并且使用voidsel_sortintx[]intn调换该组数组元素最大元素与最后一个元素的位置,该函数意义为选择排序
⑤用单步执行,观察程序执行的流程并用流程图描述程序的实现;并回答什么是函数的嵌套调用?注流程图以函数为模块来画答函数的嵌套调用指的是被调用的函数内容里面又调用了其它函数3输入以下程序,编译运行并回答问题#includestdio.hvoidauto_staticvoid{intva=0;staticintvs=0;printfva=%dvs%d\nvavs;++va;++vs;}void__in{inti;fori=0;i5;i++auto_static;}运行结果va=0vs0va=0vs1va=0vs2va=0vs3va=0vs4Pressanykeytocontinue
①函数voidauto_staticvoid中变量va与vs的数据类型是什么?他们的存储类别各是什么类别的?答函数voidauto_staticvoid中变量va与vs的数据类型都是int型,va的存储类型是动态存储类,而vs是静态存储类
②程序在每次调用voidauto_staticvoid时va与vs都初始化为0了,且都进行了相同的++运算,但是va与vs却有不同的值,这是___?请解释出现不同值的原因答va是动态存储类,是在被调函数内声明的局部变量,该变量会随着函数的调用结束而释放vs变量虽然也是在被调用函数内声明的,也是局部变量但是它的定义是静态的局部变量存储类型是静态存储类,该变量在函数调用结束不会释放,而且保留原值,这也就是上面程序中,vs与va变量有不同值的原因
3、实验总结通过本次试验,我发现自己混淆了“值传递”与“地址传递”的方式与区别,对函数的嵌套调用与递归调用的设计方法不是很清楚,我今后会多看书,多操作,来弥补自己的不足。