1 / 37
文档名称:

非常全的c语言常用算法.doc

格式:doc   大小:155KB   页数:37页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

非常全的c语言常用算法.doc

上传人:gdntv68 2019/3/11 文件大小:155 KB

下载得到文件列表

非常全的c语言常用算法.doc

相关文档

文档介绍

文档介绍:一、(两量交换借助第三者)例1、任意读入两个整数,将二者的值交换后输出。main(){inta,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(){inta,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,%d\n",a,b,c);}“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。例1、求1+2+3+……+100的和。main(){inti,s;s=0;i=1;while(i<=100){s=s+i;/*累加式*/i=i+1;/*特殊的累加式*/}printf("1+2+3+...+100=%d\n",s);}【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i=i+1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为1。例1、求10![分析]10!=1×2×3×……×10main(){inti;longc;c=1;i=1;while(i<=10){c=c*i;/*累乘式*/i=i+1;}printf("1*2*3*...*10=%ld\n",c);}二、“枚举法”,即将可能出现的每一种情况一一测试,判断是否满足条件,一般采用循环来实现。例1、用穷举法输出所有的水仙花数(即这样的三位正整数:其每位数位上的数字的立方和与该数相等,比如:13+53+33=153)。[法一]main(){intx,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(){intg,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个三位正整数。与法一判断的次数一样。(1)冒泡排序(起泡排序)假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是:①从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;②第①趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数第二个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;③重复步骤①n-1趟,每趟比前一趟少比较一次,即可完成所求。例1、任意读入10个整数,将其用冒泡法按升序排列后输出。#definen10main(){inta[n],i,j,t;for(i=0;i<n;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+

最近更新

中小企业人力资源管理中存在的问题及对策 图文.. 6页

中学人力资源管理工作总结6 4页

二零二五年度环保产业用工承包协议书 9页

个人与组织契合度在人力资源管理实践中的应用.. 4页

二零二五年度烟酒行业市场准入与监管合作合同.. 9页

二零二五年度混凝土搅拌车融资租赁与销售合同.. 9页

二零二五年度涂料行业市场调研与分析承包服务.. 10页

【方案】机关职员薪酬方案(WORD4) 4页

【原创】转速电流双闭环控制PWM可逆直流调速系.. 6页

《计算机专业人才需求调查报告3400字》 5页

二零二五年度木质防火门原材料采购与供应合同.. 9页

二零二五年度智能照明灯具研发合作合同简易书.. 10页

二零二五年度智慧城市建设保证金协议 7页

《2025年W公司货运部员工流失原因与防范对策研.. 4页

mba学习内容计划(3) 4页

二零二五年度护坡施工劳务及工程质量监督合同.. 9页

b会计学系毕业生论文题目-(会计学方向) 7页

二零二五年度建材销售合同电子版环保标准及验.. 12页

二零二五年度市政道路照明工程合同 9页

2025电大本科人力资源管理试题试题二、判断对.. 4页

二零二五年度家居用品销售代表提成细则 8页

2025年美育音乐心得体会 4页

2025年浙江工业大学012教育科学与技术学院(职.. 5页

2025年我国人力资源绩效管理论文 4页

2025年大学生毕业设计论文进度表 6页

2025年公司人力资源部工作总结范本6 5页

2025年企业人事干部的个人工作总结(5) 4页

二零二五年度商品房抵押贷款利率风险控制合同.. 7页

2025一级人力资源管理师专业技能【一级】历年.. 4页

12个方向的人力资源管理专业本科毕业论文题目.. 4页