课程咨询 :18820797144

广州C++培训 > 达内新闻 > 5个经典的C语言面试基础算法及代码
  • 5个经典的C语言面试基础算法及代码

    发布:dn      来源:dn      时间:2015-11-11

  • 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。


    所以,今天萌小妹给大家分享5个经典的C语言面试基础算法及代码,你值得拥有哟!!!

    1、计算Fibonacci数列


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

    C语言实现的代码如下:

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

    #include <stdio.h>

    int main()

    {

    int count, n, t1=0, t2=1, display=0;

    printf("Enter number of terms: ");

    scanf("%d",&n);

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

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

    while (count<n)

    {

    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 to certain number entered by user. */

    #include <stdio.h>

    int main()

    {

    int t1=0, t2=1, display=0, num;

    printf("Enter an integer: ");

    scanf("%d",&num);

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

    display=t1+t2;

    while(display<num)

    {

    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 is palindrome or not */

    #include <stdio.h>

    int main()

    {

    int n, 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 and it'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 is prime or not. */

    #include <stdio.h>

    int main()

    {

    int n, i, flag=0;

    printf("Enter a 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 <stdio.h>

    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("* ");

    }

    printf("\n");

    }

    return 0;

    }


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

    1

    1 2

    1 2 3

    1 2 3 4

    1 2 3 4 5


    源代码:

    #include <stdio.h>

    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");

    }

    return 0;

    }


    用 * 打印半金字塔

    * * * * *

    * * * *

    * * *

    * *

    *


    源代码:

    #include <stdio.h>

    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 <stdio.h>

    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<stdio.h>

    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<rows-i;++space)

    printf(" ");

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

    printf("* ");

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

    printf("* ");

    printf("\n");

    }

    return 0;

    }

    5、检查一个数能不能表示成两个质数之和


    源代码:

    #include <stdio.h>

    int prime(int n);

    int main()

    {

    int n, i, flag=0;

    printf("Enter a positive integer: ");

    scanf("%d",&n);

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

    {

    if (prime(i)!=0)

    {

    if ( prime(n-i)!=0)

    {

    printf("%d = %d + %d\n", n, i, n-i);

    flag=1;

    }

    }

    }

    if (flag==0)

    printf("%d can't be expressed as sum of two prime numbers.",n);

    return 0;

    }

    int prime(int n) /* Function to check prime number */

    {

    int i, flag=1;

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

    if(n%i==0)

    flag=0;

    return flag;

    }


    结果输出:

    Enter a positive integer: 34

    34 = 3 + 31

    34 = 5 + 29

    34 = 11 + 23

    34 = 17 + 17

    推荐文章

上一篇:c++学习笔记(1.c到c++的升级)

下一篇:单片机C语言基础编程源码六则

最新开班日期  |  更多

c++--高薪就业班

c++--高薪就业班

开班日期:5月31日

c++--免费训练营

c++--免费训练营

开班日期:5月31日

c++--零基础全日制班

c++--零基础全日制班

开班日期:5月31日

c++--零基础周末班

c++--零基础周末班

开班日期:5月31日

  • 网址:http://gz.c.tedu.cn     地址:广州市天河北五山路 141 号尚德大厦 627
  • 课程培训电话:18820797144     全国服务监督电话:400-111-8989
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56