- 4
- 0
- 约1.81万字
- 约 20页
- 2020-11-10 发布于山东
- 举报
言常用算法
一、基本算法
1.交 (两量交 借助第三者)
例 1、任意 入两个整数,将二者的 交 后 出。
main()
{int a,b,t;
scanf(%d%d,a,b);
printf(%d,%d\n,a,b);
t=a; a=b; b=t;
printf(%d,%d\n,a,b);}
【解析】程序中 加粗 部分 算法的核心,如同交 两个杯子里的 料,必 借助第三个空杯子。
假 入的 分 3、7, 第一行 出 3, 7;第二行 出 7, 3。
其中 t 中 量,起到“空杯子”的作用。
注意 :三句 句 号左右的各量之 的关系!
【 用】
例 2、任意 入三个整数,然后按从小到大的 序 出。
main()
{int a,b,c,t;
scanf(%d%d%d,a,b,c);
/* 以下两个 if 句使得 a 中存放的数最小 */
if(ab){ t=a; a=b; b=t;
}
if(ac){ t=a; a=c; c=t; }
/* 以下 if 句使得 b 中存放的数次小 */
if(bc) { t=b; b=c; c=t; }
printf(%d,%d,%d\n,a,b,c);}
2.累加
累加算法的要 是形如“ s=s+A ”的累加式,此式必 出 在循 中才能被反复 行,从而
累加功能。 “ A ”通常是有 律 化的表达式, s 在 入循 前必 得合适的初 , 通常 0。
例 1、求 1+2+3+ ?? +100 的和。
main()
{int i,s;
s=0;
i=1;
while(i=100)
{ s=s+i;
i=i+1;
/* 累加式 */
/* 特殊的累加式
*/
}
printf(1+2+3+...+100=%d\n,s);}
【解析】程序中 加粗部分 累加式的典型形式, 号左右都出 的 量称 累加器,其中“ + 1” 特殊的累加式,每次累加的 1, 的累加器又称 数器。
i = i
言常用算法
3.累乘
累乘算法的要 是形如“ s=s*A ”的累乘式,此式必 出 在循 中才能被反复 行,从而
累乘功能。 “ A ”通常是有 律 化的表达式, s 在 入循 前必 得合适的初 ,通常 1。
例 1、求 10!
[分析 ]10 ! =1× 2× 3×??× 10
main()
{int i; long c;
c=1; i=1;
while(i=10)
{ c=c*i; /* 累乘式 */
i=i+1;
}
printf(1*2*3*...*10=%ld\n,c);}
二、非数 算常用 典算法
1.
也称 “枚 法” ,即将可能出 的每一种情况一一 ,判断是否 足条件,一般采用循 来 。
例 1、用 法 出所有的水仙花数 (即 的三位正整数: 其每位数位上的数字的立方和与 数
相等,比如: 13+5 3+33=153)。
[法一 ]
main()
{int x,g,s,b;
for(x=100;x=999;x++)
{g=x%10; s=x/10%10; b=x/100;
if(b*b*b+s*s*s+g*g*g==x)printf(%d\n,x);}
}
【解析】此方法是将 100 到 999 所有的三位正整数一一考察,即将每一个三位正整数的个位数、
十位数、百位数一一求出(各数位上的数字的提取算法 下面的“数字 理” ),算出三者的立方
和,一旦与原数相等就 出。共考 了 900 个三位正整数。
[法二 ]
main()
{int g,s,b;
for(b=1;b=9;b++)
for(s=0;s=9;s++)
for(g=0;g=9;g++)
if(b*b*b+s*s*s+g*g*g==b*100+s*10+g)
printf(%d\n,b*100+s*10+g);
}
【解析】 此方法是用 1 到 9 做百位数字、 0 到 9 做十位和个位数字, 将 成的三位正整数与每一
的三个数的立方和 行比 , 一旦相等就 出。 共考 了 900 个 合(外循 独 行的次数 9,
两个内循 独 行的次数分 10 次,故 if 句被 行的次数 9× 10× 10=900 ),即 900 个
三位正整数。与 法一 判断的次数一 。
语言常用算法
2.排序
( 1)冒泡排序(起泡排序)
假设要对含有 n 个数的序列进行升序排列,冒泡排序算法步骤是:
①从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前
者大后者小,则交换两数的位置;
②第①趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数
第二个元素,依次对相邻两数进行比较,若前者大后者
您可能关注的文档
- 完整版装饰工程技术交底记录.docx
- 完整版装饰材料与施工工艺教学大纲.docx
- 完整版裕兴新概念英语第二册笔记第49课.docx
- 完整版裕兴新概念英语第二册笔记第50课.docx
- 完整版西医内科学循环系统笔记总结.docx
- 完整版西安这座城练习题含答案.docx
- 完整版西师大版五年级数学下册知识点、考点汇总.docx
- 完整版西师版二年级数学上册期末测试题.docx
- 完整版西师版五年级上册数学期末试题一.docx
- 完整版西师版六年级上册第一单元测试题.docx
- 2026内蒙古鄂尔多斯市准格尔旗中心医院招聘护理专业技术人员16人备考题库及参考答案详解.docx
- 2026内蒙古鄂尔多斯市伊金霍洛旗自主招聘成熟教师29人备考题库及答案详解一套.docx
- 2026内蒙古鄂尔多斯市伊金霍洛旗选聘旗蒙医综合医院院长1人备考题库含答案详解.docx
- 2026年信息技术在环境监测中的应用报告.docx
- 汽车车辆电子防滑系统专题培训课件.ppt
- 山东省淄博市2025-2026学年高三下学期高考模拟物理试卷.docx
- 2026年信息技术在基础教育中的应用报告.docx
- 2026内蒙古鄂尔多斯市伊金霍洛旗自主招聘成熟教师29人备考试题及答案详解一套.docx
- 2026内蒙古鄂尔多斯市伊金霍洛旗招聘优秀退休教师6名备考题库及参考答案详解一套.docx
- (29页PPT)第2课时左右x.pptx
原创力文档

文档评论(0)