




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证eq\o\ac(□,√)综合□设计□创新实验日期:2023.04.16实验成绩:实验3控制语句二.实验目的1.熟练掌握if、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原那么,利用if语句和switch语句实现分支选择结构。2.熟练掌握while语句、do...while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。三.实验内容选择结构程序设计;if语句的使用;使用switch语句实现多分支选择结构;三种循环语句的应用;循环结构的嵌套;break和continue语句的使用。三.实验环境PC微机DOS操作系统或Windows操作系统Visualc++程序集成环境四.实验内容和步骤本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。学会单步调试和断点调试程序及变量跟踪方法。1.通过键盘输入一个字符,判断该字符是数字字符、大写字母、小写字母、空格还是其他字符。2.编程实现:输入一个整数,判断该数的正负性和奇偶性之后,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。要求:〔1〕将变量定义为整型。〔2〕输入整数前,利用cout给出提示信息。〔3〕输出结果时要有必要的说明,例如:输入358时,显示358is100to999。〔4〕该程序利用if语句实现。运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。3.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分成5个等级,90-100分为A级,80-89分为B级,70-79分为C级,60-69分为D级,0-59分为E级。要求在输入负数时,给出错误提示。①事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。②再运行一次程序,输入分数为负值〔如-70〕,这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错〞,程序结束4.某航空公司规定:在旅游旺季7~9月份,如果订票20张及其以上,优惠票价的10%,20张以下,优惠5%;在旅游淡季1~6月份,10~12月份,订票20张及其以上,优惠票价的20%,20张以下,优惠10%。编写一个C程序,根据月份和旅客订票张数决定优惠率。机票单价,请算出旅客的总付款。请使用不同的测试数据进行测试。5.编写程序:根据公式,输出π的值。要求:〔1〕变量π为单精度类型,n为整型;〔2〕计算当n的取值分别为20,50,100,200时的π值,说明什么问题?〔3〕修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4为止。〔4〕对修改后的程序,输出π值以及总的项数n。输出格式为:π=值;n=值。6.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子〔例如:输入12,其因子为1,2,3,4,6,12〕。要求:〔1〕采用while循环语句实现。〔2〕输出格式为:Input:12Output:1,2,3,4,6,127.计算并输出N以内最大的10个素数以及它们的和,N为用户任意输入的正整数〔如:1000〕。要求:〔1〕在程序内部加必要的注释。〔2〕由于偶数不是素数,可以不考虑对偶数的处理。〔3〕需要考虑N以内的素数个数没有超过10个的情况处理。(4)输出形式为:素数1+素数2+素数+…+素数10=总和值。五.实验数据及处理结果/*写出实验内容的算法〔用流程图表示〕、完整的程序、结果并能对结果的正确性及上机时产生的问题进行分析,*/习题一:问题分析:输入一个字符,要判断其的字符形式,可以用单个字符的ascll码值采用if结构进行选择,分步判断字符的类型。数据需求:输入数据:单个字符常量a;输出数据:1请输入一个字符a:;2这是空格〔a==''〕、这是小写字母(a<='z'&&a>='a')、这是大写字母(a<='Z'&&a>'A')、这是数字(a>='0'&&a<='9')、这是其他符号〔a非上述符号时,输出〕。〔〕内为公式(以下各题都如此表示)。算法设计:输入字符a判断字符的类型输出字符类型程序实现:#include<iostream>#include<cstdio>usingnamespacestd;intmain(){chara;cout<<"请输入一个字符a:";//提示输入字符aa=getchar();if(a=='')//判断a的字符类型cout<<"这是空格";elseif(a<='z'&&a>='a')cout<<"这是小写字母";elseif(a<='Z'&&a>'A')cout<<"这是大写字母";elseif(a>='0'&&a<='9')cout<<"这是数字";elsecout<<"这是其他符号";}程序测试:习题二:问题分析:对于输入的数字A,首先要判断其正负和奇偶,再判断其取值范围。数据需求:输入数据:数字A,输出数据:A是负偶数〔A<0&&A%2==0)、A是0〔A==0〕、A是正偶数〔A>0&&A%2==0〕、A是负奇数〔A<0&&A%2!=0〕、A是正奇数〔A>0&&A%2!=0〕、A小于10〔A<10〕、A在10到99〔10<A<99〕、A在100到999〔100<=A<=999〕、A大于1000〔A>1000〕算法设计:输入数字A判断A的正负和奇偶输出A的正负和奇偶性判断A的取值范围输出A的取值范围程序实现:程序测试:#include<iostream>usingnamespacestd;intmain(){inta;cout<<"请输入数字A:"<<endl;cin>>a;if(a%2==0)if(a<0)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"是负偶数"<<endl;elseif(a==0)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"是0"<<endl;else//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"是正偶数"<<endl;elseif(a<0)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"是负奇数"<<endl;else//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"是正奇数"<<endl;if(a<10)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"小于10"<<endl;elseif(a>=10&&a<=99)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"在10到99之间"<<endl;elseif(a>=100&&a<=999)//当a满足条件时,执行下一句cout,否那么执行elsecout<<a<<"在100到999之间"<<endl;else//a大于1000时,输出以下语句cout<<a<<"大于等于1000"<<endl;}程序实现:习题三:问题分析:对于学生成绩判断等级,输入附负数时,应该报错,可以用if或switch语句进行编译,选择好条件,可以解决。数据需求:输入数据:学生成绩gra,输出数据:ERROR(C=abs(gra),gra-C=0||gra+1>101)、E〔gra/10=0,1,2,3,4,5〕、D(gra/10=6)、C(gra/10=7)、B(gra/10=8)、A(gra/10=9),A(gra+1=101)算法设计:输入成绩A判断成绩是否在0~~100如果不在,报错,程序结束如果在,那么判断其成绩所在档次输出等级程序实现:#include<iostream>#include<cmath>usingnamespacestd;intmain(){intgra,C;//定义整形变量cout<<"Pleaseinputyourgrade:"<<endl;cin>>gra;C=abs(gra);//对gra取绝对值,赋值给Cswitch(gra-C){default:cout<<"ERROR!";break;//gra为负数,报错case0:switch(gra/10)//gea为非负数{case0:case1:case2:case3:case4:case5:cout<<"E";break;//gra在0到59分为E级case6:cout<<"D";break;case7:cout<<"C";break;case8:cout<<"B";break;case9:cout<<"A";break;default:switch(gra+1){case101:cout<<"A";break;//gra为100,输出Adefault:cout<<"Thegradeoutnumbers100!";break;//gra大于100,报错}}}}第二种方法:#include<iostream>#include<cmath>usingnamespacestd;intmain(){intgra;//定义变量cout<<"Pleaseinputyourgrade:"<<endl;cin>>gra;if(gra>=0&&gra<60)//gra在0到59分为E级cout<<"E";elseif(gra>=60&&gra<70)cout<<"D";elseif(gra>=70&&gra<80)cout<<"C";elseif(gra>=80&&gra<90)cout<<"B";elseif(gra>=90&&gra<=100)cout<<"A";elsecout<<"ERROR";//分数不在0到100,报错}程序测试:第一种:第二种:习题四:问题分析:顾客在购票时,输入日期和飞机票的张数,根据输入信息综合判断所优惠的工程。运用if语句可以书写。数据需求:输入需求:需要客户给出乘机月份Mon和乘机人数Num,输出信息:月份为7~9月份,如果订票20张及其以上,票价Sum=Num*Cost*10%,20张以下,Sum=Cost*Num*5%;为1~6月份或10~12月份,订票20张及其以上,票价Sum=Num*Cost*20%,20张以下,Sum=Num*Cost*10%算法设计:输入Cost,Num,Mon判断Mon是否在7到9月在,那么判断Sum>=20?不在,判断Sum>=20?是,那么Sum=Num*Cost*10%否,那么Sum=Cost*Num*5%是,那么Sum=Num*Cost*20%否,那么Sum=Num*Cost*10%输出Sum;程序实现:#include<iostream>usingnamespacestd;intmain(){intNum,Mon;floatSum,Cost;cout<<"pleaseenterpriceofticketeach"<<endl;cin>>Cost;//给票价赋值cout<<"Pleaseenterthemunberofticketsyouwanttooeder:"<<endl;cin>>Num;cout<<"Pleaseenterthemonth(innumber,like:Januaryis1)youwanttotravel:"<<endl;cin>>Mon;if((Mon>=1&&Mon<=6)||(Mon>=10&&Mon<=12))//购票在1到6月或者10到12月时,执行以下语句if(Num<20)//订票小于20张,执行以下语句Sum=Num*Cost*0.9;else//订票大于等于20张执行以下语句Sum=Num*Cost*0.8;elseif(Num<20)//在7到9月定票时,且小于20张,执行以下语句Sum=Num*Cost*0.95;else//在7到9月定票时,且大于20张,执行以下语句Sum=Num*Cost*0.9;cout<<"Youneedtopaytheamountis:"<<Sum<<"$";//输出总费用}程序测试:第五题:问题分析:首先,要计算1除以n的平方〔取1到n值〕,while循环累加求和,直到满足条件为止。数据需求:输入数据:n,输出数据:π=PI,〔I+=1/(i*i);i++;PI=sqrt(PI*6);〕算法设计:第一个:PI=0,i=1输出Pleaseentern:输入n当i<=n时,执行PI+=1/(i*i);i++;直到i不满足条件PI=sqrt(PI*6)输出π=PI第二个:PI=0,a=3,i=1当a>=1e-4,执行a=1.0/(i*i);I=PI+a;i++;直到i不满足条件PI=sqrt(PI*6);i=i-1;输出π=PI程序实现:第一个:#include<iostream>#include<cmath>usingnamespacestd;intmain(){intn,i=1,a;floatPI=0;//定义变量cout<<"Pleaseentern:"<<endl;cin>>n;while(i<=n)//当i<=n时执行循环{PI+=1/(i*i);i++;}PI=sqrt(PI*6);//将PI乘以6再开平方cout<<"π="<<PI;}第二个:#include<iostream>#include<cmath>usingnamespacestd;intmain(){inti=1;floatPI=0,a=3;//定义变量while(a>=1e-4)//当a>=1e-4时,执行循环{a=1.0/(i*i);//将1/i*i赋值给aPI=PI+a;//对a求和i++;}PI=sqrt(PI*6);//对PI乘以6再开平方赋值给PIi=i-1;cout<<"π="<<PI<<";"<<"n="<<i;}程序测试:第一个:说明输入的数字越大,PI越确第二个:习题六:问题分析:对于求整数的因子,只要一个一个数的尝试就可以了,满足条件就输出,建立一个while循环就可以了。数据需求:输入数据:整数Nnm,输出数据;Pleaseenteraintegerbetween0to1000:Input:NumOutput:Deter,公式:Deter=Num/i;if(Num%i==0〕,输出Deter,输出Num,算法实现:输出Pleaseenteraintegerbetween0to1000:输入Num输出Input:NumOutput:i=Num当i>1时,Deter=Num/i;如果Num%i==0输出DEter和;i--,执行该循环,直到i不满足条件;输出Num程序实现:#include<iostream>usingnamespacestd;intmain(){intNum,i,Deter;//定义变量cout<<"Pleaseenteraintegerbetween0to1000:"<<endl;//原样输出cin>>Num;cout<<"Input:"<<Num<<endl<<"Output:";i=Num;while(i>1)//在i>1时,执行循环{Deter=Num/i;if(Num%i==0)//当Num能被i整除,那么Deter是Num的因子cout<<Deter<<",";i--;}cout<<Num;//输出最大的因子Num}程序测试:第七题:问题分析:对输入的数字Num偶判断,如果是偶数,那么减去1,变成奇数,赋值给Num,对Num进行整除运算,假设只有1和数字本身能整除数字,即输出该数字,否那么数字减2,再进行上述计算,直到输出10个数字或者Num小于1时,对于10个最大素数中含有2的要单独进行讨论,运用选择结构进行编译,同时需要在输出素数是进行素数求和,输出素数和。数据需求;输入数据:Num;输出数据:Num的最大素数相加的形式以及它们的和。对于Num小于等于30,i=3,b=1,〔做循环时,两个数字都需回归3和1〕,首先使得Num为奇数,做循环b=nNum%i,i=i+2,直到b=0,判断此时i是否等于Num+2,是那么输出Num+,并求和Sum+=Num;Num-=2,做循环,直到Num=3,Sum+=2,输出2+,运用退格符,输出等=Sum。对于大于30的数,i=3,b=1,〔做循环时,两个数字都需回归3和1〕,首先使得Num为奇数,做循环b=nNum%i,i=i+2,直到b=0,判断此时i是否等于Num+2,是那么输出Num+,并求和Sum+=Num;Num-=2,做循环,直到求出10个素数。以下步骤输出和上述一样。算法设计;b=1,sum=0输出Pleaseenterapositiveintger:判断输入数字的范围n==1n==2n>2&&n<=30n>30输出1isn'ttheprime输出2=2判断n是否为偶数,是偶数,那么n=n-1做循环1当判断条件n!=1,循环控制变量n-=2做for循环3,初始条件c=0判断条件c<10循环控制变量n=n-2i=3,b=1i=n做循2循环条件b!=0。计算b=n%i;i+=2;b=n%i;i+=2;循环2出去后,判断i是否等于n+2,是的,那么sum+=n,并输出数n和+号,否那么不做改变。后回到循环1开头循环4出去后,判断i是否等于1,是的,那么sum+=n,并输出数n和+号,c++,sum+=n,输出数n和+号,否那么不做改变。后回到循环3开头Sum+=2输出2+输出'\b'=sum程序实现:#include<iostream>usingnamespacestd;intmain(){intn,i,b=1,c,sum=0;cout<<"Pleaseenterapositiveintger:";cin>>n;if(n==1)cout<<"1isn'ttheprime";elseif(n==2)cout<<"2=2";else{if(n>2&&n<=30){if(n%2==0)n=n-1;//将数字n变成奇数for(;n!=1;n-=2){i=3;b=1;while(b!=0)//对n进行整除取余运算,当b=0时,跳出循环{b=n%i;i+=2;}if(i==(n+2))//当i=n+2时,即n只能被自身整除时{sum+=n;cout<<n<<"+";}}sum=sum+2;//n数中的素数包括2,故sum加上2cout<<"2+";}elsefor(c=0;c<10;n=n-2){if(n%2==0)n=n-1;i=n;while(b!=0){i-=2;b=n%i;}b=1;if(i!=1)continue;//i不等于1时,此时n不是素数,回到for循环,c++;//i=1,计数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校教师提升学业评价素养的策略及实施路径
- 2025年移动应用程序开发与设计考试试题及答案
- 2025年文化产业管理专业毕业生考试试题及答案
- 2025年社会政策与社会保障专业知识测试卷及答案
- 2025年金融分析师职业资格考试试卷及答案
- 2025年计算机网络安全考试试题及答案
- 2025年供应链金融与风险控制的综合能力考试题及答案
- 特价餐具仓库管理制度
- 特殊手术麻醉管理制度
- 特殊环节瓦斯管理制度
- 一通三防培训课件
- 2024年河南省三门峡市灵宝市小升初数学试卷
- 肝硬化护理查房课件
- 竞赛试卷(试题)-2023-2024学年六年级下册数学人教版
- 网络空间安全概论智慧树知到期末考试答案2024年
- 政务新闻摄影技巧培训课件
- 2024年山东公务员考试行测真题及解析【完美打印版】
- 中国十大名画
- 岗位胜任力评估表
- 夏季企业安全知识培训
- 立式机组轴线调整及瓦间隙计算
评论
0/150
提交评论