C语言 百文网手机站

10个经典的C语言面试基础算法及代码

时间:2021-04-16 11:50:15 C语言 我要投稿

10个经典的C语言面试基础算法及代码

  算法是一个程序和软件的灵魂,下面小编为大家整理了10个经典的C语言面试基础算法及代码,希望能帮到大家!

10个经典的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

  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

  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

  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

  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

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

  }

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

  }

  return 0;

  }

  用 * 打印半金字塔

  * * * * *

  * * * *

  * * *

  * *

  *

  源代码:

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

  }

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

  }

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

  printf(" ");

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

  printf("* ");

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

  printf("* ");

  printf(" ");

  }

  return 0;

  }