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+

最近更新

1-6年级必背古诗文 16页

铝合金不锈钢电阻点焊工艺与接头性能研究 3页

钢铁磷化后置换镀铜封闭的研究 3页

针对PDT接收机灵敏度指标的分析及优化 3页

信息系统标准化研究-全面剖析 33页

酒泉风电基地短路试验分析及仿真 3页

精准农业技术推广与应用前景-全面剖析 35页

【集合】一分钟自我介绍范文5篇 5页

近场长周期地震动脉冲特性对减隔震桥梁地震响.. 3页

运用三维动网格技术模拟计算离心泵非定常流动.. 3页

辽河海上油田稠油开采及配套工艺 3页

高中生文明礼仪演讲稿学生(21篇) 48页

轴对称环状静电模的漂移波湍流参量激发理论研.. 3页

转型高校大学生目标追求的入世、出世调查研究.. 3页

超高强度冷喷涂铝层的性能研究 3页

超大型离心泵内脉动压力特性研究 3页

赵庄二号井岩溶陷落柱的成因分析 3页

贵州省凯里市综合交通枢纽换乘衔接实证研究 3页

计量仪器的检定、校准与期间核查 34页

谈基层公路部门内部控制存在的问题与对策 3页

论应用文写作教学与人文素质教育 3页

计划性保养对设备维护的效果分析 3页

西门子S7-400PLC在卧螺机控制中的应用 3页

装配机械手综合误差分析与误差元素建模研究 3页

蒙特卡罗改进法求解可靠度编程中的问题及解决.. 3页

苏西区块小井眼井优快钻井技术研究 3页

苏卫单招校测2025试卷 9页

《黄河颂》33694省公开课一等奖全国示范课微课.. 29页

部编版九年级语文上册必背古诗文 8页

消毒小车策划书 4页