一、计数、求和、求阶乘等简单算法

此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。

例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。

本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0

的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在x[10]。void main()

{ int a[101],x[11],i,p;

for(i=0;i<=11;i++)

x[i]=0;

for(i=1;i<=100;i++)

{ a[i]=rand() % 100;

printf("%4d",a[i]);

if(i%10==0)printf("\n");

}

for(i=1;i<=100;i++)

{ p=a[i]%10;

if(p==0) p=10;

x[p]=x[p]+1;

}

for(i=1;i<=10;i++)

{ p=i;

if(i==10) p=0;

printf("%d,%d\n",p,x[i]);

}

printf("\n");

}

二、求两个整数的最大公约数、最小公倍数

分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)

(1) 对于已知两数m,n,使得m>n;

(2) m除以n得余数r;

(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);

(4) m←n,n←r,再重复执行(2)。

例如: 求 m=14 ,n=6 的最大公约数. m n r

14 6 2

6 2 0void main()

{ int nm,r,n,m,t;

printf("please input two numbers:\n");

scanf("%d,%d",&m,&n);

nm=n*m;

if (m

{ t=n; n=m; m=t; }

r=m%n;

while (r!=0)

{ m=n; n=r; r=m%n; }

printf("最大公约数:%d\n",n);

printf("最小公倍数:%d\n",nm/n);

}

三、判断素数

只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2—INT( )作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现)void main()

{ int m,i,k;

printf("please input a number:\n");

scanf("%d",&m);

k=sqrt(m);

for(i=2;i

if(m%i==0) break;

if(i>=k)

printf("该数是素数");

else

printf("该数不是素数");

}

将其写成一函数,若为素数返回1,不是则返回0

int prime( m%)

{int i,k;

k=sqrt(m);

for(i=2;i

if(m%i==0) return 0;

return 1;

}

四、排序问题1.选择法排序(升序)

基本思想:

1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;

2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置;

3)依次类推,选择了n-1次后,这个数列已按升序排列。

程序代码如下:void main()

{ int i,j,imin,s,a[10];

printf("\n input 10 numbers:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)

{ imin=i;

for(j=i+1;j<10;j++)

if(a[imin]>a[j]) imin=j;

if(i!=imin)

{s=a[i]; a[i]=a[imin]; a[imin]=s; }

printf("%d\n",a[i]);

}

}

2.冒泡法排序(升序)

基本思想:(将相邻两个数比较,小的调到前头)

1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;

2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;

3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。

程序段如下void main()

{ int a[10];

int i,j,t;

printf("input 10 numbers\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=0;j<=8;j++)

for(i=0;i<9-j;i++)

if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf("the sorted numbers:\n");

for(i=0;i<10;i++)

printf("%d\n",a[i]);

}

3.合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序)

基本思想:

1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;

2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;

3)将另一个数组剩余元素抄入C数组,合并排序完成。

程序段如下:void main()

{ int a[10],b[10],c[20],i,ia,ib,ic;

printf("please input the first array:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<10;i++)

scanf("%d",&b[i]);

printf("\n");

ia=0;ib=0;ic=0;

while(ia<10&&ib<10)

{ if(a[ia]

{ c[ic]=a[ia];ia++;}

else

{ c[ic]=b[ib];ib++;}

ic++;

}

while(ia<=9)

{ c[ic]=a[ia];

ia++;ic++;

}

while(ib<=9)

{ c[ic]=b[ib];

b++;ic++;

}

for(i=0;i<20;i++)

printf("%d\n",c[i]);

}

c语言常用算法归纳,C语言常用算法相关推荐

  1. c语言常用算法分析 微盘,C语言常用算法归纳.pdf

    C 语言常用算法归纳 应当掌握的一般算法 一.基本算法: 交换.累加.累乘 二.非数值计算常用经典算法: 穷举.排序(冒泡,选择).查找(顺序即线性) 三.数值计算常用经典算法: 级数计算(直接.简接 ...

  2. 机器学习:常见的机器学习算法归纳

    常见的机器学习算法归纳 1) .回归算法: 2) .基于实例的算法: 3) .决策树学习: 4) .贝叶斯方法: 5) .基于核的算法: 6) .聚类算法: 7) .降低维度算法: 8) .关联规则学 ...

  3. Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面...

    Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面 1. 常用算法1 1.1. 目录2 1.2. 定义和用法编辑2 1.3 ...

  4. 计算c53的c语言的程序,C程序设计的常用算法.doc

    ? HYPERLINK "/happy_dreamer/blog/item/902dbe2af96b2a25d52af16b.html" \o "C程序设计的常用算法&q ...

  5. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...

    分治算法,顾名思义就是"分而治之",即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法.这个技巧是很多高效 ...

  6. 求n的阶乘的算法框图_单片机常用的14个C语言算法

    问:怎么每天看到这种文章? 答:只需搜索公众号"51单片机学习网"免费关注 算法(Algorithm):计算机解题的基本思想方法和步骤. 算法的描述:是对要解决一个问题或要完成一项 ...

  7. 中常用的数据结构_C语言实现常用数据结构:基本概念(第0篇

    写在前面:为什么学习C语言数据结构 今天开始,我准备和一起分享学习C语言常用数据结构,这里不求事无巨细的掌握数据结构的方方面面,而是学习编程.考试等实际中常用的重要数据结构,这里以分享可以运行的代码为 ...

  8. c语言必背数据结构_C语言实现常用数据结构:简要一览(第1篇

    线性表 最简单的一种数据结构,具有相同类型的数据元素组成的序列.顺序表.链表是其两种简单实现. 备注:数组也可以算一种简单的线性表. 链表可以分为:带头结点的简单链表 不带头结点的简单链表静态链表 循 ...

  9. 常用查找法(C语言)

    常用查找法(C语言) 顺序查找法 原理: 顺序查找是非常简单常用的查找算法,基本思路:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(即m=x)时返回元素m的下标,如果比较到最后 ...

最新文章

  1. 动态规划之划分数组形成两个和相等的子集
  2. hdu 4937 Lucky Number(数学题 进制转换)2014多校训练第7场
  3. 《京东618实践:一元抢宝系统的数据库架构优化》阅读笔记
  4. java知识大全积累篇
  5. Linux 后台运行程序方法总结
  6. IDC:聚焦6+6,抓住数字化转型商机
  7. python输入时间限制_用Python计算用户输入时间
  8. 知名社交网络 Myspace 丢失 12 年用户数据,大型系统究竟如何做迁移?
  9. DelayedWorkQueue踩坑笔记
  10. 大一学科不挂科 速冲方法推荐(高数上+高数下+线代+大物)
  11. 微信小程序开发常见的错误
  12. 自己动手写2D物理引擎-初级篇(1)
  13. python增量爬虫_python网络爬虫——增量式爬虫
  14. MySQL的 初步认识 - 细节狂魔
  15. 树莓派_配置邮件客户端
  16. html正方形符号,HTML特殊字符显示
  17. Find My资讯|苹果 Find My 找到因交通事故坠崖的一名女子
  18. Flutter 关于flutter打包ipa
  19. Flink 流数据处理
  20. RestTemplate的用法

热门文章

  1. java桌面宠物swing实现
  2. Influxdb安全基线
  3. javaMai+Springl实现给QQ邮箱发邮件(带附件,html格式)
  4. android开发常用组件和第三方库(二)
  5. Python超级玛丽马里奥源代码
  6. Arduino UNO 单片机 读RFID RC522卡号发送Json数据
  7. 台式计算机技术参数响应表,货物报价表及技术参数响应表.doc
  8. 微信公众平台开发:接入JS-SDK和实现分享功能
  9. 不会-Redis 水滴石穿之(七)集群
  10. 发那科工业机器人io板_FANUC发那科机器人IO板信号板及更换教程