《十个经典的C语言面试基础算法及代码介绍.doc》由会员分享,可在线阅读,更多相关《十个经典的C语言面试基础算法及代码介绍.doc(4页珍藏版)》请在三一文库上搜索。
1、十个经典的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, printf(Fibonacci Series: %d+%d+, t1, t2); /* Displaying first two terms */ count=2; /* count=2 because first two terms are already displayed. */ while (count结果输出:Enter number o
3、f 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, printf(Fibonacci Series: %d+%d+, t1, t2); /* Displaying first two terms *
4、/ display=t1+t2; while(display结果输出: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, temp=n; while(temp!=0) rem=temp%1
5、0; 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 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 che
6、ck whether a number is prime or not. */ #include int main() int n, i, flag=0; printf(Enter a positive integer: ); scanf(%d, for(i=2;i结果输出:Enter a positive integer: 29 29 is a prime number.4、打印金字塔和三角形使用 * 建立三角形* * * * * * * * * * * * * * *源代码:#include int main() int i,j,rows; printf(Enter the number
7、of rows: ); scanf(%d, for(i=1;i如下图所示使用数字打印半金字塔。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, for(i=1;i用 * 打印半金字塔* * * * * * * * * * * * * * *源代码:#include int main() int i,j,rows; printf(Enter the number of rows: ); scanf(%d, for(i=ro
8、ws;i=1;-i) for(j=1;j用 * 打印金字塔* * * * * * * * * * * * * * * * * * * * * * * * *源代码:#include int main() int i,space,rows,k=0; printf(Enter the number of rows: ); scanf(%d, for(i=1;i用 * 打印倒金字塔* * * * * * * * * * * * * * * * * * * * * * * * *源代码:#include int main() int rows,i,j,space; printf(Enter numbe
9、r of rows: ); scanf(%d, for(i=rows;i=1;-i) for(space=0;space5、简单的加减乘除计算器源代码:/* Source code to create a simple calculator for addition, subtraction, multiplication and division using switch.case statement in C programming. */ # include int main() char o; float num1,num2; printf(Enter operator either
10、+ or - or * or divide : ); scanf(%c, printf(Enter two operands: ); scanf(%f%f, 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(%
11、.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.06、检查一个数能不能表示成两个质数之和
12、源代码:#include int prime(int n); int main() int n, i, flag=0; printf(Enter a positive integer: ); scanf(%d, for(i=2; i结果输出:Enter a positive integer: 34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 177、用递归的方式颠倒字符串源代码:/* Example to reverse a sentence entered by user without using strings. */ #include
13、void Reverse(); int main() printf(Enter a sentence: ); Reverse(); return 0; void Reverse() char c; scanf(%c, if( c != n) Reverse(); printf(%c,c); 结果输出:Enter a sentence: margorp emosewa awesome program8、实现二进制与十进制之间的相互转换/* C programming source code to convert either binary to decimal or decimal to bin
14、ary 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); printf(2. Enter alphabet b to convert decimal to binary.n); scanf(%c, if (c
15、=d | c = D) printf(Enter a binary number: ); scanf(%d, printf(%d in binary = %d in decimal, n, binary_decimal(n); if (c =b | c = B) printf(Enter a decimal number: ); scanf(%d, printf(%d in decimal = %d in binary, n, decimal_binary(n); return 0; int decimal_binary(int n) /* Function to convert decima
16、l 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) rem = n%10; n/=10; decimal += rem*pow(2,i); +i; return decimal; 结果输出:9、使用多维数组实现两个矩阵的相加源代
17、码:#include int main() int r,c,a100100,b100100,sum100100,i,j; printf(Enter number of rows (between 1 and 100): ); scanf(%d, printf(Enter number of columns (between 1 and 100): ); scanf(%d, printf(nEnter elements of 1st matrix:n); /* Storing elements of first matrix entered by user. */ for(i=0;i结果输出:10、矩阵转置源代码:#include int main() int a1010, trans1010, r, c, i, j; printf(Enter rows and column of matrix: ); scanf(%d %d, /* Storing element of matrix entered by user in array a. */ printf(nEnter elements of matrix:n); for(i=0; i来自:码农网链接:http:/codeceo/article/10-c-interview-algorithml
链接地址:https://www.31doc.com/p-3397429.html