数据结构:C语言常见算法总结
【1】求最大值与最小值.
#include <stdio.h>
void main()
{
int num[5],max,min,i;
printf(\"请输入5个数字:\")
for(i=0;i<5;i++)
scanf(\"%d\",&num)
max=num[0];
min=num[0];
for(i=1;i<5;i++)
{
if(max<num)
max=num;
if(min>num)
min=num;
}
printf(\"\\n最大值为:%d\",max);
printf(\"\\n最小值为:%d\",min);
}
【2】查找:
#include <stdio.h>
#define N 10
void main()
{
int i;
int num[N],search;
printf(\"请输入%d个数组元素:\\n\",N);
for(i=0;i<N;i++)
{
scanf(\"%d\",&num);
}
printf(\"\\n请输入您要查找的元素:\");
scanf(\"%d\",&search);
for(i=0;i<N;i++)
{
if(num==search)
{
break;
}
}
if(i<N)
printf(\"\\n在数组的第%d个位置找到了数字%d\\n\",search);
printf(\"没有找到\"); } 【3】排序: #include <stdio.h> #define N 5 void main() { int i,j; int grade[N],temp; printf(\"\\n输入%d个数字:\\n\",N); for(i=0;i<N;i++) { scanf(\"%d\",&grade); } for(i=0;i<N;i++) { for(j=0;j<N-i-1;j++) { if(grade[j]<grade[j+1]) { temp=grade[j+1]; grade[j+1]=grade[j]; grade[j]=temp; } } } printf(\"\\n排序后的成绩为:\\n\"); for(i=0;i<N;i++) { printf(\"%d\",grade); } } 【4】插入: #include <stdio.h> #define N 5 void main() { int i,j; int num[N+1]={23,45,60,67,88},in; printf(\"\\n插入前的数组元素:\\n\"); for(i=0;i<N;i++) { printf(\"%d\",num);
printf(\"请输入一个要插入的数:\"); scanf(\"%d\",&in); for(i=0;i<N;i++) { if(num>in)//找到位置并跳出 break; } for(j=N;j>i;j--)//为要插入的数字留出位置 { nm[j]=num[j-1]; } num=in;//将来插入的数保存在该位置 printf(\"\\n插入后的数组元素:\\n\"); for(i=0;i<N+1;i++) { printf(\"%d\",num); } printf(\"\\n\"); } OK,完成.为以后打好基础,一起加油哦.
第二篇:C语言常考算法总结
1 t=1/j与t=1.0/j是不一样的;if(a==3)避免这个错误则应该先写3=a{} 2统计3~100之间的所有素数
#include<math.h>
main()
{
Int n,i,k;
for(n=3;n<100;n+=2)//加二是因为偶数肯定不是素数
{
K=n-1;
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>=k+1) {printf(“%d”,n)}
}
}
3同构数
是指该数出现在他的平方的右边的数
main()
{
Int j,p;
for(j=1;j<=100;j++)
{
p=j*j;
if(j<10){if(p%10==j) printf(“%d”,j);}
else if(p%100==j) printf(“%d”,j);//因为只是求1~100以内的,所以到此为止 }
}
4水仙花数
main()
{
int p,j,k,n;
for(n=100;n<1000;n++)
{
j=n/100;p=n/10-j*10;k=n%10;
if(n==j*j*j+p*p*p+k*k*k)
printf(“%4d”,n);
}
}
5最大公约数
#include
void main()
{
int n,m,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1<num2) { temp=num1;nm1=num2;num2=temp;} m=num1;n=num2;
while(n!=0) {temp=m%n;m=n;n=temp;}
printf(“最大公约数:%d\n”,m);
printf(“最小公倍数:%d\n”,num1*num2/m) }