




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款委托合同范例
- 体育行业劳动合同范例
- 医院员工雇佣合同范例
- 养生店连锁合同范例
- ktv营销合同范本
- 互联网公司项目合同范例
- 2011企业用工合同范例
- 关于投资入股合同样本
- 业务分红入股合同范例
- 苗木收购合同范本
- 2025年护士执业资格考试题库基础护理学专项:新生儿护理操作要点试题
- 2025届高三语文4月名校联考作文汇编(审题+立意+范文)
- GB/T 5453-2025纺织品织物透气性的测定
- 国企人事专员笔试试题及答案
- IIT临床研究培训
- 污水处理厂设备运行的管理及维护措施
- 1-江苏省冶金等工贸企业安全生产标准化运行质量审计评分表-
- 弘扬航天精神拥抱星辰大海!课件高一上学期载人航天主题班会
- 《excel数据分析》课件
- 小学六年级科学(人教版)《各种各样的自然资源》-教学设计、课后练习、学习任务单
- 215kWh工商业液冷储能电池一体柜用户手册
评论
0/150
提交评论