`
xieting0911
  • 浏览: 6163 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

C程序设计的常用算法汇编2

 
阅读更多
一、判断素数
只能被1和本身整除的正整数称为素数。
基本思想:在判断数m是否为素数时,首先把m作为被除数,将2—sqrt(m)的所有数字依次作为除数,去除m,只要有一个数能将m整除,则m不是素数;否则,如果都除不尽,则m就是素数。(可用以下程序段实现)
#include  <math.h>
void main()
{ int m,i,k;
printf("please input a number:\n");
scanf("%d",&m);
k=sqrt(m);           /*使用此函数一定要加头文件#include  <math.h>*/
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k)
printf("该数是素数");
else
printf("该数不是素数");
}

将其写成一函数,若为素数返回1,不是则返回0
int prime( int m)
{int i,k;
 if(m==1)  return 0;
for(i=2;i<=k-1;i++)
if(m%i==0) return 0;
return 1;
}

四、求最值
例如求最小值算法思想:
定义变量min用于存放当前所有找到的最小数,a为已知数组。算法步骤如下:
1)在min中存放第1个数,比较从数组中的第二个元素开始。
2)数组a中每个元素依次与min中的数组相比,小者放入min中。
3)比较完数组的最后一个元素,算法结束。Min中数为所求。
程序如下:
求最大值:
max=a[0];
 for(i=0;i<n;i++)
    if(a[i]>max)  max=a[i];
int minvalue(int a[],int n)
{int i,min;
 min=a[0];
 for(i=0;i<n;i++)
    if(a[i]<min)  min=a[i];
 return min;
}
main()
{ int a[10]={12,45,7,8,96,4,10,48,2,46},i,min;
  for(i=0;i<10;i++)
     printf(“%3d”,a[i]);
  printf(“\n”);  min=minvalue(a,10);  printf(“the result is:%d”, min); }

五、排序问题
1.选择法排序(升序)
基本思想:
1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;
2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置;
3)依次类推,选择了n-1次后,这个数列已按升序排列。

自定义函数形式
void sort(int a[], int n)
{ int i,j,imin,s;
for(i=0;i<n-1;i++)
{ imin=i;
for(j=i+1;j<n;j++)
if(a[imin]>a[j]) imin=j;
if(i!=imin)
{s=a[i]; a[i]=a[imin]; a[imin]=s; }
}
} 
程序代码如下:
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()

自定义函数形式:

void sort(int a[], int n)
{ int i,j,t;
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;}
   }
{ 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]<b[ib])
{ 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];
ib++;ic++;
}
for(i=0;i<20;i++)
printf("%d\n",c[i]);
}
分享到:
评论

相关推荐

    单片机汇编语言及程序设计

    在进行应用汇编语言程序设计时,需要先确定合适的算法,良好的算法能提高程序效率。此外,画出程序框图有助于理解程序流程。在单片机编程中,定点数运算是一个常见任务,定点数分为两类:小数点固定的数值,可以是...

    FORTRAN算法汇编

    这个"FORTRAN算法汇编"集合可能包含了各种FORTRAN编写的程序和算法,旨在帮助程序员和科研人员解决实际问题。 FORTRAN语言最初于1957年由IBM公司开发,其设计目标是简化数值计算和科学编程。FORTRAN语法简洁,对于...

    Intel汇编语言程序设计 第四版

    本书全面细致地讲述了汇编语言程序设计的各个方面。从微处理器体系结构、工作机制到指令集;从最基本的编译器链接器的使用到高级过程、结构和宏的使用;从用纯汇编编写程序到用VC++,BC++等最新编译器与汇编的混合...

    Intel汇编语言程序设计

    Intel汇编语言程序设计是一门面向对操作系统基础、微处理器体系结构和程序设计感兴趣的读者的课程。它不仅覆盖了基本的汇编语言编程,还深入探讨了Intel处理器架构,尤其是32位汇编语言应用的程序设计。在这一领域内...

    算法与程序设计会考复习知识点.doc

    算法与程序设计会考复习知识点 以下是从给定的文件中生成的相关知识点: 计算机解决问题的基本过程 计算机解决问题的基本过程包括:分析问题、设计算法、编写程序、运行和调试程序、问题解决。这些步骤都是计算机...

    数字电子琴程序设计(用汇编语言编写)

    ### 数字电子琴程序设计(用汇编语言编写) #### 概述 本文将详细介绍一个基于51单片机的电子琴程序设计案例,该程序采用汇编语言编写,适用于初学者了解电子琴的基本工作原理及其编程方法。通过本案例的学习,...

    汇编 子程序设计 阶乘

    在汇编语言编程中,子程序设计是一种常用的技术,它将复杂的任务分解为一系列可复用的函数。在本实验报告中,重点讨论了如何利用递归子程序来计算阶乘,这是一种高效的算法设计方法。递归子程序是指在执行过程中会...

    程序设计的基本方法汇编语言描述

    汇编语言程序设计的基本步骤包括分析问题、确定算法、绘制流程图、分配存储空间、编写程序、静态检查以及上机调试。 【顺序程序设计】 顺序程序设计是最基础的编程结构,程序按照语句的顺序逐条执行,没有分支和...

    《汇编语言与程序设计》课后习题答案

    《汇编语言与程序设计》是一门深入计算机底层运行机制的重要课程,主要研究如何用机器可识别的语言编写程序。汇编语言是介于高级语言和机器语言之间的一种编程语言,它将每一条指令对应到机器码,使得程序员能更直观...

    汇编语言程序设计课件

    【汇编语言程序设计课件】是华中科技大学开设的一门课程,主要针对IBM-PC186架构的宏汇编语言进行深入讲解。汇编语言是计算机科学的基础,它是直接对应于机器指令集的编程语言,每一个指令都与硬件操作紧密相连。这...

    项目4汇编语言程序设计.ppt

    "项目4汇编语言程序设计" 程序设计是计算机领域中一个非常重要的概念,它是指按照特定的规则,把特定的功能语句和基本结构按照特定的顺序排列起来,形成一个有特定功能的程序。程序设计=结构+算法,程序设计就像盖...

    汇编程序设计题--上机题

    【汇编程序设计题--上机题】 汇编语言是一种低级编程语言,它与机器指令密切相关,用于编写操作系统、设备驱动程序等底层程序。在本题中,我们将通过一系列的上机实验来掌握汇编语言程序设计的基本技能。 ### 第一...

    第1章程序设计与算法.pptx

    程序设计与算法是计算机科学的基础,它涉及到如何利用计算机解决问题的方法和步骤。程序是一系列有序指令的集合,这些指令由程序员编写,目的是让计算机执行特定的任务。程序设计语言是用来编写程序的工具,它们分为...

    Intel汇编语言程序设计(第五版)_中文版

    从给定的信息来看,主要关注的是“Intel汇编语言程序设计(第五版)_中文版”这一书籍,这表明我们正在探讨的主题是Intel架构下的汇编语言编程。Intel汇编语言是一种低级编程语言,主要用于直接控制计算机硬件,尤其是...

    imb-pc汇编程序设计答案

    在IBM-PC汇编语言程序设计的学习过程中,掌握汇编程序设计是至关重要的。沈美明和温冬蝉合著的《IBM-PC汇编语言程序设计(第二版)》是一本广泛使用的教材,它深入浅出地介绍了IBM个人计算机上的汇编语言编程。课后...

    东北大学汇编语言第05章_顺序结构程序

    本章“东北大学汇编语言第05章_顺序结构程序”主要探讨了程序设计的基础知识,包括程序设计步骤、流程图的应用以及汇编语言中的基本控制结构和常用指令。 5.1 程序设计的步骤是程序开发的核心流程,包括: 1. 分析...

    第四章汇编语言程序设计.ppt

    在汇编语言程序设计中,我们可以使用汇编语言来实现各种算法和数据结构,例如两个无符号双字节数相加的程序。该程序包括 CLR C 指令、MOV 指令、AD1 循环等。 汇编语言程序设计是一种低级语言编程的基本技能,对于...

    汇编语言程序设计1

    综上所述,8086汇编语言程序设计实验不仅要求学生掌握汇编语言编程技能,还要求学生综合运用数据结构、算法设计、界面设计等计算机科学基础知识,以实现一个功能完备的计算器程序。通过对该实验的学习,学生可以...

Global site tag (gtag.js) - Google Analytics