版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、计数、求和、求阶乘等简单算法此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。例:用随机函数产生100个0,99范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。本题使用数组来处理,用数组a100存放产生的确100个随机整数,数组x10来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数。即个位是1的个数存放在x1中,个位是2的个数存放在x2中,个位是0的个数存放在x10。void main() int a101,x11,i,p;for(i=0;i<
2、;=11;i+)xi=0;for(i=1;i<=100;i+) ai=rand() % 100;printf("%4d",ai);if(i%10=0)printf("n");for(i=1;i<=100;i+) p=ai%10;if(p=0) p=10;xp=xp+1;for(i=1;i<=10;i+) p=i;if(i=10) p=0;printf("%d,%dn",p,xi);printf("n");二、求两个整数的最大公约数、最小公倍数分析:求最大公约数的算法思想:(最小公倍数=两个整数之积
3、/最大公约数)(1) 对于已知两数m,n,使得m>n;(2) m除以n得余数r;(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);(4) mn,nr,再重复执行(2)。例如: 求 m=14 ,n=6 的最大公约数. m n r14 6 26 2 02 / 7void main() int nm,r,n,m,t;printf("please input two numbers:n");scanf("%d,%d",&m,&n);nm=n*m;if (m<n) t=n; n=m; m=t; r=m%n;while
4、(r!=0) m=n; n=r; r=m%n; printf("最大公约数:%dn",n);printf("最小公倍数:%dn",nm/n);三、判断素数只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2INT( )作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现)void main() int m,i,k;printf("please input a number:n");scanf("%d",&m);k=sqrt(m);for(i=2;i<k;i+)if(m%i=0
5、) break;if(i>=k)printf("该数是素数");elseprintf("该数不是素数");将其写成一函数,若为素数返回1,不是则返回0int prime( m%)int i,k;k=sqrt(m);for(i=2;i<k;i+)if(m%i=0) return 0;return 1;四、排序问题1选择法排序(升序)基本思想:1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置;3)依次类推,选择了n-1次后,这个数列已按升序排列。
6、程序代码如下:void main() int i,j,imin,s,a10;printf("n input 10 numbers:n");for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<9;i+) imin=i;for(j=i+1;j<10;j+)if(aimin>aj) imin=j;if(i!=imin)s=ai; ai=aimin; aimin=s; printf("%dn",ai); 2冒泡法排序(升序)基本思想:(将相邻两个数比较,小的调到前头)1)有n个数
7、(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。程序段如下void main() int a10;int i,j,t;printf("input 10 numbersn");for(i=0;i<10;i+)scanf("%d",&ai);printf("n&quo
8、t;);for(j=0;j<=8;j+)for(i=0;i<9-j;i+)if(ai>ai+1)t=ai;ai=ai+1;ai+1=t;printf("the sorted numbers:n");for(i=0;i<10;i+)printf("%dn",ai); 3合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序)基本思想:1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;3)将另一个数组剩余元素抄入C数组,合并排序完成。程序段如下:void main() int a10,b10,c20,i,ia,ib,ic;printf("please input the first array:n");for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<10;i+)scanf("%d",&bi);printf("n");ia=0;ib=0;ic=0;while(ia<10&&ib<10) if(aia<bib) c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神经内科2025年12月份三基考试试题及答案
- 工业园区管委会笔试试题
- 《浩瀚的宇宙》教案物理科课件
- 酒店客房设备采购与供应商管理制度
- 酒店客源市场分析制度
- 车间精细化管理培训课件
- 银行征信业务管理规范制度
- 2026年度村卫生室工作总结(2篇)
- 车间安全锁培训课件
- 车间安全培训的重要性
- 2026年卫浴洁具安装合同协议
- 建房框架结构合同范本
- 2025年宁波市数据局直属事业单位公开招聘工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025秋苏少版七年级上册美术期末测试卷(三套)
- 2026年及未来5年市场数据中国EPP保温箱行业市场调研及投资战略规划报告
- 2025锦泰财产保险股份有限公司招聘理赔管理岗等岗位54人(公共基础知识)综合能力测试题附答案解析
- 2025浙江宁波象山县水质检测有限公司招聘及对象笔试历年参考题库附带答案详解
- 四川农商银行2026年校园招聘1065人考试题库附答案
- 2025至2030尿素硝酸铵(UAN)行业产业运行态势及投资规划深度研究报告
- 集团公司年度经营状况分析报告
- 2025蜀道集团下属四川金通工程试验检测有限公司招聘18人考试参考题库附答案解析(夺冠)
评论
0/150
提交评论