第一篇:C语言算法的特性三种基本结构的流程图
C语言算法的特性三种基本结构的流程图
C语言算法有如下特性:
有穷性:一个算法应现金网96y.org包含有限的操作步骤而不能是无限的。
确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。
有零个或多个输入。
有一个或多个输出。
有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。
对于程序设计人员,必须会设计算法,并根据算法写出程序。
在C语言中,有三种基本的程序结构:顺序结构、选择结构和循环结构。
顺序结构:
选择结构:
循环结构:
三种基本结构的共同特点:
q07i5.org
只有一个入口;
只有一个出口;
结构内的每一部分都有机会被执行到;
结构内不存在死循环。
第二篇:算法、流程图教案
算法、流程图
教学目标:
①了解算法的含义、算法的思想.
②理解程序框图的三种基本逻辑结构:顺序、选择、循环.
③理解几种基本算法语句—输入语句、输出语句、赋值语句、条件语句、循环语句的含义.考情分析:
①高考对本章的考查主要以填空题的形式出现,单独命题以考查考生对流程图的识别能力为主,对算法语言的阅读理解能力次之。
② 算法可结合在任何试题中进行隐性考查,因为算法思想在其他数学知识中的渗透是课标的基本要求,常见的与其他知识的结合有分段函数,方程,不等式,数列,统计等知识综合,以算法为载体,以算法的语言呈出,实质考查其他知识。
1.(必修3P11练习2改编)下面的流程图表示了一个____________________的算法.
2.(必修3P34复习7改编)图中的伪代码运行后输出的结果为________.
3.为了在运行如下所示的伪代码后输出的y值为16,应输入的整数x=________.S←0Read xIf x<0 Thena←x2 y←x+1For I From 1 To 9 Step 2Else(第3题图)
S←S+a×I
(第4题图)2 y←x-2 a←a×-1End IfEnd ForPrint yPrint S4.(必修3P24习题7改编)阅读伪代码,若使这个算法执行的结果是-1+3-5+7-9的计算结果,则a的初始值x是________.
1.算法: 2.流程图:
流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序.
3.构成流程图的图形符号及其作用 起止框用““” ” 输入、输出框用“
” 处理框用“
” 判断框用4.基本的算法结构(顺序结构、选择结构、循环结构)5.伪代码
赋值语句:
用符号“x←y”表示 输入语句:“Read a,b” 输出语句:“Print x” 条件语句: If A Then
B Else
C End If 其中A表示判断的条件,B表示满足条件时执行的操作内容,C表示不满足条件时执行的操作内容,End If表示条件语句结束.
循环语句:“For”语句和“While”语句.“For”语句的一般形式为For I From “初值” To “终值” Step “步长” „ End For.例1 写出下列用伪代码描述的算法执行后的结果. 下列用条件语句描述的算法: Read x If x≤10 Then
p←0.35x Else
p←3.5+0.7(x-10)End If Print p 若输入x=18,则p=________.例2 如图,如果执行下面流程图,那么输出的S等于________.
反馈练习
1.(2011·福建文)下列用伪代码描述的算法执行后的结果是________. Read a,ba=1If a>b Thenb=2 m←aa=a+b
Else
m←bPrint aEndEnd If
Print m2.(2011·江苏)根据如图所示的伪代码,当输入a,b分别为2,3时,最后输出的m的值为________.3.(2011·天津文)阅读左下边的程序框图,运行相应的程序,若输入x的值为-4,则输出y的值为________.
4.(2011·湖南文)若执行如下图所示的框图,输入x1=1,x2 = 2, x3 = 4, x4 = 8,则输出的数等于________.
第三篇:算法的五个主要特性
一、算法的五个主要特性:①有穷性②确定性③可行性④输入⑤输出 二、三、算法复杂度(时间)数据结构(逻辑结构)(空间)(存储结构)(数据的操作)
四、存储器映射方法:
1、顺序映射
2、链式映射(经常增删节点的复杂
五、数据数据元素的结构:集合、线性结构、树形结构、图状结构)3.索引映射(存储效率不高,常用方法)4散列映射
六、队列:限定了插入和删除操作的线性表
八、树、①有且仅有一个特定的称为根的节点②当n>1时其余节点可分为m(m>0)个互不橡胶的有限级T1.T2…….Tm其中每一个集合本身是一棵树,称为子树。
九、二叉树的存储结构①顺序存储结构②链式存储结构
十、算法通常由两种基本要素构成①对数据对象的运算和操作②算法的控制结构
十一、算法:对某个问题处理方案的正确而完整的描述称为算法
十二、数据结构:互相之间存在着一种或多种关系的数据元素的集合
十三、完全二叉树:除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的若干缺点。
十四、二叉树①在二叉树的第i层至多有()个节点(I>=1)②深度为k节点数为的二叉树至多有(n1,度为2 的节点数为)个节点③对任何一个二叉树n2,则n1=n2+1 ④具有T1n,如果其终端个结点的完全二叉树的深度为k+1其中k是()的整数部分
十五、度为
十六、如果对一棵有0的结点(叶子节点)总是比度为n个结点的完全二叉树的结点按层序编号,则对任2的结点多一个。
一结点i(1<=I<=n)有:①如果i=1,则结点i是二叉树的根,无双亲;如果i无左孩子,否则其左孩子是节点i>1,则其双亲是节点k,其中k2i是③如果i/2的整数部分②如果2i+1>n 则节点i2i>n,无右孩子,则节点否则其右孩子是节点2i+1
十七、遍历:前序遍历;根左 右 根左 右 中序遍历; 左 根 右后序遍历;
十八、程序设计:指设计,编制,调试程序的方法和过程。
十九、程序设计风格:指编写程序时所表现出的特点、习惯和逻辑思路
二十、消息机制统一了数据流和控制流二
十一、结构化程序设计方法得重要原则是:自顶向下,逐步求精,模块化,限制使用二
十二、顺序结构,选择结构,重复结构共同特征:严格的只有一个入goto语句
口和一个出口
二十三、对象的特点:①标示唯一性②分类性③多态性④封装性⑤模块独立性好 二
十四、面向对象设计方法的基本特征:封装,多态,继承
二十五、计算机软件的构成二
十六、计算机软件的定义:与计算机系统操作有关的计算机程序规则,;程序、数据、及相关文档
以及可能有的文件文档及数据。
二十七、软件分类:系统软件、应用软件、支撑软件二
十八、软件危机表现在:①软件需求的增长得不到满足②软件开发成本和进度无法控制③软件质量难以保证④软件不可维护和维护程度非常低⑤软件成本不断提高⑥软件开发效率的提高赶不上硬件的发展和应用需求的增长。
二十九、软件工程:应用与计算机软件的定义、开发、和维护的一整套方法、工具、文档、实践标准和工序。三
十、软件工程的要素①方法②工具③过程三
十一、软件开发技术:主要有软件开发方法学、软件工具、软件工程坏境三
十二、软件工程管理:主要有软件管理,软件工程经济学三
十三、软件生命周期的的三个时期:①软件定义期②软件开发期③软件维护期三
十四、软件生命周期各阶段的主要任务:①问题定义②可行性研究与
计划制定③需求分析④软件设计⑤软件实现⑥软件测试⑦运行维护 三
十五、系统的逻辑模块:数据流图和数据字典三
十六、软件需求规格说明书的作用:①便于用户,开发人员进行理解
和交流②反映出用户问题的结构,可以作为软件开发工作的基础和依据③作为确认测试和验收的依据三
十七、软件需求规格说明书的特点:①正确性②无歧义性③完整性④
可验证性⑤一致性⑥可理解性⑦课修改性⑧可追踪性
三
十八、要设计和详细设计软件设计:} 1)结构设计2)数据设计3)接口设计4)过程设计{概三
十九、软件设计的重要性和低位:1)软件开发阶段(设计、编码,测试)占软件项目开发总成本的绝大部分,是在软件开发中形成质量的关键环节2)软件设计是开发阶段最重要的步骤,是将需求准确的转化为完整的软件产品或系统的唯一途径;3)软件设计做出的决策,最终影响软件实现的成败四
十、软件设计的基本原理:4)设计是软件工程和软件维护的基础1)抽象2)模块化3)信息隐藏 4)模块独立性 四
十一、优秀设计:高内聚,低耦合。四
十二、软件概要设计的基本任务:
1)设计软件系统的结构2)数据结构及数据库设计3)编写概要设计文四
十三、数据流图的两种典型结构形式:档4)概要设计文档评审 1)变换型和事务性 四
十四、程序流图构成的控制结构:1)顺序型2)选择型3)先判断重复姓四
十五、软件测试的目的:4)后判断重复型5)多分支选择型1)测试是为了发现程序的错误而执行程序的过程2)好的测试用例很可能发现迄今为止尚未发现的错误3)一次成功的测试是指发现了至今为止尚未发现的错误四
十六、软件测试:暴露错误,评价可靠性
四
十七、软件调试、发现错误的位置,并改正错误 四
十八、白盒测试又称为结构测试或逻辑驱动测试四
十九、白盒测试的基本原则:1)保证所测模块中每一个独立路径至少
执行一次2)保证所测试模块所有判断的每一个分支至少执行一次3)保证所测模块的每一个循环都在边界条件和一般条件下至少执行一次证所有内部数据结构的有效性 4)验五
十、白盒测试主要有(逻辑覆盖和基本路径测试)
五
十一、黑盒测试:工能测试或数据驱动测试着重测试软件功能五
十二、黑盒测试方法和技术有:1)等价类划分法2)边界值分析法 3)错误推测法 五
十三、软件测试实施过程的确认测试和系统测试 4个步骤:1)单元测试2)集成测试3)五
十四、软件调试的目的:改正错误 五
十五、软件调试的任务、诊断和改正程序中的错误。五
十六、某学生的记录由学号voidfun(STREC *a){int i;a->ave=0.0;for(i=0;i
十七、N名学生的成绩已在主函数中放入一个带头结点doublefun(STREC *h {)double ave=0.0;STREC *p=h->next;while(p!=NULL){ ave=ave+p->s;}p=p->next;return ave/N;} 五
十八、int fun(char *ss, char c){ int i=0;for(;*ss!=' ';ss++)if(*ss==c)return i;i++;/*求出ss所指字符串中指定字符的个数*/ }
第四篇:作文布局三种基本结构
作文构思布局的三种基本结构
一.作文的构思(结构布局)法
构思是指在动笔作文前,对文章的内容、表达方式和结构层次的总体设计。就是我们平常所说的先写什么、后写什么、哪里详写、哪里略写的问题。它是作文过程中的一种创造性的复杂的思维活动。具体地说,文章构思就是对选材过程中所选的材料作分解和组装,使之有序化、审美化的思维过程,因为每个人的大脑的思维方式不同,所以分解和组装的方式也呈现多种多样,这里介绍几种大家常用的构思法,以打开同学们构思的路子。
1、一字(词)贯穿构思法
一字(词)贯穿,是提在构思文章时,选择一个和中心思想紧密相关的关键字或词连接文章的所有材料,从而形成文章的骨架。如《背影》一文,就是采用一词贯穿构思法,文章从始至终以“背影”一词不达意贯穿全文,使读者深深体会到一颗慈父心,体会到父子之间的深情。运用此法,要注意文章要扣紧一个字或词来写,只有这样,才有条件以此为辐射点,进行多角度的思维,才有利于有层次地、深入地进行描述或抒情,使文章丰满而有韵味。如微笑,目光,声音等类的写作。
2、排比组合构思法
排比组合,是指在题目规定的范围内,根据表达主题的需要,选择几个生动的典型的人物、事件或景物的片断排比组合成文来表现一个主题的构思方法。用这种方法构思的记人、叙事、写景的文章,可以在较短的篇幅内,多角度、多侧面地表现人物、叙述事件、描写景物。
运用排比组合的构思法需要注意的是:
A、所组合的片断的形式要统一:或者是人物形象的一系列片断组合,或者是事件的一系列片断组合,或者是景物的一系列片断组合等。
B、片断本身的叙述必须是具体的、生动的、形象的。
C、片断可以是横向排列,也可以是纵向排列。横向的排列要安排好主次、实虚的关系,纵向的排列要注意时间的先后顺序。
格式分类:
A并列式排比B递进式排比(如《感受自然》和《我读三国》)C小标题或镜头式排比
3、纵横对比构思法
纵横对比,是指将对立的人物、事件、景物放在同一篇文章中来叙写的一种构思方法。运用这种方法构思,形成鲜明的反差,给读者留下极深的印象。或动静对比,或美丑相映,或真假相衬,或善恶对立,或冬夏对比,或天地对照等等。如通过两篇日记或书信写同一件事中的两个不同人的相同或不同的感受。
我的视线 ――记一把蓝色的雨伞
我的视线,这么久以来都不得不为一把蓝色的雨伞所牵绊…… 那蓝色,明彻如天空。
小时候的那些下雨天,妈妈总撑着一把蓝色的雨伞来学校接我,我的头顶是一片蓝色,肩膀也笼罩于一片蓝色之中,触目所及都是一片蓝色的无雨的天空。
后来的一个下雨天,矮小的我抬头和妈妈说话,却发现妈妈的那一半天空是一片阴沉的灰色,风夹杂着雨滴,落入妈妈灰色的天空,妈妈的肩膀湿了,额前的头发也湿了,而我,依旧置身于一片蓝色的无雨的天空。“妈妈,雨伞歪了,”我提醒道,“没有,雨伞没有歪啊。”妈妈轻轻回答,我的视线落在倾斜的伞柄上,“是真的,雨伞歪了。”妈妈固执地说道,“没有,真的没有……”
后来我长大了,不再要妈妈在下雨天接我,那把蓝色的伞在柜子中一年一年地褪色,我曾一度以为我淡忘了它。
或许是巧合,又是一个雨天,又是那把蓝色的伞,伞下的是妈妈和我,快和妈妈一样高的我撑着伞。
我的视线那么不自觉地落在了伞柄上,那一幕与小时候的情景混在了一起,妈妈笼罩于一片蓝色的无雨的天空。而我肩膀湿了,头发也湿了。
“雨伞歪了,”妈妈提醒我,“没有,伞没有歪啊。”“是真的,雨伞歪了,”妈妈重复道。“妈,真的它没有歪,没有。”伞下是许久的沉默,回头却瞥见晶莹的水珠划过妈妈的脸颊。
那把褪了色的伞,又重现以前明彻如天空的蓝色。
终于明白,这么久以来,妈妈都为我撑起一片无雨的天空,现在,我多想也给妈妈一片快乐的天,即使孟郊说过谁言寸草心,报得三春晖。
于是我的视线便牵绊于那把蓝色的伞,每天深夜在灯下夜战的人是我,每个周末穿梭于补课地点的人是我……
这一切,都因为那把倾斜的蓝色的伞。
那蓝色,明彻如天空,让我的视线不敢移开,永远都不敢移开。
5、欲扬先抑构思法
欲扬先抑,是指为肯定某人、事、物、景,先用曲解或嘲讽的态度尽力去贬低或否定它的一种构思方法。运用此种构思法要注意抑少扬多,扬能压抑。一般用来写人。
6、时空推(转)移构思法
时空推(转)移,是指在选择材料后以时间的推移或空间的转移来组织材料行文的一种构思法。
在考试中成长
“考试”,一个用来检查某段时间内学习效果的手段,在校园里引起了不小的争论。优生以此为荣,差生为考所困。但我们都在考试中不断长大。
从“呱呱”坠地到如今成为一名中学生,我经历了无数次考试:小考、中考、大考、毕业考、分班考……其中有庆幸也有遗憾,从中我对“考试”的理解也日趋深刻。
3岁时我就就参加了“考试”那时的我只觉得“考试”很好玩儿,认为“×”和“√”是同一种符号,可以共存。
5岁时,考试得“√”的同学有小红花,得“×”的同学却只有掉眼泪的份儿,使我认识到“×”与“√”有明显的区别。
上了小学一年级,我对考试有了特殊的感受,常常为“√”而疯狂,为“×”而叹息。三年级时,大家都开始认真地做功课,“√”成了同学之间竞争的目标,大家都想在考试中为“√”而拼搏。此时的考试是位老师,及时提醒我们预习、复习。
五年级时,考试成了人人讨厌的过街老鼠,因为“√”的骄傲,骤然增多了“×”,使自己在年级的地位自由落体一样飞速往下掉。而“×”接连不断地来临又使我陷入悲伤不能自拔。
在痛苦中我逐渐明白考试对于我的意义,虽然我在“√”“×”面前仍然有欣喜、失落,但我懂得了能从“×”中去探求新的真理以获取更多的“√”才是最大的收获。
如今上了中学,面对一张张血淋淋的竞赛试卷,我惊奇的发现,我很坦然,没有欣喜,没有失落,而学会了独自在寂寞中冷静思考。终于明白考试是一种自我检测的工具,哭与笑对考试来说毫无意义,只有勇敢地去面对它,改变它,才是考试于我真正的意义。
考试犹如母亲和蔼地用“√”告诉我勤奋、刻苦、奋斗,才有可能赢;又犹如父亲严厉地用“×”告诫我失落、痛苦、消极,必定输。母亲的鼓励使我懂得了“一分耕耘一分收获”,而父亲的谆谆教诲使我懂得了“失败乃成功之母”。
我在考试中慢慢长大,我会以自己的勤奋和努力,将“×”不断变为“√”!
成长回眸
余余落辉,我爱一抹最美;涓涓潺水,我掬一捧最清;回顾走过的树林,我独恋枫叶最红;回眸成长的足迹-----我不忘毅者无疆的坚强。
7岁时,我爱看《西游记》,而孙悟空便是我的信念。纵然可以千变万化,也要忍受五指山下的嘲讽,一压就是五百年,一忍就是风吹雨打,谁能顶天立地,坚强,被一只猴神化得如此悲壮,这便是开始,即便寂寞也精彩,大丈夫能屈能伸,猴哥,就应该这样。
10岁时,我迷上《三国演义》,原先只是喜欢打打杀杀,敬佩关羽而怨恨曹操,那一夜,考试失利后难眠的一夜,心头一触,原来曹操才是英雄。这位大将军在宛城丧子折兵后的痛定思痛;这位汉丞相败走华容道时的嘲笑诸葛亮、周瑜;这位魏王在割须弃泡后巧施反间计,连遭挫折到始终不忘统一天下的抱负,不像刘备,被火烧七百里联营,烧回白帝城后一病不起;不像孙权,夺会荆州,守者父兄的基业就面南称帝。曹操把坚强演义到顶峰,“老骥伏枥,志在千里;烈士暮年,壮心不已”,曹公的诗好不令人痛快!
那一夜,我醒了,困难打不败,挫折打不倒,我学会了坚强。
13岁,我张大了,渐渐孤傲了,但《名人传》却逆转了我,他们都有伟大的成就,而他们也都是磨难造就的人,他们在漫漫黑夜中摸索前进,而坚强是他们心中的航标,即使看不到光明,他们却将坚强表现得淋漓尽致。贝多芬在双目失明后继续创作乐曲,坚强是他音乐的音符;米开朗琪罗在教堂中,即使心不情愿,也全神贯注的雕刻,坚强是他的灵感,直到生命最后仍在坚持。我心中孤傲的火焰慢慢熄灭,化作一泓平静泉水。
今年我15岁了,回眸成长之间,我懂了一句话“天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为”,既然上天已降大任于你我,那么,就让我们带者坚强出发吧!去奋斗,去拼搏,去履行生命的诺言!
以上几种构思法,在一篇文章中常常结合起来使用,希望在作文时细心体会。
第五篇:C语言常用算法归纳
C语言常用算法归纳
应当掌握的一般算法
一、基本算法:
交换、累加、累乘
二、非数值计算常用经典算法:
穷举、排序(冒泡,选择)、查找(顺序即线性)
三、数值计算常用经典算法:
级数计算(直接、简接即递推)、一元非线性方程求根(牛顿迭代法、二分法)、定积分计算(矩形法、梯形法)
四、其他:
迭代、进制转换、矩阵转置、字符处理(统计、数字串、字母大小写转换、加密等)、整数各数位上数字的获取、辗转相除法求最大公约数(最小公倍数)、求最值、判断素数(各种变形)、数组元素的插入(删除)、二维数组的其他典型问题(方阵的特点、杨辉三角形)
详细讲解
一、基本算法
1.交换(两量交换借助第三者)
例
1、任意读入两个整数,将二者的值交换后输出。main(){ int a,b,t;
scanf(“%d%d”,&a,&b);
printf(“%d,%dn”,a,b);t=a;a=b;b=t;
printf(“%d,%dn”,a,b);} 1 【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。
假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。其中t为中间变量,起到“空杯子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!
【应用】
例
2、任意读入三个整数,然后按从小到大的顺序输出。main(){ int a,b,c,t;scanf(“%d%d%d”,&a,&b,&c);/*以下两个if语句使得a中存放的数最小*/ if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} /*以下if语句使得b中存放的数次小*/ if(b>c){ t=b;b=c;c=t;} printf(“%d,%d,%dn”,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=%dn”,s);} 【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。
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=%ldn”,c);}
二、非数值计算常用经典算法
1.穷举
也称为“枚举法”,即将可能出现的每一种情况一一测试,判断是否满足条件,一般采用循环来实现。
例
1、用穷举法输出所有的水仙花数(即这样的三位正整数:其每位数位上的数字的立方和与该数相等,比如:1*1*1+5*5*5+3*3*3=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(“%dn”,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(“%dn”,b*100+s*10+g);} 【解析】此方法是用1到9做百位数字、0到9做十位和个位数字,将组成的三位正整数与每一组的三个数的立方和进行比较,一旦相等就输出。共考虑了900个组合(外循环单独执行的次数为9,两个内循环单独执行的次数分别为10次,故if语句被执行的次数为9×10×10=900),即900个三位正整数。与法一判断的次数一样。
2.排序
(1)冒泡排序(起泡排序)
假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是:
①从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;
②第①趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数第二个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;
③重复步骤①n-1趟,每趟比前一趟少比较一次,即可完成所求。例
1、任意读入10个整数,将其用冒泡法按升序排列后输出。#define n 10 main(){ int a[n],i,j,t;for(i=0;i scanf(“%d”,&a[i]);for(j=1;j<=n-1;j++) /*n个数处理n-1趟*/ for(i=0;i<=n-1-j;i++)/*每趟比前一趟少比较一次*/ if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;} for(i=0;i (2)选择法排序 选择法排序是相对好理解的排序算法。假设要对含有n个数的序列进行升序排列,算法步骤是: ①从数组存放的n个数中找出最小数的下标(算法见下面的“求最值”),然后将最小数与第1个数交换位置; ②除第1个数以外,再从其余n-1个数中找出最小数(即n个数中的次小数)的下标,将此数与第2个数交换位置; ③重复步骤①n-1趟,即可完成所求。 例 1、任意读入10个整数,将其用选择法按升序排列后输出。#define n 10 main(){ int a[n],i,j,k,t;for(i=0;i if(a[j] < a[k])k = j; if(k!= i){ t = a[i];a[i] = a[k];a[k] = t;} } for(i=0;i printf(“%dn”,a[i]);} (3)插入法排序 要想很好地掌握此算法,先请了解“有序序列的插入算法”,就是将某数据插入到一个有序序列后,该序列仍然有序。插入算法参见下面的“数组元素的插入”。 例 1、将任意读入的整数x插入一升序数列后,数列仍按升序排列。#define n 10 main(){ int a[n]={-1,3,6,9,13,22,27,32,49},x,j,k; /*注意留一个空间给待插数*/ scanf(“%d”,&x);if(x>a[n-2])a[n-1]=x; /*比最后一个数还大就往最后一个元素中存放*/ else /*查找待插位置*/ { j=0; while(j<=n-2 && x>a[j])j++; for(k=n-2;k>=j;k--)/*从最后一个数开始直到待插位置上的数依次后移一位*/ a[k+1]=a[k]; a[j]=x; /*插入待插数*/ } for(j=0;j<=n-1;j++)printf(“%d ”,a[j]);} 插入法排序的要领就是每读入一个数立即插入到最终存放的数组中,每次插入都使得该数组有序。 例 2、任意读入10个整数,将其用插入法按降序排列后输出。(提示:将第2至第10个数一一有序插入到数组a中)#define n 10 main(){ int a[n],i,j,k,x;scanf(“%d”,&a[0]);/*读入第一个数,直接存到a[0]中*/ for(j=1;j { scanf(“%d”,&x);