您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > E__resources_yhb_第3章+控制结构程序设计
第三章程序控制结构通过本章实验作业应达目标1.熟练掌握格式输入与格式输出函数与各种格式符的使用,掌握各类数据输入/输出的实现方法;2.学会正确使用关系与逻辑运算,熟练构建关系与逻辑表达式;3.练习并熟练掌握if、switch语句使用,实现二路与多路选择结构;4.熟悉while、for、do_while、break、continue语句的作用与使用规范,能使用while语句、for语句、do_while语句实现循环结构;5.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。6.进行算法设计训练,能综合所学控制结构语句解决一般问题。本章必须上交作业第一部分输入/输出作业要求程序3_3.c上传至。源程序可以.cpp命名。第二部分分支结构作业要求程序3_5.c、3_6.c、3_8.c上传至。第三部分循环控制结构作业要求程序3_9.c、3_10.c、3_11.c、3_13.c、3_14.c、3_16.c、3_19.c上传至。第一部分顺序结构与输入/输出程序设计实验一一个三位数逆序输出【实验目的】了解顺序程序结构,学习调试程序。【实验内容】下面程序功能:键盘输入一个三位数,输出逆序后的数。例如,输入236,输出632。程序中有多处错误,改正后在机器上调试通过。程序以3_1.c命名。#includestdio.hvoidmain(){intx,inty;inta,b,c;a=x/100;b=x/10%10;c=x%10;printf(Pleaseinputanum:);scanf(%d,&x);y=100c+10b+a;printf(y=%d\n,y);}【思考】如果输入的数据可以是任意大小的数,并不限制一定是一个三位数,怎样才能将该数逆序并输出?实验二字符数据输入/输出【实验目的】学习字符数据的输入与输出,学习getchar()/putchar()函数使用。【实验内容】用getchar()函数输入两个字符给c1、c2,然后分别用putchar()分别输出这两个字符,再输出它们的ASCII。程序以3_2.c命名。【思考】能否将输入的两个字符转换大小写后再一次输出?即输入是大写字符则输出对应小写字符,输出小写字符则输出对应的大写字符。实验三复数乘法【实验目的】学习格式化输入/输出操作。【实验内容】编写程序读入两个复数并输出这两个复数的乘积。输入输出如下图。程序以3_3.c命名并上交。程序运行时用户只须输入两个复数的实部与虚部。【提示】程序运行时屏幕首先显示:输入3,回车后屏幕再次给出输入提示virtualpart:输入2,回车后屏幕显示该复数,并给出输入第二个复数的提示。输入第二个复数的实部与虚部,最后输出这两个复数相乘得到的第三个复数。注意,C中是没有复数数据类型的,可以用两个变量表示一个复数,分别记录复数的实部与虚部。复数的计算实质是对实部与虚部的计算,结果放在相应表示复数实部与虚部的变量里。第二部分分支结构程序设计实验一大小写转换【实验目的】熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。【实验内容】下面程序希望完成大小写字母转换功能。若输入一个大写字母,则转化为小写输出;若输入小写字母则转化为大写输出;对其他字母则原样不变输出。程序以3_4.c命名,运行程序,分别输入一次大写、一次小写字母、一次‘#’进行验证。如果程序有错,请改正。#includestdio.hvoidmain(){charch;ch=getchar();if('a'=ch='z')ch-=32;if('A'=ch='Z')ch+=32;putchar(ch);putchar('\n');}实验二算术运算【实验目的】学习if~else、switch语句的使用。【实验内容】键盘输入一个算术的运算式子,输出运算结果。这里我们规定可以接收五个算术运算的符号:+、-、*、/、^(乘方)。程序以3_5.c命名并上交。下图是输入输出的示意图:输入一个加法的算术式:输入一个除法的算术式:输入一个乘方的算术式:求3的平方根:【实验提示】本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运算并将结果保存下来并输出。C语言本身是没有乘方运算符的,可以调用数学函数pow(x,y)求x的y次方。注意一定要包含math.h。【思考】输入的表达式实质是按多个不同类型的数据来获取数据的。程序中需要定义多个变量来接收表达式中包含的数据与运算符,并设计相应的输入/输出函数实现。实验三金额计算【实验目的】学习分析与解决实际问题的能力,综合嵌套使用if~else或switch语句。【实验内容】某服装店经营套服。以50套为限,若购买数量不少于50套,每套80元;不足50套时每套90元;只买上衣每件60元;只买裤子每条45元。编写程序实现:读入所买上衣c和裤子t的数量,计算应付款总量。程序以3_6.c命名并上交。实验四利息计算【实验目的】综合使用选择结构语句,解决实际问题。【实验内容】RMB现期银行整存整取利率如下表:时间年利率(%)活期0.72半年2.43一年2.79二年3.33三年3.96五年4.41编写程序,要求输入存款总额(以元为单位)与存款期限(以月为单位),计算并输出到期时的利息总额、利息税(20%)与实得利息。两档期限之间以活期计算,如存款期限为50个月,则36个月按3.96%计算利息,14个月按0.72%计算利息。程序以3_7.c命名。实验五判断天数【实验目的】熟练使用switch语句,并设计精巧程序。【实验内容】按yyyy-mm-dd格式输入一个日期,如2004-10-31,判断这是这一年的第几天。程序以3_8.c命名并上交。【实验提示】以2004-10-31为例,先把前九个月的天数加起来,然后再加上31天。需要考虑的是,当年是闰年,2月为29天,否则2月为28天。也可以2月固定按28天计算,当年是闰年且月份大于2时,多加一天。第三部分循环程序设计1.循环设计循环是在循环条件为真时重复执行一组循环体语句的控制结构,是计算机解题的一个基本结构。循环控制有两种基本方法:计数法和标志法。(1)计数器控制的循环事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。(2)标志控制的循环事先不知道准确的循环次数,由某一目标值标记循环的结束。如,例3-23中以变量sum的值达到标记值1000作为循环的结束,例3-24中就是以键盘输入一个负数为标记结束循环。2.基本算法程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。循环主要用来解决程序设计中两类基本的算法:穷举和迭代。1.穷举算法穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。例3-1输入两个正整数x和y,求其最大公约数。#includestdio.hvoidmain(){intx,y,i,flag;flag=1;/*flag是标志变量,当其值为0时表示已找到公约数*/printf(Pleaseinputtwonumbers:);scanf(%d%d,&x,&y);for(i=xy?x:y;flag==1;)if(x%i==0&&y%i==0)flag=0;/*条件满足,就改变标志变量的值*/elsei--;printf(greatestcommondivisor=%d\n,i);}两个数中的小者到1之间任何一个数都有可能是公约数,因此用变量i从大到小一一穷举,直到找到为止。若两数互质,当i==1时也能使条件满足。2.迭代算法按照特定规律和方法,重复地由旧值递推出新值,并由新值代替旧值,直至问题解决为止,这种解决问题的方法为迭代。迭代的关键因素是:迭代初值、迭代公式和迭代次数(精度要求)。例3-2使用辗转相除法求两数的最大公约数。辗转相除法:如果x除以y的余数为0,则除数y就是最大公约数,或余数不为0,则被除数x被除数y取代,除数y被余数取代,再用新的x除以新的y,判断余数是否为0,如果不为0,则重复此迭代过程,直至余数为0,此时的除数y即为最大公约数。#includestdio.hvoidmain(){intx,y,temp;printf(Pleaseinputtwonumbers:);scanf(%d%d,&x,&y);temp=x%y;while(temp!=0){x=y;/*迭代*/y=temp;/*迭代*/temp=x%y;}printf(greatestcommondivisor=%d\n,y);}运行时输入:66121输出:greatestcommondivisor=11各值的变化如下:xytemp=x%y6612166121661166110实验一简单的循环设计【实验目的】学习设计一个循环,能进行循环变量的初始化,循环条件的设计与循环变量值的修正。【实验内容】编写程序,输入一个整数x,按下式输出对应的y值。程序以3_9.c命名并上交。为偶数为奇数xxxxy642531【指导】简单循环结构,通常方法是设计一个循环变量i,让其在初值与终值之间变化控制控制循环实现,循环条件通常是:i≤终值。如:for(i=初值;i≤终值;i=i+步长)循环体语句;实验二整数按位折分求和【实验目的】学习设计与控制循环,并熟练%(求余)运算。【实验内容】输入一个不大于2×109(用long型数据)的正整数x,求这个数每位数字之和。例如,若输入33456781,输出37。程序以3_10.c命名并上交。【提示】设计循环,每次求出x的个位数(使用求余运算)并累加到和值变量中,再迭代操作,改变x的值,使原来的十位变个位。【讨论与思考】long型数据的最大值是2147483647,受变量类型限制,本程序只能接收不大于2×109的正整数。如果进行扩充,要求能接收并计算一个30位整数的各位之和,那么数据类型应如何设置,程序应该如何编写?实验三最值求解【实验目的】学习在多个数据中求取最大最小值,并设计用控制的循环。【实验内容】键盘输入一组学生成绩,输入以-1作为输入的结束。统计这批数据的最大值,最小值,平均值。程序以3_11.c命名并上交。【提示】这里的循环并不由循环变量的值来进行控制了,需要根据输入的数据来控制循环,并需要设计变量来统计循环执行的次数。实验四打印数字塔图形【实验目的】学习使用循环语句构成的多重循环嵌套。【实验内容】编写程序,使用循环输出如下图所示的数字塔图形。程序以3_12.c命名。【提示】此图形上下对称,可将程序分为上下两部分实现。上半部输出9行,下半部输出8行。每一行包含三部分内容:开始的空格、中间的数字及最后的换行符。需要考虑的是字符个数与行号的关系。下面程序用于输出如下*字符塔,供本题参考。#includestdio.hvoidmain(){inti,j;clrscr();/*清屏*/for(i=1;i=9;i++)/*行循环*/{for(j=1;j=9-i;j++)/*输出行左空格*/printf();for(j=1;j=2*i-1;j++)/*输出若干*字符*/printf(%c,'*');printf(\n);/*换行*/}}实验五寻找素数【实验目的】领会并牢固掌握素数算法,深入循环结构设计。【实验内容】从键盘输入一个大于3的正整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。程序以3_13.c命名并上交。实
本文标题:E__resources_yhb_第3章+控制结构程序设计
链接地址:https://www.777doc.com/doc-2873293 .html