您的位置:首页 > 其它

一些比较基本的算法举例

2011-02-13 16:34 441 查看
因为前段时间期末考试,所以总结了一些特变简单,但是又比较典型的算法…

//累加
#include<stdio.h>
void main()
{
int n,i,sum=0;
printf("/n/n/n    please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+i;
printf("/n    sum=%d/n/n/n    ",sum);
}


//阶乘
#include<stdio.h>
void main()
{
int n,i,t=1;
printf("/n/n/n    please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
t=t*i;
printf("/n    resule=%ld/n/n/n    ",t);
}
//阶乘和
#include<stdio.h>
void main()
{
int n,i,t=1,sum=0;
printf("/n/n/n    please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
t=t*i;
sum=sum+t;
}
printf("/n    sum=%ld/n/n/n    ",sum);
}


//选择法
#include<stdio.h>
void main()
{
int a[10]={4,6,8,2,0,1,5,7,3,9};
int i,j,k;   //分别定义内层循环,外层循-环,中间变量
for(j=0;j<9;j++)
for(i=j+1;i<9;i++)   //内层循环
if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}       //在本次循环中,每次都使用a[j]位置的元素去比较
for(j=0;j<10;j++)
printf("%d/n",a[j]);
}
//冒泡法
#include<stdio.h>
void main()
{
int a[10]={4,6,8,2,0,1,5,7,3,9};
int i,j,k;   //分别定义内层循环,外层循-环,中间变量
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)   //内层循环
if(a[i]>a[i+1])
{
k=a[i];
a[i]=a[i+1];
a[i+1]=k;
}             //在本次循环中,每次都使用相同元素去比较
for(j=0;j<10;j++)
printf("%d/n",a[j]);
}


//求数组中最大值
#include<stdio.h>
void main()
{
int a[10]={4,6,8,2,0,1,5,7,3,9};
int i,max;
max=a[0];
for(i=0;i<10;i++)
if(a[i]>max)
max=a[i];
printf("max: %d/n",max);
}


//素数1
#include<stdio.h>
#include<math.h>
void main()
{
int i,k,m,flag=1;
printf("请输入数字: ");
scanf("%d",&m);
k=sqrtf(m);   //在VC6里面用sqrt
for(i=2;i<=k;i++)
if(m%i==0)
flag=0;
if(flag==1)
printf("%d 是素数/n",m);
else
printf("%d 不是素数y/n",m);
}
//素数2
#include<stdio.h>
#include<math.h>
void main()
{
int i,k,m,flag=1;
printf("0-100的素数是:");
for(i=1;i<=100;i++)     //循环要判断的数字
{
k=sqrtf(i);
for(m=2;m<=k;m++)
if(i%m==0)
break;     //相除等于0结束循环
if(m<=k)           //用于结束循环后的判断
continue;
else
printf("%5d",i);
}
printf("/n");
}


//最大公约/最小公倍
#include<stdio.h>
void main()
{
int p,m,n,r;
printf("Please input m,n: ");
scanf("%d,%d",&m,&n);
p=m*n;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}       //important
printf("它们的最大公约数为:%d/n",m);
printf("它们的最小公倍数为:%d/n",p/m);
}


//100以内素数
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,n,a[101];
for(i=0;i<100;i++)
a[i]=i;     //a[0]不用,只用a[1]-a[100]
a[1]=0;
for(i=2;i<(sqrtf(100));i++)
for(j=i+1;j<=100;j++)
{
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}                //把非素数挖掉
printf("/n");
for(i=2,n=0;i<=100;i++)
{
if(a[i]!=0)
{
printf("%5d",a[i]);
n++;
}
if(n==10)
{
printf("/n");
n=0;
}
}
printf("/n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: