




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多重循环第6课1例1:求三位数中的水仙花数。(若abc是水仙花数,则有abc=a3+b3+c3)例如:153=13+53+33分析:采用穷举法,从100-999中搜索,将每个数的三个数字分解出来,再计算立方和,最后与原数比较,如果相等,则是符合条件的三位数.
for(m=100;m<=999;m++){a=m/100;b=m%100/10;c=m%10;if(a*a*a+b*b*b+c*c*c==m)cout<<m;}2水仙花数,也可以采用另外一种方法:对三位数的三个数字进行穷举.百位数字:1—9十位数字:0---9个位数字:0---9for(a=1;a<=9;a++)for(b)for(c)if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)cout<<a<<b<<c;这是一个三重循环,外层循环做一次,内层循环必须全部做完,具体如下:c=0(100)c=1(101)b=0……b=1c=9(109)b=2a=1b=3……b=9a=23例2:用5元钱买100只纽扣,其中金属纽扣每只5角,有机玻璃纽扣每只1角,小钮扣1分钱3个,编程求出种纽扣各买了多少只?方法一:for(x=1;x<=100;x++)for(y=1;y<=100;y++)for(z=1;z<=100;z++)if(x+y+z==100&&50*x+10*y+z/3.0==500)cout<<x<<y<<z;运算次数:100*100*100=100万方法二:for(x=1;x<=10;x++)for(y=1;y<=50;y++){z=100-x-y;if(50*x+10*y+z/3.0==500)cout<<x<<y<<z;}运算次数:10*50=5004例3:判断素数:素数又叫质数,是指除了1与本身以外没有另外约数的数,其中1既不是素数不是合数,2是自然数中最小的质数。程序要求,输入一个数n,判断n是不是质数,如果是输出”yes”,如果不是,输出“no”。
cin>>n;k=0;if(n==1)cout<“no”;else{for(i=2;i<=n-1;i++)if(n%i==0)k=1;if(k==0)cout<<“yes”;elsecout<<“no”;}K是标记范围可优化至int(sqrt(n))找到一个约数,可以中断当前循环根据标记的值,从而进行判断请你根据优化后的方案改写出程序5P1119:求1—N中的素数的个数.(1<=N<=10000)思路:s=0;cin>>n;
for(i=2;i<=n;i++){
判断i是不是素数,如果是s=s+1;}
cout<<s<<endl;6P1118、求1—N中的完全数,所谓完全数是指因子和正好等于本身的数。如28=1+2+4+7+14,故28就是一个完全数。告诉你的是此范围内的完全数不可能是完全平方数。输入:N输出:1-N中的完全数,一行一个数。数据范围:1<=N<=10000思路:
for(i=1;i<=n;i++){求i的因子和,用S存放;
if(s==i)cout<<i<<endl;}S=0;for(j=1;j<=i/2;j++)if(i%j==0)s=s+j;上述做法的运算次数是:N*N称为时间复杂度1秒的运算次数=2^25==3.3*10^7(8位数)二重循环10000*10000,所以上面的的算法只能到100007[例3]编写程序,在屏幕上显示下列图形的n行,每行的个数是m,m、n均由键盘输入(m<20,n<30),如:n=4,m=6时输出如下的图形,第一行前面没有空格。************************分析:若不考虑图形的错位关系,而直接打印一个矩形的图形,为n行,每行M个,那么n行可用计数循环实现(大循环),每行的个数也可以用计数循环实现(小循环):
cin>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
cout<<“*”;
cout<<endl;{每行结束时换行};}k=0;用来控制空格的个数for(j=1;j<=k;j++)
cout<<““;//输出K个空格K=k+1;8[例4]输出如下的n行(n<20)图形,n由键盘输入。如:n=6时,输出如下的图形,第一行前没有空格###########{11个}#########{9个}#######{7个}#####{5个}###{3个}#{1个}分析:用二重循环解决:大循环控制行数,小循环控制每行的个数.第i行与个数的关系式:个数=2*i-16行5行4行3行2行1行11=6*2-19=5*2-17=4*2-1……1=1*2-1cin>>n;for(i=n;i>=1;i--){
for(j=1;j<=2*i-1;j++)
cout<<“#”;
cout<<endl;}{怎样控制位置}9P1123:
112112321123432112345432112345654321123456765432112345678765432112345678987654321cin>>n;for(i=1;i<=n;i++){控制空格的个数;
前一半;
后一半;
cout<<endl;}分析:采用二重循环,大循环产生N行,小循环产生每一行.for(j=1;j<=I;j++)cout<<j;for(j=i-1;j>=1;j--)cout<<j;10P1121:N=3时,输出如下的图形:edcba
cbaa分析:i从大到小,第i行的个数是2*i-1,第1行字母从ea对应的数字从5-->1,用ASCII码来转换,5+961+96For(j=5;j>=1;j--){chark=96+j;
cout>>k;}定义一个字符型变量K,K取一个整数值,输出K的值的时候就会输出ASCII码对应的字符。54321321111P1122135791357分析:第i行的个数是2*i-1,输出的数字从1开始,每次加2,如果超过9,则返回1.
cin>>n;x=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019-2025年一级注册建筑师之建筑结构能力检测试卷B卷附答案
- 2025年3月隐蔽工程影像存档补充协议条款
- 自由探索的班级工作计划
- 2025商务合同谈判策略全解「」
- 2025写字间租赁合同
- 设计有趣的班级互动游戏计划
- 闲置钢管改造方案范本
- 如何让年度工作计划更具可持续性
- 课程与德育融合的创新实践计划
- 2025家庭护理服务合同范例
- 解除租赁合同的协议
- 2025-2030中国碳纤维预浸料行业市场现状供需分析及投资评估规划分析研究报告
- 2025届天津市十二区重点学校高三下学期毕业联考(一)英语试题(含答案)
- 2025-2030中国机器人码垛系统行业市场发展趋势与前景展望战略研究报告
- 2025年上半年广东深圳市光明区建筑工务署招聘特聘专干一般专干7人重点基础提升(共500题)附带答案详解
- 新工科背景下大学化学课程的创新与实践探索
- 2024年中国机械工业集团有限公司国机集团总部招聘笔试真题
- 2025年湖北省高考模拟检测卷(二)-解析卷
- 《卵石动物造型》游戏课件
- 部编版语文三年级下册第六单元集体备课
- 2025年长春师范高等专科学校单招职业技能考试题库必考题
评论
0/150
提交评论