常见算法.docx
《常见算法.docx》由会员分享,可在线阅读,更多相关《常见算法.docx(16页珍藏版)》请在冰点文库上搜索。
常见算法
1、求阶乘
#include
voidmain()
{
inti,t;
i=1;
t=2;
while(t<=5)
{
i=i*t;
t=t+1;
}
printf("5的阶乘等于%d\n",i);
}
2、求鸡和兔的个数
/*鸡兔同笼,总头数16,总脚数40*/
#include
voidmain()
{
inth,f,x,y;
h=16;
f=40;
y=(f-2*h)/2;
x=h-y;
printf("cock=%d,rabbit=%d\n",x,y);
}
3、判断闰年
#include
voidmain()
{
intyear,leap;
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
leap=1;
elseleap=0;
if(leap)
printf("%dis",year);
elseprintf("%disnot",year);
printf("aleapyear!
\n");
}
4、求最大值
#include
main()
{
inta,b,c,max;
printf("pleaseinputa,b,c:
\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("themaxis:
%d\n",max);
}
5、大小写字母转换
#include
voidmain()
{
charc1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
printf("%c,%c\n",c1,c2);
}
6、自增(自减)
#include
voidmain()
{
inti=0,j;
j=i++;
printf("%d,%d\n",i,j);
i=0;
j=++i;
printf("%d,%d\n",i,j);
}
7、强制转换
#include
voidmain()
{
floatx;
inti;
x=32767.0;
i=(int)x%3;
printf("x=%f,i=%d\n",x,i);
}
注意下面的区别/*(int)(x+y),(int)x+y;*/
8、无符号数据的处理(重要,结合二进制位来考虑)
#include
voidmain()
{
unsignedinta=65535;
intb=-2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d,%o,%x,%u\n",b,b,b,b);
}
9、中间桥变量的运用
#include
voidmain()
{
inta,b,t;
scanf("%d,%d",&a,&b);
if(a>b)
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n",a,b);}
本题旨在突出if条件判断只能控制其后的一句,包括一句符合语句
10、条件运算符
#include
voidmain()
{
charch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
printf("%c\n",ch);
}
11、费波那列数列
#include
voidmain()
{
longintf1,f2;
inti;
f1=1;
f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld%12ld",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}
12、打印倒直角三角形
#include
voidmain()
{
inti,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=10+1-i;j++)
printf("*");
printf("\n");
}
}
13、打印等腰三角形
#include
voidmain()
{
inti,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=10-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
14、打印直角三角形
#include
voidmain()
{
inti,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
15、猴子吃桃
#include
voidmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("total=%d\n",x1);
}
16、九九乘法口诀
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{printf("%2d*%2d=%2d",i,j,i*j);
if(i==j)printf("\n");
}
}
printf("\n");
}
17、求最大公约和最小公倍数
#include
voidmain()
{
intp,r,n,m,temp;
printf("请输入两个正整数:
");
scanf("%d,%d",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;/*两数之积,用于公倍数计算*/
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:
%d\n",n);
printf("它们的最小公倍数为:
%d\n",p/n);/*辗转算法*/
}
18、求水仙花数
#include
voidmain()
{
inti,j,k,n;
printf("水仙花数是:
");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d",n);
}
printf("\n");
}
19、打印钻石图案
#include
voidmain()
{
chardiamond[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},
{'','*','','*'},{'','','*'}};
inti,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%c",diamond[i][j]);
printf("\n");
}
}
20、冒泡法排序
#include
voidmain()
{
inta[11];
inti,j,t;
printf("input10numbers:
\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=10-1;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("thesortednumbers:
\n");
for(i=1;i<11;i++)
printf("%4d",a[i]);
printf("\n");
}
21、用数组解决费波那列数列
#include
voidmain()
{
inti;
intf[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)
printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
22、行列互换
#include
voidmain()
{
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf("arraya:
\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("arrayb:
\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
23、递归求阶乘
#include
floatfac(intn)
{
floatf;
if(n<0)
{
printf("n<0,dataerror!
");
f=-1;
}
else
if(n==0||n==1)f=1;
elsef=fac(n-1)*n;
return(f);
}
voidmain()
{
intn;
floaty;
printf("inputaintegernumber:
");
scanf("%d",&n);
y=fac(n);
printf("%d!
=%15.0f\n",n,y);
}
24、静态变量求阶乘
#include
voidmain()
{
intfac(intn);
inti;
for(i=1;i<=5;i++)
printf("%d!
=%d\n",i,fac(i));
}
intfac(intn)
{
staticintf=1;
f=f*n;
return(f);
}
25、外部变量被屏蔽
#include
inta=3,b=5;
voidmain()
{
intmax(int,int);
inta=8;
printf("%d\n",max(a,b));
}
intmax(inta,intb)
{
intc;
c=a>b?
a:
b;
return(c);
}
26、选择法排序(重要)
#include
voidmain()
{
voidsort(intarray[],intn);
inta[10],i;
printf("enterthearray\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("thesortedarray:
\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
voidsort(intarray[],intn)
{
inti,j,k,t;
for(i=0;i{
k=i;
for(j=i+1;jif(array[j]k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}