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 }

 

posted @ 2015-03-17 19:15  Joe_Shine  阅读(365)  评论(0编辑  收藏  举报