C语言常见算法.ppt
《C语言常见算法.ppt》由会员分享,可在线阅读,更多相关《C语言常见算法.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一一素数、随机数、最大值和最小值素数、随机数、最大值和最小值(1)判断一个数是否为素数判断一个数是否为素数素数:只能被素数:只能被1和它本身整除的数。和它本身整除的数。要判断一个正整数要判断一个正整数m是不是素数,是不是素数,需需要用大于要用大于1且小于它本身的正整数去除它,且小于它本身的正整数去除它,只要它能被其中的一个数整除只要它能被其中的一个数整除,就说明它,就说明它不是素数不是素数。若所有的数都不能被它整除,。若所有的数都不能被它整除,说明它是素数。说明它是素数。例例1:输出:输出3100之间的所有素数之间的所有素数main()inti,n,k=0;for(n=3;n100;n+)fo
2、r(i=2;in;i+)if(n%i=0)break;if(i=n)printf(“%4d”,n);k+;if(k%10=0)printf(“n”);(2)随机数随机数函数函数random(intnum)用于产生用于产生0,num)区区间的一个整数。间的一个整数。其包含在其包含在“stdlib.h”头文件中头文件中为了使每一次运行都产生一组新的随机数,为了使每一次运行都产生一组新的随机数,可以使用可以使用randomize()函数函数是每次均产生不同的是每次均产生不同的随机数。其包含在头文件随机数。其包含在头文件“time.h”中中(3)最大值与最小值最大值与最小值我们需要我们需要将最大值(或
3、最小值)保存在一将最大值(或最小值)保存在一个变量中个变量中(假设设变量名为(假设设变量名为max和和min),变量变量的初值的初值我们一般设为我们一般设为数列中的第一个值数列中的第一个值。例例2:产生:产生20个个50到到200之间的随机整数,并求之间的随机整数,并求出其中的素数、最大值和最小值。出其中的素数、最大值和最小值。#includestdlib.h#includetime.hmain()inta20,b20,max,min,k,i,j=0;randomize();for(i=0;i20;i+)ai=random(151)+50;产生产生20个个50,200区间内的随机数区间内的随机
4、数for(i=0;i20;i+)for(k=2;kai;k+)if(ai%k=0)break;if(k=ai)bj=ai;j+;for(i=0;ij;i+)printf(%4d,bi);printf(n);从从a数组中找出其中数组中找出其中的素数放在的素数放在b数组中数组中输出输出b数组中数组中的各个元素的各个元素 max=a0;min=a0;for(i=1;imax)max=ai;if(aimin)min=ai;printf(max=%4d,min=%4dn,max,min);求出求出a数组中的数组中的最大值与最小值最大值与最小值二、求累加和的算法二、求累加和的算法二、求累加和的算法二、求累
5、加和的算法l1循环条件循环条件次数控制(加多少项次数控制(加多少项n,20,100)用误差控制(直到某一项小于或大于一个数)用误差控制(直到某一项小于或大于一个数)使用终止标记使用终止标记l2循环体循环体求和求和求每一项:从前一项求出后一项、单独求每一求每一项:从前一项求出后一项、单独求每一项项为下一项作准备为下一项作准备l3循环初值:循环初值:设为设为0、设为第一项、设为第一项注意双重循环设初值的位置注意双重循环设初值的位置4-16 4-16 有一分数序列有一分数序列有一分数序列有一分数序列 的前的前的前的前2020项项项项之和之和之和之和main()main()int i;int i;fl
6、oat float f1=1,f2=1,f3,s=0;f1=1,f2=1,f3,s=0;for(for(i=1;i=20;i+i=1;i=1e-5)x0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;printf(%10.8fn,x);四、数字分离四、数字分离 有些题中经常有些题中经常要求将一个数中的每一位要求将一个数中的每一位数字或者其中的某些位数字输出,数字或者其中的某些位数字输出,就需要使就需要使用到数字分离技术。用到数字分离技术。如在如在求解同构数等问题求解同构数等问题时都需要使用到时都需要使用到数字分离技术数字分离技术例:给出一
7、个不多于例:给出一个不多于4位的正整数,要求:求出位的正整数,要求:求出它是几位数,并且按逆序打印出各位数字它是几位数,并且按逆序打印出各位数字main()inti,j,k=0;scanf(%d,&i);while(i!=0)printf(%4d,i%10);i=i/10;k+;printf(nk=%dn,k);四、以特殊字符做为终止标志四、以特殊字符做为终止标志例:统计从键盘输入字符的个数,以例:统计从键盘输入字符的个数,以#结束。结束。#includestdio.hmain()charc;inti;c=getchar();for(i=0;c!=#;i+)c=getchar();printf
8、(thenumberis:%d,i);五、排序问题五、排序问题常用的排序方法有四种:常用的排序方法有四种:顺序交换法、选择法、冒泡法、插入法顺序交换法、选择法、冒泡法、插入法a.顺序排序法顺序排序法(n=10)指导思想指导思想:先设定先设定a0中存放最小值,中存放最小值,然后用然后用a0分别与其后的每一个数分别与其后的每一个数aj(j=1.9)进行比)进行比较,在比较过程中较,在比较过程中如果发现有比如果发现有比a0小的数,小的数,就就将将a0与与aj互换,互换,一遍扫描之后,一遍扫描之后,a0就是就是10个数中最小的数,重复此算法,只是每次比较个数中最小的数,重复此算法,只是每次比较时,进行
9、比较的数的范围向后移一个位置。时,进行比较的数的范围向后移一个位置。反反复执行复执行(n-1)次次上述操作上述操作例例1:将数组:将数组a中的中的10个数按照由大到小的个数按照由大到小的顺序排好顺序排好(使用顺序交换法使用顺序交换法)#defineN10main()intaN,i,j,k,t;for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)for(j=i+1;jN;j+)if(ajai)t=aj;aj=ai;ai=t;for(i=0;iN;i+)printf(%5d,ai);b.选择排序法选择排序法指导思想:指导思想:不急于交换,不急于交换,先找出先找出
10、a0到到a9中的最小数所在的位置中的最小数所在的位置k,一遍扫描完之后,一遍扫描完之后,在把在把a0与与ak进行交换,重复次算法进行交换,重复次算法9次。次。例例2:将数组:将数组a中的中的10个数按照由大到小的个数按照由大到小的顺序排好顺序排好(使用选择法使用选择法)#defineN10main()intaN,i,j,k,t;for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)k=i;for(j=i+1;jN;j+)if(ajak)k=j;t=ai;ai=ak;ak=t;for(i=0;iN;i+)printf(%5d,ai);c.冒泡法冒泡法指导思想:指
11、导思想:是是将相邻的两个数进行比较将相邻的两个数进行比较,若前,若前一个数比后一个数大,在交换两元素的内容,一个数比后一个数大,在交换两元素的内容,否则不交换。从而把最大的数放在最后位置。否则不交换。从而把最大的数放在最后位置。#defineN10main()intaN,i,j,k,t;for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)for(j=0;jN-i-1;j+)if(aj+1aj)t=aj;aj=aj+1;aj+1=t;for(i=0;iN;i+)printf(%5d,ai);例:有例:有N个数已按由小到大的顺序排好,个数已按由小到大的顺序排好,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 常见 算法
限制150内