10个经典的C语言面试基础算法及代码_第1页
10个经典的C语言面试基础算法及代码_第2页
10个经典的C语言面试基础算法及代码_第3页
10个经典的C语言面试基础算法及代码_第4页
10个经典的C语言面试基础算法及代码_第5页
已阅读5页,还剩19页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、10个经典的C语言面试基础算法及代码算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。C语言实现的代码如下:/* Displaying Fibonacci sequence up to nth term where n

2、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 (countn) display=t1+t2;

3、 t1=t2; t2=display; +count; printf(%d+,display); return 0;结果输出:Enter number of terms: 10Fibonacci 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(%

4、d,&num); printf(Fibonacci Series: %d+%d+, t1, t2); /* Displaying first two terms */ display=t1+t2; while(displaynum) printf(%d+,display); t1=t2; t2=display; display=t1+t2; return 0;结果输出:Enter an integer: 200Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+55+89+144+2、回文检查源代码:/* C program to check whether a

5、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 its reverse number is equal. */ if(reverse=n) printf(%d is a palin

6、drome.,n); else printf(%d is not a palindrome.,n); return 0;结果输出:Enter an integer: 1232112321 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) i

7、f(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: 2929 is a prime number.4、打印金字塔和三角形使用*建立三角形* * * * * * * * * * *源代码:#include int main() int i,j,rows; printf(Enter the number of rows: ); scanf(%d,&ro

8、ws); for(i=1;i=rows;+i) for(j=1;j=i;+j) printf(* ); printf(n); return 0;如下图所示使用数字打印半金字塔。11 21 2 31 2 3 41 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); return 0;用 * 打印半金字塔* * * * * * * *

9、* * * *源代码:#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:

10、 ); 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;用 * 打印倒金字塔* * * * * * * * * * * * * * * * * * * * * * * * *源代码:#includeint main() int rows,i,j,space; printf(Enter number of rows: ); scanf(%d,&rows); for(i=ro

11、ws;i=1;-i) for(space=0;spacerows-i;+space) printf( ); for(j=i;j=2*i-1;+j) printf(* ); for(j=0;ji-1;+j) printf(* ); printf(n); return 0;5、简单的加减乘除计算器源代码:/* Source code to create a simple calculator for addition, subtraction, multiplication and division using switch.case statement in C programming. */

12、# 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-num

13、2); 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 eithe

14、r + or - or * or divide : -Enter two operands: 3.48.43.4 - 8.4 = -5.06、检查一个数能不能表示成两个质数之和源代码:#include 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 + %dn, n, i, n-i); flag=1; if (

15、flag=0) printf(%d cant 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: 3434 = 3 + 3134 = 5 + 2934 = 11 + 2334 = 17 + 177、用递归的方式颠倒字符串源代码:/* Exam

16、ple to reverse a sentence entered by user without using strings. */ #include void Reverse();int main() printf(Enter a sentence: ); Reverse(); return 0;void Reverse() char c; scanf(%c,&c); if( c != n) Reverse(); printf(%c,c); 结果输出:Enter a sentence: margorp emosewaawesome program8、实现二进制与十进制之间的相互转换/* C

17、 programming source code to convert either binary to decimal or decimal to binary according to data entered by user. */ #include #include int binary_decimal(int n);int decimal_binary(int n);int main() int n; char c; printf(Instructions:n); printf(1. Enter alphabet d to convert binary to decimal.n);

18、printf(2. Enter alphabet b to convert decimal to binary.n); scanf(%c,&c); if (c =d | c = D) printf(Enter a binary number: ); scanf(%d, &n); printf(%d in binary = %d in decimal, n, binary_decimal(n); if (c =b | c = B) printf(Enter a decimal number: ); scanf(%d, &n); printf(%d in decimal = %d in binar

19、y, n, decimal_binary(n); return 0; int decimal_binary(int n) /* Function to convert decimal to binary.*/ int rem, i=1, binary=0; while (n!=0) rem=n%2; n/=2; binary+=rem*i; i*=10; return binary; int binary_decimal(int n) /* Function to convert binary to decimal.*/ int decimal=0, i=0, rem; while (n!=0

20、) rem = n%10; n/=10; decimal += rem*pow(2,i); +i; return decimal;结果输出:9、使用多维数组实现两个矩阵的相加源代码:#include int main() int r,c,a100100,b100100,sum100100,i,j; printf(Enter number of rows (between 1 and 100): ); scanf(%d,&r); printf(Enter number of columns (between 1 and 100): ); scanf(%d,&c); printf(nEnter e

21、lements of 1st matrix:n); /* Storing elements of first matrix entered by user. */ for(i=0;ir;+i) for(j=0;jc;+j) printf(Enter element a%d%d: ,i+1,j+1); scanf(%d,&aij); /* Storing elements of second matrix entered by user. */ printf(Enter elements of 2nd matrix:n); for(i=0;ir;+i) for(j=0;jc;+j) printf(Enter element a%d%d: ,i+1,j+1); scanf(%d,&bij); /*Adding Two matrices */ for(i=0;ir;+i) for(j=0;jc;+j) sumij=aij+bij; /* Displaying the resultant sum matrix. */ printf(nSum of two matrix is: nn); for(i=0;ir;+i) for(j=0;jc;+j) printf(%d ,sumij); if(j=c-1) printf(nn); return 0;结果输出:10、矩阵转置源代码:#i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论