杭电专升本C语言常用算法复习.docx
- 文档编号:9894857
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:20
- 大小:21.22KB
杭电专升本C语言常用算法复习.docx
《杭电专升本C语言常用算法复习.docx》由会员分享,可在线阅读,更多相关《杭电专升本C语言常用算法复习.docx(20页珍藏版)》请在冰豆网上搜索。
杭电专升本C语言常用算法复习
杭电专升本C语言常用算法复习
1)闰年:
a.能被4整除,但不能被100整除b.能被4整除,又能被400整除。
(y%4==0&&y%100!
=0||y%400==0)
———————————————————————————————————————
2)菲波拉契数列(前20个数)
intf1,f2,i;
f1=1,f2=1;
for(i=0;i<10;i++)
{
if(i%2==0)printf("\n");
printf("%8d%8d",f1,f2);
f1=f1+f2;
f2=f2+f1;
}
——————————————————————————————————————————————
3)判断素数:
输入m,让m被2到
除,如果m都不能被2到
中任何一个整数整除,则m就是素数。
循环判断,最后一次i的值再加1。
intm,k,i;
scanf_s("%d",&m);
k=sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%d是素数!
",m);
elseprintf("%d不是素数!
",m);
——————————————————————————————————————————————
//以下程序输出100-200所有的素数
intk,i,j,n=0;
for(j=101;j<200;j++)
{
k=sqrt((double)j);
for(i=2;i<=k;i++)
if(j%i==0)break;
if(i>k){printf("%d",j);n++;if(n%4==0)printf("\n");};
}
——————————————————————————————————————————————
4)求最大公约数(辗转相除法,又称欧几里得算法)和最小公倍数(a*b/最大公约数)
inta,b,r,m,n;
scanf("%d,%d",&a,&b);
m=a;n=b;
if(a
r=a%b;
while(r!
=0){a=b;b=r;r=a%b;};
printf("%d,%d两数的最大公约数是%d\n",m,n,b);
printf("%d,%d两数的最小公倍数是%d\n",m,n,m*n/b);
——————————————————————————————————————————————
5)排序法
a.选择排序法:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素。
inta[10]={8,7,9,2,5,3,1,0,4,6};
inti,j,t;
for(i=0;i<10;i++)//进行9轮排序,即n-1轮
for(j=i+1;j<10;j++)//每轮比较10-(i+1)次
if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;};
for(i=0;i<10;i++)printf("%d",a[i]);
输出结果为:
0123456789
b.冒泡排序法:
依次比较相邻的两个数,将小数放在前面,大数放在后面。
inta[10]={8,7,9,2,5,3,1,0,4,6};
inti,j,t;
for(i=0;i<9;i++)//进行9轮比较
for(j=0;j<9-i;j++)//每轮比较(9-i)-0次
if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;};
for(i=0;i<10;i++)printf("%d",a[i]);
c.插入排序法:
输入一个元素,插入到一个已经排好序的数列中的适当位置,使数列依然有序。
inta[11]={2,3,4,5,7,8,9,12,14,15};
inti,j,m;
scanf("%d",&m);
for(i=0;i<10;i++)
if(a[i]>m)break;
for(j=10;j>=i;j--)
a[j]=a[j-1];
a[i]=m;
for(i=0;i<=10;i++)printf("%d",a[i]);
输入:
6<回车>
输出结果:
2,3,4,5,6,7,8,9,12,14,15
———————————————————————————2010-4-2———
6)递归调用
a.计算阶乘1!
+2!
+3!
+4!
+。
。
。
+n!
intfacn(intn)
{
intf=1;
if(n==0||n==1)f==1;
elsef=n*facn(n-1);
returnf;
}
intmain()
{
intn,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=facn(i);
printf("%d\n",sum);
return0;
}
b.汉诺塔
voidmove(charA,charC)
{printf("%c-->%c\n",A,C);
}
voidhanio(intn,charA,charB,charC)
{
if(n==1)move(A,C);
else
{
hanio(n-1,A,C,B);
move(A,C);
hanio(n-1,B,A,C);
}
}
intmain()
{
intn;
scanf("%d",&n);
hanio(n,'A','B','C');
return0;
}
7).输入一个3X4的矩阵,找到最大值后与最后元素交换以行列对齐的方式输出:
inta[3][4],i,j;
inttemp,m,n;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
temp=a[2][3];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 杭电专升 语言 常用 算法 复习