C语言算法入门
1、变量交换
1 #include<stdio.h> 2 int main() 3 { 4 void swap(int *a,int *b); //声明swap函数 5 int x=3,y=4; 6 swap(&x,&y); 7 printf("%d,%d\n",x,y); 8 getch(); 9 } 10 void swap(int *a,int *b) 11 { 12 int c; 13 c=*a; 14 *a=*b; 15 *b=c; 16 }
2、实现1+2+3+4+...+n
法一:
1 #include<stdio.h> 2 int main() 3 { 4 int add(int n); //声明加函数 5 int n,s; 6 scanf("%d",&n); 7 s=add(n); 8 printf("%d",s); 9 getchar(); 10 } 11 int add(int n) 12 { 13 int sum=0; 14 for(int i=0;i<=n;i++) 15 { 16 sum+=i; 17 } 18 return sum; 19 }
法二:
1 #include<stdio.h> 2 int main() 3 { 4 int add(int a); //声明函数 5 int n; 6 scanf("%d",&n); 7 printf("%d",add(n)); 8 getchar(); 9 } 10 int add(int a) 11 { 12 int i=0; 13 int sum=0; 14 while(i<=a) 15 { 16 sum+=i; 17 i++; 18 } 19 return sum; 20 }
法三:
1 #include<stdio.h> 2 int main() 3 { 4 int add(int a); //声明函数 5 int n; 6 scanf("%d",&n); 7 printf("1+2+3+...+%d的值为:%d\n",n,add(n)); 8 getchar(); 9 } 10 int add(int a) 11 { 12 int i=0; 13 int sum=0; 14 do 15 { 16 sum+=i; 17 i++; 18 }while(i<=a); 19 return sum; 20 }
3、实现阶乘!n=1*2*...*n
1 #include<stdio.h> 2 int main() 3 { 4 long multi(long a); //声明函数 5 long n; 6 scanf("%d",&n); 7 long s=multi(n); 8 printf("%d\n",s); 9 getchar(); 10 } 11 long multi(long a) 12 { 13 long sum=1; 14 if(a==0) 15 { 16 sum=0; 17 } 18 else 19 { 20 for(long i=1;i<=a;i++) 21 { 22 sum*=i; 23 } 24 } 25 return sum; 26 }
4、查找一维数组中的最大值。
1 #include <stdio.h> //查找一维数组中的最大值 2 int main(int argc, char *argv[]) 3 { 4 int Max(int a[],int n); 5 int x[5]={3,54,5,2,6}; 6 int m=Max(x,5); 7 printf("%d",m); 8 getch(); 9 } 10 int Max(int a[],int n) //n为数组的大小 11 { 12 int i,max=a[0]; 13 for(i=1;i<n;i++) 14 { 15 if(a[i]>a[0]) 16 { 17 return a[i]; 18 } 19 } 20
5、求数组的和以及平均值。
1 #include <stdio.h> //求数组的和以及平均值 2 float ave(int a[],int n); 3 int main(int argc, char *argv[]) 4 { 5 int x[5]={1,3,4,5,8}; 6 printf("%f",ave(x,5)); 7 getch(); 8 } 9 float ave(int a[],int n) 10 { 11 int i,sum=0; 12 for(i=0;i<n;i++) 13 { 14 sum+=a[i]; 15 } 16 return sum/n; 17 }
6、计数,求数组中不及格人数。
1 #include <stdio.h> //计数,求不及格人数 2 int num(int a[],int n); 3 int main(int argc, char *argv[]) 4 { 5 int x[4]={56,23,90,78}; 6 printf("%d",num(x,4)); 7 getch(); 8 } 9 int num(int a[],int n) 10 { 11 int i,j=0; 12 for(i=0;i<n;i++) 13 { 14 if(a[i]<60) 15 { 16 j++; 17 } 18 } 19 return j; 20 }
7、数组元素逆序排列
法一:
1 #include <stdio.h> //数组元素逆序排列 2 void unlist(int a[],int n); 3 int main(int argc, char *argv[]) 4 { 5 int k,x[4]={3,5,9,43}; 6 unlist(x,4); 7 for(k=0;k<4;k++) 8 { 9 printf("%d ",x[k]); 10 } 11 } 12 void unlist(int a[],int n) 13 { 14 int i,j,t; 15 for(i=0,j=n-1;i<j;i++,j--) 16 { 17 t=a[i]; 18 a[i]=a[j]; 19 a[j]=t; 20 } 21 }
法二:
1 #include <stdio.h> //数组元素逆序排列指针法 2 void unlist(int *a,int n); 3 int main(int argc, char *argv[]) 4 { 5 int k; 6 int x[4]={3,5,9,43}; 7 unlist(x,4); 8 for(k=0;k<4;k++) 9 { 10 printf("%d ",x[k]); 11 } 12 } 13 void unlist(int *a,int n) 14 { 15 int i,j,t; 16 for(i=0,j=n-1;i<j;i++,j--) 17 { 18 t=*(a+i); 19 *(a+i)=*(a+j); 20 *(a+j)=t; 21 } 22 }
8、数组中插入元素。
1 #include <stdio.h> //数组中插入元素 2 void insert1(int a[],int n,int l,int key); //在指定的位置插入一个数:在a[l] 后面插入一个数key 3 void insert2(int a[],int n,int key); //在有序数组中插入一个数 4 int main(int argc, char *argv[]) 5 { 6 int k; 7 int x[5]={3,5,9,43}; 8 insert1(x,5,1,45); 9 for(k=0;k<5;k++) 10 { 11 printf("%d ",x[k]); 12 } 13 printf("\n"); 14 //数组指定位置插入 15 int y[5]={3,5,9,43}; 16 insert2(y,5,7); 17 for(k=0;k<5;k++) 18 { 19 printf("%d ",y[k]); 20 } 21 printf("\n"); 22 //有序数组插入 23 getch(); 24 } 25 26 void insert1(int a[],int n,int l,int key) 27 { 28 int i; 29 for(i=n-1;i>l;i--) 30 { 31 a[i]=a[i-1]; 32 } 33 a[l]=key; 34 } 35 void insert2(int a[],int n,int key) 36 { 37 int i,j; 38 for(i=0;i<n;i++) 39 { 40 if(key>a[i]&&key<a[i+1]) 41 { 42 for(j=n-1;j>i+1;j--) 43 { 44 a[j]=a[j-1]; 45 } 46 a[i+1]=key; 47 } 48 } 49 }
9、删除字符串中的所有'*'号
1 //给定AA***AA*,设计程序删除所有* 2 #include<stdio.h> 3 int main() 4 { 5 void del(char *a); 6 char x[]={'A','A','*','*','*','A','A','*'}; 7 del(x); 8 printf("%s",x); 9 getch(); 10 } 11 void del(char *a) 12 { 13 int j,i=0; 14 for(j=0;a[j]!='\0';j++) 15 { 16 if(a[j]!='*') 17 { 18 a[i++]=a[j]; 19 } 20 } 21 a[i]='\0'; 22 }