版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第三章课后练习题答案,单项选择题 A A C BB C C A C C A A D B C A D B B D D D 判断题,2,求100内所有素数之和,先回忆求素数的算法 算法分析:一个数如果除了能被1和它本身整除以外,再也不能被其它整数整除,则称这个数为素数。 设:n为一个任意整数 令:k=2,3,n-1 则:若n%k!=0,n是素数;否则,只要k值中有一个能整除n,n就不是素数(需要退出循环,3,判断一个数是否为素数的流程图,4,include using namespace std; void main(void) int n,k,f=1; coutn; for(k=2;kn;k
2、+) if(n%k=0) f=0; break; if(f=1) coutn is a prime.endl; else coutn is not a prime.endl;,5,include #include using namespace std; void main(void) int i,j,sum=0; for(i=2;i=i) coutsetw(4)i; /输出每一个素数 sum=sum+ i; /对所有素数求和 coutendl100之内的素数之和为:sumendl;,方法一: 算法思想:在判断一个数是否为素数的基础上,对2到100内的所有整数进行判断,若为素数则累加求和,6,
3、include iostream.hvoid main() int m,j,i=0,sum=0,h; for(m=2;m=100;m+) sum=sum+m; /求100以内所有整数之和 for (m=2;m=100;m+) for(j=2;jm;j+) if(m%j=0) i=m+i; break; /i为100内所有非素数之和 h=sum-i; /h即为100内所有素数之和 couth;,方法二: 算法思想:先求出100以内所有整数之和,然后求出所有非素数之和,则两者之差即为100以内所有素数之和,7,2. 输入一台计算机的编号和该计算机的价格,并输出这些信息。(如编号为109876543
4、21,价格为5998.00元,注意此处计算机的编号作为一个整数而言超出了int所定义的变量的存储范围,因此只能用double型变量来存储,但输出时要求看见的是整数形式的编号,include using namespace std; void main( ) double price,code; coutcode; coutprice; coutfixed; cout.precision(0); /设置输出格式 coutThe computers code is codeendl; cout.precision(2); /小数点后保留2位 coutThe computers price is p
5、riceendl;,8,3. 输入三个同学的学号,计算机和英语课程的考试成绩,并输出这些信息。要求每个同学的三个信息输出在同一行上,三行输出信息要各列对齐,include #include using namespace std; void main( ) int code1,code2,code3; double c1,c2,c3,e1,e2,e3; coutcode1c1e1; coutcode2c2e2; coutcode3c3e3; coutsetw(10)学号setw(10)计算机setw(10)英语endl; coutsetw(10)code1setw(10)c1setw(10)e
6、1endl; coutsetw(10)code2setw(10)c2setw(10)e2endl; coutsetw(10)code3setw(10)c3setw(10)e3endl;,9,6.有一个函数,输入x的值,输出相应的函数值。 (提示:x取值分大于零和小于等于0的两段,对输入的x值,在计算前应判断范围,采用不同的计算公式。,include using namespace std; void main() double x,y; coutx; if(x0) y=x+1; else y=x*x; couty=yendl;,10,7 实现一个简单的菜单程序,运行时显示 Menu: A(dd
7、) D(elete) S(ort) Q(uit) Select one: 要求用户提供相应的输入,并在用户输入A,D,S时分别提示“数据已经增加、删除、排序”,输入为Q时程序结束。 (提示:该程序要求用户输入特定的A,D,S,Q字符显示相应信息,所以适合采用switch结构。,11,include using namespace std; void main() char x; coutx; switch(x) case A: case a:cout数据已经增加endl;break; case D: case d:cout数据已经删除endl;break; case S: case s:cou
8、t数据已经排序endl;break; case Q: case q:exit(0);break; default:cout输入错误!endl;,12,8.某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。具体标准见下表: 要求:输入客户购买产品的糧,输出客户类型(批发或零售客户)、产品单价及应付的总额。(提示:产品的批发和零售是根据客户购买产品的数量来确定的,产品的价格也与购买产品的数量有关。产品数量是否超过50决定了客户是否是批发商,而产品数量的5个段决定了5种不同的价格。可采用if嵌套形式实现。,13,include #include usin
9、g namespace std; void main() int number,price,money; string sort; coutnumber; if(number50) sort=批发商; if(number40)price=12; else if(number20) price=15; else price=18; money=price*number; coutsetw(10)客户类型setw(10)产品单价setw(20)应付款总额endl; coutsetw(10)sortsetw(10)pricesetw(20)moneyendl;,注意嵌套的选择结构中,if else的
10、配对关系,14,10.已知一函数,输入x的值,求解并输出相应的y值。 (提示:该题根据x的取值范围采用不同公式来计算y的值。显然采用if选择结构可实现该程序。,include using namespace std; void main() double x,y; coutx; if(x=1,15,include using namespace std; void main() int k,s=0; for(k=1;k=100;k+) if(k%2=0) continue; s=s+k; cout“s=”sendl;,11.求100以内奇数之和,16,14. 输入一整数,将各位数字反转后输出
11、分析:将一个整数反转输出,即先输出个位,然后输出十位、百位、.。可以采用不断除以10取余数的方法,直到商数等于0为止,这是一个循环过程,回忆第2章练习题:已知int a=3467,写出计算其个、十、百、千位的表达式。 解:a%10, a/10%10, a/100%10, a/1000%10或a/1000,17,include using namespace std; void main( ) int n,num; cout n; cout The number in reverse order is: ; do num = n % 10; cout num; n /= 10; while (n
12、!=0); cout endl;,18,18,思考题:输入一整数,求出它的反序数,分析:在前一个例题的基础上,我们可以对一个整数的各位逆序输出。如何产生一个整数的反序数呢? 例如:2340 反序输出第1个数字(个位):0 此时逆序数为:0 反序输出第2个数字(百位):4 此时逆序数为:0*10+4(输出的第1个数字需往十位移动,即往左移动1位) 反序输出第3个数字(百位):3 此时逆序数为:0*10*10+4*10+3 (输出的第1个数字移向百位,第2个数字移向十位) 反序输出第4个数字(千位):4 此时逆序数为: 0*10*10*10+4*10*10+3*10+4 (输出的第1个数字移向千位
13、,第2个数字移向百位,第3个数字移向十位,19,思考题:输入一整数,求出它的反序数,include using namespace std; void main( ) int n,num=0; cout n; while (n!=0) num*=10; /输出数字左移1位 num=num+n%10; / 求逆序数 n/=10; /*从原始数据中去掉已经反序输出的数位,为获取下一个反序输出数字做准备*/ cout The number in reverse order is: numendl;,反序输出整数n,n=0,n%10 num,输出num,n/10n,20,15. 求两整数的最大公因数和
14、最小公倍数 分析:假定两个整数分别为p和q,最大公约数应当是不超过其中较小数的一个整数。 辗转法:用p除以q,求出余数r,如果r=0,则当前q就是最大公约数,如果r!=0,令p=q, q=r, 重复以上过程,直到r=0为止,21,算法伪代码,1. 如果pq ,交换p和q ; 2. 求p/q的余数r; 3. 如果r=0,则q是所求的结果; 否则重复 令p=q, q=r,求p/q的余数r,直到r=0为止,则q就是原来两个正整数的最大公因数 4. 最小公倍数=原来两数的积/最大公因数,22,include using namespace std; void main( ) int p, q, r,a
15、,b; / 变量定义,p,q,r,a,b / 提示用户由键盘输入两个正整数 coutpq; a=p; b=q; /保留原来p,q的值,分别放在a,b中 /保证p为大数,q为小数 if(pq) r=p; p=q; q=r; /交换p,q,23,计算 p 除 q 的余数 r r=p%q; / 只要 r 不等于 0, 重复进行下列计算 while(r!=0) p=q; q=r; r=p%q; /辗转法 cout 两个正整数的最大公因数是qendl; cout 两个正整数的最小公倍数是a*b/qendl;,24,include iostream.h void main() int i,j,k; for
16、(i=1;i=4;i+) /输出前四行图案 for(k=1;k=4-i;k+) cout ; for(j=1;j=4-k+i;j+) if(j=1|j=4-k+i) cout*; else cout ; coutendl;,16. 请绘制如下所示的空心菱形,方法一,25,for(i=1;i=3;i+) /输出后三行图案 for(k=1;k=i;k+) cout ; for(j=1;j=7-2*i;j+) if(j=1|j=7-2*i) cout*; else cout ; coutendl;,26,include #include void main() int i,j,num; coutnu
17、m; for(i=-num;i=num;i+) for(j=-num;j=num;j+) if(abs(i)+abs(j)=num) cout*; else cout ; coutendl;,方法二,27,17. 甲、乙两支乒乓球队进行比赛,没对各出3人。甲队为A、B、C3名球员,乙队为X、Y、Z3名球员,并以抽签方式决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请给出3队选手的名单,思路分析: 将A,B,C分别用数字1,2,3表示 根据队员的叙述可得到如下的表达式: X!=1 A不与X比赛 X!=3 C不与X比赛 Z!=3 C不与Z比赛 题目还隐含着一个条件:乙
18、队3名队员不能相互比赛,即有:X!=Y 且 X!=Z 且 Y!=Z,28,include using namespace std; void main() int x,y,z; for(x=1;x=3;x+) /穷举乙队X所有可能的比赛对手 for(y=1;y=3;y+) /穷举乙队Y所有可能的比赛对手 for(z=1;z=3;z+) /穷举乙队Z所有可能的比赛对手 if(x!=1,方法一,29,include using namespace std; void main() char x,y,z; for(x=A;x=C;x+) for(y=A;y=C;y+) for(z=A;z=C;z+) if(x!=A,方法二,30,实验五(2):设计一个程序,将从键盘上输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省盐城市大丰区共同体2025-2026学年初三下学期期末考试物理试题(A卷)含解析
- 2026年大学大一(酒店运营管理)酒店收益管理策略制定阶段测试题及答案
- 老年尿失禁护理策略2026
- 护理职业安全与安全生态化
- 护理课件设计软件排行榜
- 带状疱疹康复期的护理要点
- 护理查房标准化操作指南
- 护理专业知识:患者心理护理
- 慢性肾炎患者的感染防控
- 2026年医疗废物转运管理试题及答案
- 2026年无锡工艺职业技术学院单招职业技能考试题库有答案详解
- 物业服务标准与质量管理手册(标准版)
- 2025年监理工程师《案例分析(交通运输工程)》真题及答案
- 2026年全国高考体育单招考试模拟语文试题试题(含答案)
- 2026春教科版科学二年级下册教学计划及进度表
- GB/T 24016-2026环境管理环境报告鉴证指南
- 《工程勘察设计收费标准》(2002年修订本)
- 一种用于无人天车定位的编码尺系统
- 轻型钢结构工程设计专项资质标准
- 标准色卡(建筑类)下载
- GB_T 10112-2019 术语工作 原则与方法(高清版)
评论
0/150
提交评论