在面试中,你会经常遇到的10大C语言基础算法(上)

算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。http://www.fdjzxyy.com

1、计算Fibonacci数列

Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。

C语言实现的代码如下:

/* Displaying Fibonacci sequence up to nthterm where n is entered by user. */

#include

int main()

{

  intcount, n, t1=0, t2=1, display=0;

 printf("Enter number of terms: ");

 scanf("%d",&n);

 printf("Fibonacci Series: %d+%d+", t1, t2); /* Displayingfirst two terms */

 count=2;    /* count=2 becausefirst two terms are already displayed. */

 while (count

  {

     display=t1+t2;

     t1=t2;

     t2=display;

     ++count;

     printf("%d+",display);

  }

 return 0;

}

结果输出:

Enter number of terms: 10

Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+

也可以使用下面的源代码:

/* Displaying Fibonacci series up tocertain number entered by user. */

 

#include

int main()

{

  intt1=0, t2=1, display=0, num;

 printf("Enter an integer: ");

  scanf("%d",&num);

 printf("Fibonacci Series: %d+%d+", t1, t2); /* Displayingfirst two terms */

 display=t1+t2;

 while(display

  {

     printf("%d+",display);

     t1=t2;

     t2=display;

     display=t1+t2;

  }

 return 0;

}

结果输出:

Enter an integer: 200

Fibonacci Series:0+1+1+2+3+5+8+13+21+34+55+89+144+

2、回文检查

源代码:

/* C program to check whether a number ispalindrome or not */

#include

int main()

{

  intn, reverse=0, rem,temp;

 printf("Enter an integer: ");

 scanf("%d", &n);

  temp=n;

 while(temp!=0)

  {

    rem=temp%10;

    reverse=reverse*10+rem;

    temp/=10;

 } 

/* Checking if number entered by user andit's reverse number is equal. */ 

 if(reverse==n) 

     printf("%d is a palindrome.",n);

 else

     printf("%d is not a palindrome.",n);

 return 0;

}

结果输出:

Enter an integer: 12321

12321 is a palindrome.

3、质数检查

注:1既不是质数也不是合数。

源代码:

/* C program to check whether a number isprime or not. */

#include

int main()

{

  intn, i, flag=0;

  printf("Entera positive integer: ");

 scanf("%d",&n);

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

  {

     if(n%i==0)

     {

         flag=1;

         break;

     }

  }

  if(flag==0)

     printf("%d is a prime number.",n);

 else

     printf("%d is not a prime number.",n);

 return 0;

}

结果输出:

Enter a positive integer: 29

29 is a prime number.

4、打印金字塔和三角形

使用 * 建立三角形

*

* *

* * *

* * * *

* * * * *

源代码:

#include

int main()

{

   int i,j,rows;

    printf("Enterthe number of rows: ");

   scanf("%d",&rows);

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

    {

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

       {

          printf("* ");

       }

       printf("\n");

    }

   return 0;

}

如下图所示使用数字打印半金字塔。

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

源代码:

#include

int main()

{

   int i,j,rows;

   printf("Enter the number of rows: ");

   scanf("%d",&rows);

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

    {

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

       {

          printf("%d ",j);

       }

       printf("\n");

    }

    return0;

}

用 * 打印半金字塔

* * * * *

* * * *

* * *

* *

*

源代码:

#include

int main()

{

   int i,j,rows;

   printf("Enter the number of rows: ");

   scanf("%d",&rows);

   for(i=rows;i>=1;--i)

    {

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

       {

          printf("* ");

       }

   printf("\n");

    }

   return 0;

}

用 * 打印金字塔

       *

     * * *

    ** * * *

  * ** * * * *

* * * * * * * * *

源代码:

#include

int main()

{

   int i,space,rows,k=0;

   printf("Enter the number of rows: ");

   scanf("%d",&rows);

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

    {

       for(space=1;space<=rows-i;++space)

       {

          printf("  ");

       }

       while(k!=2*i-1)

       {

          printf("* ");

          ++k;

       }

       k=0;

       printf("\n");

    }

   return 0;

}

用 * 打印倒金字塔

* * * * * * * * *

  * ** * * * *

    ** * * *

     * * *

       *

源代码:

#include

int main()

{

   int rows,i,j,space;

   printf("Enter number of rows: ");

   scanf("%d",&rows);

   for(i=rows;i>=1;--i)

    {

        for(space=0;space

          printf("  ");

       for(j=i;j<=2*i-1;++j)

         printf("* ");

       for(j=0;j

           printf("* ");

       printf("\n");

    }

   return 0;

}

5、简单的加减乘除计算器

源代码:

/* Source code to create a simplecalculator for addition, subtraction, multiplication and division usingswitch...case statement in C programming. */

 

# include

int main()

{

   char o;

   float num1,num2;

   printf("Enter operator either + or - or * or divide : ");

   scanf("%c",&o);

   printf("Enter two operands: ");

   scanf("%f%f",&num1,&num2);

   switch(o) {

       case '+':

           printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);

           break;

       case '-':

           printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);

           break;

       case '*':

           printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);

           break;

       case '/':

           printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);

            break;

       default:

           /* If operator is other than +, -, * or /, error message is shown */

           printf("Error! operator is not correct");

           break;

    }

   return 0;

}

结果输出:

Enter operator either + or - or * or divide: -

Enter two operands: 3.4

8.4

3.4 - 8.4 = -5.0

你可能感兴趣的:(在面试中,你会经常遇到的10大C语言基础算法(上))