10个经典的C语言面试基础算法及代码
来源:互联网 发布:怎么在手机淘宝看物流 编辑:程序博客网 时间:2024/06/14 03:36
本文是码农网原创整理,转载请看清文末的转载要求,谢谢合作!
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。
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: 10Fibonacci 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: 200Fibonacci 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: 1232112321 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: 2929 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;}
如下图所示使用数字打印半金字塔。
11 21 2 31 2 3 41 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、简单的加减乘除计算器
源代码:
/* Source code to create a simple calculator for addition, subtraction, multiplication and division using switch...case statement in C programming. */ # include <stdio.h>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.48.43.4 - 8.4 = -5.0
6、检查一个数能不能表示成两个质数之和
源代码:
#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: 3434 = 3 + 3134 = 5 + 2934 = 11 + 2334 = 17 + 17
7、用递归的方式颠倒字符串
源代码:
/* Example to reverse a sentence entered by user without using strings. */ #include <stdio.h>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 program
8、实现二进制与十进制之间的相互转换
/* C programming source code to convert either binary to decimal or decimal to binary according to data entered by user. */ #include <stdio.h>#include <math.h>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",&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 binary", 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) { rem = n%10; n/=10; decimal += rem*pow(2,i); ++i; } return decimal;}
结果输出:
9、使用多维数组实现两个矩阵的相加
源代码:
#include <stdio.h>int main(){ int r,c,a[100][100],b[100][100],sum[100][100],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 elements of 1st matrix:\n"); /* Storing elements of first matrix entered by user. */ for(i=0;i<r;++i) for(j=0;j<c;++j) { printf("Enter element a%d%d: ",i+1,j+1); scanf("%d",&a[i][j]); } /* Storing elements of second matrix entered by user. */ printf("Enter elements of 2nd matrix:\n"); for(i=0;i<r;++i) for(j=0;j<c;++j) { printf("Enter element a%d%d: ",i+1,j+1); scanf("%d",&b[i][j]); } /*Adding Two matrices */ for(i=0;i<r;++i) for(j=0;j<c;++j) sum[i][j]=a[i][j]+b[i][j]; /* Displaying the resultant sum matrix. */ printf("\nSum of two matrix is: \n\n"); for(i=0;i<r;++i) for(j=0;j<c;++j) { printf("%d ",sum[i][j]); if(j==c-1) printf("\n\n"); } return 0;}
结果输出:
10、矩阵转置
源代码:
#include <stdio.h>int main(){ int a[10][10], trans[10][10], r, c, i, j; printf("Enter rows and column of matrix: "); scanf("%d %d", &r, &c); /* Storing element of matrix entered by user in array a[][]. */ printf("\nEnter elements of matrix:\n"); for(i=0; i<r; ++i) for(j=0; j<c; ++j) { printf("Enter elements a%d%d: ",i+1,j+1); scanf("%d",&a[i][j]); }/* Displaying the matrix a[][] */ printf("\nEntered Matrix: \n"); for(i=0; i<r; ++i) for(j=0; j<c; ++j) { printf("%d ",a[i][j]); if(j==c-1) printf("\n\n"); } /* Finding transpose of matrix a[][] and storing it in array trans[][]. */ for(i=0; i<r; ++i) for(j=0; j<c; ++j) { trans[j][i]=a[i][j]; } /* Displaying the transpose,i.e, Displaying array trans[][]. */ printf("\nTranspose of Matrix:\n"); for(i=0; i<c; ++i) for(j=0; j<r; ++j) { printf("%d ",trans[i][j]); if(j==r-1) printf("\n\n"); } return 0;}
结果输出:
<iframe id="cproIframe_u1739327" width="300" height="250" src="http://pos.baidu.com/acom?adn=3&at=32&aurl=&cad=1&ccd=24&cec=UTF-8&cfv=15&ch=0&col=zh-CN&conOP=0&cpa=1&dai=2&dis=0&ltr=http%3A%2F%2Fgeek.csdn.net%2Fnews%2Fdetail%2F20218&ltu=http%3A%2F%2Fwww.codeceo.com%2Farticle%2F10-c-interview-algorithm.html&lunum=6&n=60077120_cpr&pcs=1903x979&pis=10000x10000&ps=12444x799&psr=1920x1080&pss=1903x12474&qn=9fa9e60fcaa457d4&rad=&rsi0=300&rsi1=250&rsi5=4&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%230088DB&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=1739327&tn=text_default_300_250&tpr=1416792810790&ts=1&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u1739327" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
<iframe id="cproIframe_u1737826" width="300" height="250" src="http://pos.baidu.com/acom?adn=3&at=6&aurl=&cad=1&ccd=24&cec=UTF-8&cfv=15&ch=0&col=zh-CN&conOP=0&cpa=1&dai=3&dis=0&ltr=http%3A%2F%2Fgeek.csdn.net%2Fnews%2Fdetail%2F20218&ltu=http%3A%2F%2Fwww.codeceo.com%2Farticle%2F10-c-interview-algorithm.html&lunum=6&n=60077120_cpr&pcs=1903x979&pis=10000x10000&ps=13132x1139&psr=1920x1080&pss=1903x13409&qn=d825cefcffb86a22&rad=&rsi0=300&rsi1=250&rsi5=4&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%230000ff&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=1737826&tn=text_default_300_250&tpr=1416792810790&ts=1&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u1737826" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
本文链接:http://www.codeceo.com/article/10-c-interview-algorithm.html
本文作者:码农网 – 小峰
[ 原创作品,转载必须在正文中标注并保留原文链接和作者等信息。]
0 0
- c/c++--10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的 C 语言面试基础算法及代码
- 5个经典的C语言基础算法及代码
- 10个经典C语言面试基础算法
- 【分享】一些经典的C/C++语言基础算法及代码(一)
- 【分享】一些经典的C/C++语言基础算法及代码(二)
- tabs 在底端
- Shell 和 Expect 脚本的自动登录运行
- Android RSA加密解密
- Exception in thread "main" org.apache.spark.SparkException: Task not serializable异常
- 第13周项目4-选择法排序(3)
- 10个经典的C语言面试基础算法及代码
- yum 失败(This system is not registered with RHN.)解决方法(14.11最新)
- Tcl么么哒刷机包 乐蛙OS6第148期 新增信息前置开关 稳定流畅
- js调试
- 第十三周上机项目一(3)数据大折腾
- eclipse 中srping的application.xml没有提示 [问题点数:40分,结帖人yijiaqingilm]
- EasyUI 跨form值获取
- xcode6 在执行以前创建项目问题
- 数据库远程复制/导入到本地
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
康诺
巴康诺祛疤
康诺源净水器价格
江苏康诺医疗器械有限公司
康贝
康贝三轮车
康贝吸管杯
康贝机能鞋
康贝验钞机
康贝湿纸巾
葛莱 康贝
婴儿车 康贝
康贝坐便器
康贝手口湿巾怎么样
康贝安全座椅
康贝推车怎么样
康贝儿童推车
康贝机能鞋怎么样
康贝儿童用品
康贝 安全座椅
康贝推车怎么折叠
康贝伞车怎么样
康贝口腔医院
康贝儿益生菌
康贝婴幼儿用品
康贝儿
康贝佳口腔
康贝佳洗牙多少钱
登康贝比
康贝佳价格
康贝婴儿服
康贝佳口腔医院怎么样
康贝佳医院怎么样
康贝婴儿车怎么样
康贝佳口腔医院地址
康贝佳美牙冠
康贝婴儿安全座椅
康贝婴儿护理台
康贝功能鞋
康贝婴儿车使用说明
康贝肠炎宁