最常用的c语言算法有些

上传人:郭** 文档编号:117115306 上传时间:2019-11-18 格式:DOC 页数:5 大小:93.18KB
返回 下载 相关 举报
最常用的c语言算法有些_第1页
第1页 / 共5页
最常用的c语言算法有些_第2页
第2页 / 共5页
最常用的c语言算法有些_第3页
第3页 / 共5页
最常用的c语言算法有些_第4页
第4页 / 共5页
最常用的c语言算法有些_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《最常用的c语言算法有些》由会员分享,可在线阅读,更多相关《最常用的c语言算法有些(5页珍藏版)》请在金锄头文库上搜索。

1、最常用的c语言算法有些 大家知道最常用的c语言算法有些下面小编为大家整理了最常用的c语言算法希望能帮到大家! 一、基本算法 1.交换(两量交换借助第三者) 例1、任意读入两个整数将二者的值交换后输出 main() inta,b,t; scanf(%d%d,a,b); printf(%d,%d,a,b); t=a;a=b;b=t; printf(%d,%d,a,b); 【解析】程序中加粗部分为算法的核心如同交换两个杯子里的饮料必须借助第三个空杯子 假设输入的值分别为3、7则第一行输出为37;第二行输出为73 其中t为中间变量起到“空杯子”的作用 注意:三句赋值语句赋值号左右的各量之间的关系 【应

2、用】 例2、任意读入三个整数然后按从小到大的顺序输出 main() inta,b,c,t; scanf(%d%d%d,a,b,c); if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; printf(%d,%d,%d,a,b,c); 2.累加 累加算法的要领是形如“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

3、; printf(1+2+3+.+100=%d,s); 【解析】程序中加粗部分为累加式的典型形式赋值号左右都出现的变量称为累加器其中“i=i+1”为特殊的累加式每次累加的值为1这样的累加器又称为计数器 3.累乘 累乘算法的要领是形如“s=s*A”的累乘式此式必须出现在循环中才能被反复执行从而实现累乘功能“A”通常是有规律变化的表达式s在进入循环前必须获得合适的初值通常为1 例1、求10 分析10=12310 main() inti;longc; c=1;i=1; while(i=10) c=c*i; i=i+1; printf(1*2*3*.*10=%ld,c); 二、非数值计算常用经典算法

4、穷举 也称为“枚举法”即将可能出现的每一种情况一一测试判断是否满足条件一般采用循环来实现 例1、用穷举法输出所有的水仙花数(即这样的三位正整数:其每位数位上的数字的立方和与该数相等比如:13+53+33=153) 法一 main() intx,g,s,b; for(x=100;x=999;x+) g=x;s=x/10;b=x/100; if(b*b*b+(s10*b)*(s10*b)*(s10*b)+(g10*s)*(g10*s)*(g10*s)=g) printf(%d,x); 【解析】此方法是将100到999所有的三位正整数一一考察即将每一个三位正整数的个位数、十位数、百位数一一求出(各数

5、位上的数字的提取算法见下面的“数字处理”)算出三者的立方和一旦与原数相等就输出共考虑了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,b*100+s*10+g); 【解析】此方法是用1到9做百位数字、0到9做十位和个位数字将组成的三位正整数与每一组的三个数的立方和进行比较一旦相等就输出共考虑了900个组合(外循环单独执行的次数为9两个内循环单独执行的次数分别为10次故if语句被执行的次数为91010=900)即900个三位正整数与法一判断的次数一样

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号