版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西南交大计算机C第三章习题答案2求100内所有素数之和先回忆求素数的算法算法分析:一个数如果除了能被1和它本身整除以外,再也不能被其它整数整除,则称这个数为素数。设:n为一个任意整数令:k=2,3,n-1则:若n%k!=0,n是素数;否则,只要k值中有一个能整除n,n就不是素数(需要退出循环)。3判断一个数是否为素数的流程图f=1,k=2knn%k=0k=k+1f=1TFFTf=0n是素数n不是素数TF结束开始4#include using namespace std;void main(void) int n,k,f=1; coutn; for(k=2;kn;k+) if(n%k=0) f=
2、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=100;i+) for(j=2;j=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以内所有素数之和。2. 输入一台计算机的编号和该计算机的价格,并输出这些信息。(如编号为,价格为5998.00元
4、,注意此处计算机的编号作为一个整数而言超出了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 priceendl;3. 输入三个同学的学号,
5、计算机和英语课程的考试成绩,并输出这些信息。要求每个同学的三个信息输出在同一行上,三行输出信息要各列对齐。#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)e1endl;coutsetw(10)code2setw(10)c
6、2setw(10)e2endl;coutsetw(10)code3setw(10)c3setw(10)e3endl; 6.有一个函数,输入x的值,输出相应的函数值。(提示:x取值分大于零和小于等于0的两段,对输入的x值,在计算前应判断范围,采用不同的计算公式。)#includeusing namespace std;void main()double x,y;coutinput x:x;if(x0)y=x+1;elsey=x*x;couty=yendl;7 实现一个简单的菜单程序,运行时显示Menu:A(dd) D(elete) S(ort) Q(uit)Select one:要求用户提供相应
7、的输入,并在用户输入A,D,S时分别提示“数据已经增加、删除、排序”,输入为Q时程序结束。(提示:该程序要求用户输入特定的A,D,S,Q字符显示相应信息,所以适合采用switch结构。)#includeusing namespace std;void main()char x;coutMenu:endl;cout“tA(dd)”endl; /*t为转义字符,表示制表符,即键盘 上的“Tab”键*/couttD(elete)endl;couttS(ort)endl;couttQ(uit)endl;coutx;switch(x)case A:case a:cout数据已经增加endl;break;
8、case D:case d:cout数据已经删除endl;break;case S:case s:cout数据已经排序endl;break;case Q:case q:exit(0);break;default:cout输入错误!endl;8.某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。具体标准见下表: 要求:输入客户购买产品的糧,输出客户类型(批发或零售客户)、产品单价及应付的总额。(提示:产品的批发和零售是根据客户购买产品的数量来确定的,产品的价格也与购买产品的数量有关。产品数量是否超过50决定了客户是否是批发商,而产品数量的5个段决定了
9、5种不同的价格。可采用if嵌套形式实现。)#includeiostream)#include#includeusing namespace std;void main()int number,price,money;string sort;cout请输入客户购买的产品数量:number;if(number50)sort=批发商;if(number40)price=12;elseif(number20) price=15;else price=18;money=price*number;coutsetw(10)客户类型setw(10)产品单价setw(20)应付款总额endl;coutsetw(
10、10)sortsetw(10)pricesetw(20)moneyendl;注意嵌套的选择结构中,if else的配对关系!10.已知一函数,输入x的值,求解并输出相应的y值。(提示:该题根据x的取值范围采用不同公式来计算y的值。显然采用if选择结构可实现该程序。)#includeusing namespace std;void main()double x,y;coutinput x: x;if(x=1&x10)y=2*x-1;elsey=3*x-11;couty=yendl;15#includeusing namespace std;void main() int k,s=0; for(k
11、=1;k=100;k+) if(k%2=0) continue; s=s+k; cout“s=”sendl; 11.求100以内奇数之和1614. 输入一整数,将各位数字反转后输出分析:将一个整数反转输出,即先输出个位,然后输出十位、百位、.。可以采用不断除以10取余数的方法,直到商数等于0为止,这是一个循环过程。回忆第2章练习题:已知int a=3467,写出计算其个、十、百、千位的表达式。解:a%10, a/10%10, a/100%10, a/1000%10或a/100017#include using namespace std;void main( ) int n,num;cout
12、n;cout The number in reverse order is: ;donum = n % 10;cout num;n /= 10;while (n!=0);cout endl; 输入整数nn=0n%10 num输出numn/10n18思考题:输入一整数,求出它的反序数分析:在前一个例题的基础上,我们可以对一个整数的各位逆序输出。如何产生一个整数的反序数呢?例如:2340反序输出第1个数字(个位):0 此时逆序数为:0反序输出第2个数字(百位):4 此时逆序数为:0*10+4(输出的第1个数字需往十位移动,即往左移动1位)反序输出第3个数字(百位):3 此时逆序数为:0*10*10
13、+4*10+3 (输出的第1个数字移向百位,第2个数字移向十位)反序输出第4个数字(千位):4 此时逆序数为: 0*10*10*10+4*10*10+3*10+4 (输出的第1个数字移向千位,第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 Th
14、e number in reverse order is: numendl;反序输出整数nn=0n%10 num输出numn/10n2015. 求两整数的最大公因数和最小公倍数分析:假定两个整数分别为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. 最小
15、公倍数=原来两数的积/最大公因数22#include using namespace std;void main( ) int p, q, r,a,b; / 变量定义,p,q,r,a,b / 提示用户由键盘输入两个正整数 cout Please input two integer numbers:pq; 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
16、%q; /辗转法 cout 两个正整数的最大公因数是qendl;cout 两个正整数的最小公倍数是a*b/qendl; 24#include iostream.hvoid main() int i,j,k; for(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. 请绘制如下所示的空心菱形方法一25for(i=1;i=3;i+) /输出后三行图案 for(k=1;k=i;k+) cout ; for(j=1;j=7-2
17、*i;j+) if(j=1|j=7-2*i) cout*; else cout ; coutendl; 26#include #include void main() int i,j,num; coutnum; for(i=-num;i=num;i+) for(j=-num;j=num;j+) if(abs(i)+abs(j)=num) cout*; else cout ; coutendl; 方法二17. 甲、乙两支乒乓球队进行比赛,没对各出3人。甲队为A、B、C3名球员,乙队为X、Y、Z3名球员,并以抽签方式决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请给出
18、3队选手的名单。27思路分析:将A,B,C分别用数字1,2,3表示根据队员的叙述可得到如下的表达式: X!=1 A不与X比赛 X!=3 C不与X比赛 Z!=3 C不与Z比赛题目还隐含着一个条件:乙队3名队员不能相互比赛,即有:X!=Y 且 X!=Z 且 Y!=Z28#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&x!=3&z!=3&x!=y&x!=z&y!=z) coutX wil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通风机安装工艺施工方案
- 2026辽宁沈阳市福寿养老产业发展有限公司招聘备考题库及参考答案详解1套
- 2026浙江台州市椒江经济开发区管理委员会编外人员招聘1人备考题库及一套答案详解
- 2026江苏金服数字集团有限公司招聘11人备考题库有答案详解
- 2026广西钦州钦北区长滩镇卫生院招聘9人备考题库及答案详解参考
- 2026上半年广东汕头市市属医疗卫生机构招聘189人备考题库完整参考答案详解
- 西南财经大学经济学院(数字经济方向)教师招聘备考题库及1套完整答案详解
- 2026江苏苏州市太仓市资产经营集团有限公司第一批次招聘备考题库及一套参考答案详解
- 2026贵州黔南州都匀供销产业发展(集团)有限公司招聘2人备考题库及参考答案详解1套
- 2026河南新乡工程学院附属学校中学成手、骨干教师招聘备考题库及完整答案详解1套
- 2026年西双版纳州妇幼保健院医护人员招聘笔试备考题库及答案详解
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识2025解读
- 商业综合体智能化系统
- 医学影像处理-荧光素钠辅助脑胶质瘤手术体会
- 不动产权籍调查表2
- GB/T 7253-2019标称电压高于1 000 V的架空线路绝缘子交流系统用瓷或玻璃绝缘子元件盘形悬式绝缘子元件的特性
- GB/T 16839.1-2018热电偶第1部分:电动势规范和允差
- Unit-10-The-Sad-Young-Me教学讲解课件
- 《社会学概论新修(第五版)》课件第一章
- GB4962-2008氢气使用安全技术规程完整
- 浙江省台州市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
评论
0/150
提交评论