资源描述:
《c语言程序设计实验报告2》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验2流程控制实验2.1实验目的(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。(2)熟练运用for、while、do-while语句来编写程序。(3)练习转移语句和标号语句的使用。(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。2.2实验内容及要求2.2.1.源程序改错下面是计算s=n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完
2、成指定任务。例如,8!=40320。1#include2intmain()3{inti,n,s=1;4printf("Pleaseentern:");5scanf("%d",n);6for(i=1,i<=n,i++)7s=s*i;8printf("%d!=%d",n,s);9}10return0;解答:(1)错误修改:1)输入字符格式错误,正确形式为:scanf(“%d”,&n);2)return0;与}的相对位置错误,正确形式为:return0;}(2)错误修改后的程序:#includeint
3、main(){inti,n,s=1;printf("Pleaseentern:");scanf("%d",n);for(i=1,i<=n,i++)s=s*i;printf("%d!=%d",n,s);return0;}(3)运行结果:图12.2.1源程序改错测试图2.2.2.源程序修改替换(1)修改第1题,分别用while和do-while语句替换for语句。替换为While语句1)在判断while语句前,要先定义i=1,再执行while语句。替换后的程序如下所示:#includeintmain(){inti,n
4、,s=1;printf("pleaseentern:");scanf("%d",&n);i=1;while(i<=n){s=s*i;i++;}printf("%d!=%d",n,s);return0;}2)运行截图及说明图22.2.2(1)while语句测试图替换为do-while语句1)要先定义i=1,再执行while语句。替换后的程序如下所示:#includeintmain(){inti,n,s=1;printf("pleaseentern:");scanf("%d",&n);i=1;do{s=s*i;i++
5、;}while(i<=n);printf("%d!=%d",n,s);return0;}2)运行截图及说明图32.2.2(2)do-while语句测试图(2)修改第1题,输入改为“整数S”,输出改为“满足n!≥S的最小整数n”。例如输入整数40310,输出结果为n=8。1)解题思路:先定义S,x=1,i=1,输入S,判断x<=S,如果为真,则有x=x*i,i=i+1,再返回判断x<=s,直至值为假,输出i-1的值。源程序为:#includeintmain(){intS;intx=1,i=1;printf("请输入
6、整数S:");scanf("%d",&S);while(x<=S){x=x*i;i=i+1;}printf("满足n!>=S的最小整数n是%d",i-1);return0;}2)运行截图及说明图42.2.2(3)程序测试图2.2.3.程序设计(1)假设工资税金按以下方法计算:x<1000元,不收取税金;1000≤x<2000,收取5%的税金;2000≤x<3000,收取10%的税金;3000≤x<4000,收取15%的税金;4000≤x<5000,收取20%的税金;x>5000,收取25%的税金。输入工资金额,输出应收取税金额度,
7、要求分别用if语句和switch语句来实现。解答:if语句:1)解题思路:1.定义浮点数工资金额x,应收取税金额为y。2.输入工资金额x,判断x属于哪一个收入范围。3.如果x<1000,则y=0。4.如果x>=1000且x<2000,则y=5%*(x-1000)=0.05*x-50。5.如果x>=2000且x<3000,则y=5%*1000+10%*(x-2000)=0.1x-150。6.如果x>=3000且x<4000,则y=5%*1000+10%*1000+15%*(x-3000)=0.15x-300。7.如果x>=4000且
8、x<5000,则y=5%*1000+10%*1000+15%*1000+20%*(x-4000)=0.2x-500。8.如果x>=5000,y=5%*1000+10%*1000+15%*1000+20%*1000+25%*(x-5000)=0.25