1 / 38
文档名称:

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

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

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

分享

预览

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

上传人:2786321826 2020/10/26 文件大小:182 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

最近更新

2025年深夜记叙文(共15篇) 22页

2025年国家电网招聘之电网计算机考试题库【达.. 161页

2025年事业单位招聘职业能力倾向测验考试题库.. 113页

一年级语文教师个人工作计划例文 4页

2025年国家电网招聘之电网计算机考试题库完整.. 159页

2025年事业单位招聘职业能力倾向测验考试题库.. 110页

2025年国家电网招聘之电网计算机考试题库(含.. 160页

2025年事业单位招聘职业能力倾向测验考试题库.. 112页

2025年二级建造师之二建建筑工程实务考试题库.. 162页

2025年深入开展安全文明校园创建活动自查报告.. 39页

2025年初级银行从业资格之初级个人贷款考试题.. 169页

2025年初级银行从业资格之初级个人贷款考试题.. 168页

2025年淘气包马小跳系列《暑假奇遇》读后感(.. 22页

2025年初级银行从业资格之初级风险管理考试题.. 170页

2025年初级银行从业资格之初级个人贷款考试题.. 169页

2025年县乡教师选调考试《教师职业道德》题库.. 50页

2025年县乡教师选调考试《教师职业道德》题库.. 51页

2025年初级银行从业资格之初级风险管理考试题.. 170页

2025年土地登记代理人之土地登记相关法律知识.. 179页

2025年北京市建设工程安全质量测评管理文 32页

2025年北京印刷公司包装盒印刷与防伪 2页

2025年武汉警官职业学院单招职业技能测试题库.. 73页

2025年辽宁经济职业技术学院单招职业技能测试.. 75页

2025年人教版数学七年级下册期末考试试卷及答.. 19页

2025年度新版一级建造师教材 6页

学前班拼音教案全集(共44页) 51页

万科实测检查数据上墙操作指引 17页

维克多新高中英语阅读高一 4页

建筑工程量计算方法(含图与计算公式) 21页

中药材广西甜茶仿野生栽培技术规程-征求意见稿.. 7页