c語言中常用算法

1. 整數的各位分離

    void inte(int n)

     { 

            int i;

            while(n)

            {

                  i=n%10;

                  n=n/10;

             }

     }

2. C語言常考算法求最大、最小值

     例如:查找a[ ]數組中的最小值,n爲數組的大小

     int func(int a[ ], int n)

     {

        int max=a[0];

        for(int i=0;i<n;i++)

        {

            if(min>a[i]) min=a[i];

        }

          return min;   

     }

     例如:查找a[ ]數組中的最大值

     int func(int a[ ], int n)

     {

        int max=a[0];

        for(int i=0;i<n;i++)

        {

            if(max>a[i]) max=a[i];

        }

          return max;   

     }

3. C語言常考算法:階乘

    long func(int n)

    {

          int i;

          long t=1;

          for(i=2;i<=n;i++)

          {

            t*=i;

          }

          return t;

    }

4. C語言常考算法:判斷某數爲素數(素數是指只能被自己和1整除的數)

            int prime(int n)

                {

                     int m;

                     for(m=2;m<=sqrt(n);m++)

                         if(n%m==0)  return 0;

                     return 1;

                 }

5. C語言常考算法:求最大公約數         歐幾里得算法:

                  gcd( int m, int n)

                   {

                        int t,r;

                        if(m<n) {t=m; m=n;n=t;}

                        while(n!=0)

                        {

                           r=m%n;

                           m=n;

                           n=r;

                         }

                         return m;

                       }

6. C語言常考算法:求最小公倍數

    算法:兩數之積除以最大公約數所得的值即爲最小公倍數

          gcd( int m, int n)

                   {

                        int t,r;

                        while(n!=0)

                        {

                           r=m%n;

                           m=n;

                           n=r;

                         }

                         return (m*n)/m;

      

                }

7. C語言常考算法:數組元素逆置     第一個與最後一個交換,第二個與倒數第二個交換

     exchange(int a[ ], int n)

      {

        int i, t;

        for(i=0;i<n/2;i++)

        {

          t=a[i];

          a[i]=a[n-i-1];

          a[n-i-1]=t;

        }

      }

 

 

8. c語言常考算法:累加與累乘

 累加就是對若干個數求和,其最基本的思想就是”反覆的做加法”,一般來說,計算機每次只處理兩個數的相加運算,所以多個數相加必須通過多次的兩兩相加來實現

     例1:

     用c語言實現1+2+3+4+5+6+7+8+9+10的累加

     方法1:

     #include <stdio.h>

     void main( )                              

     {

        int i,sum;

        sum=0;

        for(i=1;i<=10;i++)

              sum=sum+i;

    printf(“%d”,sum);

     }

     方法2:

     #include <stdio.h>

     void main( )

     {

        int i,sum;

        sum=0;

        i=1;

        while( i<=10)

        {

              sum=sum+i

              i=i+1;

        }

        printf(“%d”,sum);

     }

     用c語言實現1*2*3*4*5*6*7*8*9*10的累加

     方法1:

     #include <stdio.h>

     void main( )                              

     {

        int i,sum;

        sum=1;

        for(i=1;i<=10;i++)

        {

               sum=sum*i;

     }

     printf(“%f”,sum);

     }

     方法2:

     #include <stdio.h>

     void main( )

     {

        int i,sum;

        sum=1;

        i=1;

        while( i<=10)

        {

              sum=sum*i

              i=i+1;

        }

        printf(“%f”,sum);

     }

9. C語言常考算法:冒泡排序

    思想:相臨的兩個數兩兩比較,如果第一個數大於第二個數,兩者交換位置,既將小的排前面,大的排後面

            sort(int a[ ], int n)

            {

              int i,j, t;

              for(i=n-1;i>0;i--)

               {

                   for(j=0; j<=i; j++)

                    if(a[j]>a[j+1])

                      {

                         t=a[j];

                         a[j]=a[j+1];

                         a[j+1]=t;

                       }

          }



發佈了18 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章