[精选]C语言复习PPT_IE06-常用算法程序kmq.pptx
课件封面实验教学标题输入、输出和选择结构程序输入、输出和选择结构程序6 常用算法程序常用算法程序常用算法程序常用算法程序【18】编写程序求两个整数的最大公约数和最小公倍数。#include void main()int m,n,t;printf(输入两个数(用空格或者回车间隔)输入两个数(用空格或者回车间隔)n);scanf(%d%d,&m,&n);/设设t为为m,n的最小数的最小数if(mn)t=n;else t=m;while(t0)if(m%t=0&n%t=0)break;/每次检查每次检查m和和n能否整除能否整除t 如果是则找到最大公约数如果是则找到最大公约数t-;printf(%d和和%d的最大公约数为的最大公约数为%dn,m,n,t);/设设t为为m,n的最大数的最大数if(mn)t=m;else t=n;while(1)if(t%m=0&t%n=0)break;/每次检查每次检查t能否整除能否整除m和和n 如果是则找到最小公倍数如果是则找到最小公倍数t+;printf(%d和和%d的最小公倍数为的最小公倍数为%dn,m,n,t);6 常用算法程序常用算法程序常用算法程序常用算法程序【19】编写一个函数IsP(int n),函数的功能是检查n是否为素数,如果是函数返回“真”,否则返回“假”。在主函数中调用该函数,打印1001000之间的全部素数。#include int IsP(int n)/函数的功能是检查函数的功能是检查n是否为素数是否为素数int i;/分析:从分析:从2到到n-1逐一检查能否整除逐一检查能否整除n,只要有一个整,只要有一个整除则肯定不是素数,所有均不能整除则肯定是素数除则肯定不是素数,所有均不能整除则肯定是素数for(i=2;in;i+)if(n%i=0)return 0;/只要有一个整除则不是素数只要有一个整除则不是素数return 1;void main()int i;/打印打印1001000之间的全部素数之间的全部素数for(i=100;i1000;i+)if(IsP(i)printf(%dn,i);6 常用算法程序常用算法程序常用算法程序常用算法程序【20】用筛选法求100之内的素数。#include void cal_prime(int A,int n)/使用筛选法计算素数使用筛选法计算素数int i,j;for(i=2;i=n;i+)for(j=2;i*j=n;j+)/如果该数尚未筛选过如果该数尚未筛选过,则标记该数选中则标记该数选中 if(Ai*j=1)Ai*j=0;else /如果已经筛选过如果已经筛选过,则跳出改次筛选则跳出改次筛选,进入下次筛选进入下次筛选 continue;void main()int A100+1;/下标需要从下标需要从2到到100,因此数组长度为,因此数组长度为100+1int i;/将全部数组元素设为将全部数组元素设为1表示未被筛出表示未被筛出for(i=2;i=100;i+)Ai=1;cal_prime(A,100);for(i=2;i=100;i+)if(Ai=1)/未被筛出的元素必定是素数未被筛出的元素必定是素数 printf(%dn,i);6 常用算法程序常用算法程序常用算法程序常用算法程序【21】用二分查找法在已排序好的数组中查找输入的数。如果找到了输出该数的下标,否则输出“未找到”。(数组为:1,2,13,24,25,44,57,63,66,78,90,100)。#include#include void main()int a10=1,3,5,7,9,11,13,15,17,19;int h;/查找区域开始位置查找区域开始位置int t;/查找区域结束位置查找区域结束位置int m;/查找区域中间位置查找区域中间位置int sign=0;/为为0表示未找到,为表示找到表示未找到,为表示找到int f;/要查找的数据要查找的数据printf(请输入要查找的数据:请输入要查找的数据:);scanf(%d,&f);h=0,t=9;/一开始将整个数组设为查找区域一开始将整个数组设为查找区域if(!(fa9)/如果要查找的数据比开始元素小或者比结束元素大,则肯定不在如果要查找的数据比开始元素小或者比结束元素大,则肯定不在查找区域中查找区域中while(!sign&ham)/否则如果要找的数据比中间位置的数据大否则如果要找的数据比中间位置的数据大 h=m+1;/则下一次的查找区域在右半部分则下一次的查找区域在右半部分elset=m-1;/否则下一次的查找区域在左半部分否则下一次的查找区域在左半部分if(sign=0)printf(在数组中在数组中%d没有找到没有找到n,f);6 常用算法程序常用算法程序常用算法程序常用算法程序【22】编写一个函数sort(int A,int n),函数的功能是用冒泡法对数组进行由大到小的排序,其中n为数组A的元素个数。在主函数中输入10个数据,调用函数排序,然后输出排序好的10个数据。(输入数据:6,8,9,1,2,5,4,7,3,18)#include void sort(int A,int n)int i,j;int t;/改进后的冒泡法排序改进后的冒泡法排序for(i=0;in-1;i+)for(j=i+1;jn;j+)if(AiAj)/为由小到大,为由小到大,Ai表示前面的数表示前面的数,Aj表示后面的数表示后面的数t=Ai,Ai=Aj,Aj=t;void main()int A10;int i;printf(连续输入连续输入10个数据(用空格或者个数据(用空格或者TAB或者回车间隔)或者回车间隔)n);for(i=0;i10;i+)scanf(%d,&Ai);sort(A,10);/输出排序后的数组输出排序后的数组for(i=0;i10;i+)printf(%d,Ai);6 常用算法程序常用算法程序常用算法程序常用算法程序【23】编写一个函数sort(int A,int n),函数的功能是用选择法对数组进行由小到大的排序,其中n为数组A的元素个数。在主函数中输入10个数据,调用函数排序,然后输出排序好的10个数据。(输入数据:6,8,9,1,2,5,4,7,3,18)#include void sort(int A,int n)int i,j,k;int t;/改进后的选择法排序改进后的选择法排序for(i=0;in-1;i+)k=i;for(j=i+1;jAj)k=j;/为由小到大,为由小到大,Ak表示前面的数表示前面的数,Aj表示后面的数表示后面的数if(k!=i)t=Ai,Ai=Ak,Ak=t;void main()int A10;int i;printf(连续输入连续输入10个数据(用空格或者个数据(用空格或者TAB或者回车间隔)或者回车间隔)n);for(i=0;i10;i+)scanf(%d,&Ai);sort(A,10);/输出排序后的数组输出排序后的数组for(i=0;i10;i+)printf(%d,Ai);n9、静夜四无邻,荒居旧业贫。3月-233月-23Tuesday,March 14,2023n10、雨中黄叶树,灯下白头人。01:30:1901:30:1901:303/14/2023 1:30:19 AMn11、以我独沈久,愧君相见频。3月-2301:30:1901:30Mar-2314-Mar-23n12、故人江海别,几度隔山川。01:30:1901:30:1901:30Tuesday,March 14,2023n13、乍见翻疑梦,相悲各问年。3月-233月-2301:30:1901:30:19March 14,2023n14、他乡生白发,旧国见青山。14 三月 20231:30:19 上午01:30:193月-23n15、比不了得就不比,得不到的就不要。三月 231:30 上午3月-2301:30March 14,2023n16、行动出成果,工作出财富。2023/3/14 1:30:1901:30:1914 March 2023n17、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。1:30:19 上午1:30 上午01:30:193月-23n9、没有失败,只有暂时停止成功!。3月-233月-23Tuesday,March 14,2023n10、很多事情努力了未必有结果,但是不努力却什么改变也没有。01:30:1901:30:1901:303/14/2023 1:30:19 AMn11、成功就是日复一日那一点点小小努力的积累。3月-2301:30:1901:30Mar-2314-Mar-23n12、世间成事,不求其绝对圆满,留一份不足,可得无限完美。01:30:1901:30:1901:30Tuesday,March 14,2023n13、不知香积寺,数里入云峰。3月-233月-2301:30:1901:30:19March 14,2023n14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。14 三月 20231:30:19 上午01:30:193月-23n15、楚塞三湘接,荆门九派通。三月 231:30 上午3月-2301:30March 14,2023n16、少年十五二十时,步行夺得胡马骑。2023/3/14 1:30:1901:30:1914 March 2023n17、空山新雨后,天气晚来秋。1:30:19 上午1:30 上午01:30:193月-23n9、杨柳散和风,青山澹吾虑。3月-233月-23Tuesday,March 14,2023n10、阅读一切好书如同和过去最杰出的人谈话。01:30:1901:30:1901:303/14/2023 1:30:19 AMn11、越是没有本领的就越加自命不凡。3月-2301:30:1901:30Mar-2314-Mar-23n12、越是无能的人,越喜欢挑剔别人的错儿。01:30:1901:30:1901:30Tuesday,March 14,2023n13、知人者智,自知者明。胜人者有力,自胜者强。3月-233月-2301:30:1901:30:19March 14,2023n14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。14 三月 20231:30:19 上午01:30:193月-23n15、最具挑战性的挑战莫过于提升自我。三月 231:30 上午3月-2301:30March 14,2023n16、业余生活要有意义,不要越轨。2023/3/14 1:30:1901:30:1914 March 2023n17、一个人即使已登上顶峰,也仍要自强不息。1:30:19 上午1:30 上午01:30:193月-23MOMODA POWERPOINTLorem ipsum dolor sit amet,consectetur adipiscing elit.Fusce id urna blandit,eleifend nulla ac,fringilla purus.Nulla iaculis tempor felis ut cursus.感感 谢谢 您您 的的 下下 载载 观观 看看专家告诉