10个经典的ç语言面试基础算法及代码
2016-11-18 22:05
696 查看
由。本文码农网 -小峰原创,转载请看清文末的转载要求,参与欢迎我们的付费投稿计划!
算法是一个程序和软件的灵魂,一名作为优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个Ç语言算法系列的第二篇,包括了经典的斐波那契数列,简易计算器,回文检查,质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。
斐波那契数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1,1,2,35,8,13,21。
ç语言实现的代码如下:
结果输出:
也可以使用下面的源代码:
结果输出:
源代码:
结果输出:
注:1既不是质数也不是合数。
源代码:
结果输出:
使用*建立三角形
源代码:
如下图所示使用数字打印半金字塔。
源代码:
用*打印半金字塔
源代码:
用*打印金字塔
源代码:
用*打印倒金字塔
源代码:
源代码:
结果输出:
源代码:
结果输出:
源代码:
结果输出:
结果输出:
源代码:
结果输出:
源代码:
结果输出:
算法是一个程序和软件的灵魂,一名作为优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个Ç语言算法系列的第二篇,包括了经典的斐波那契数列,简易计算器,回文检查,质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。
1,计算斐波那契数列
斐波那契数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1,1,2,35,8,13,21。ç语言实现的代码如下:
/ *显示斐波那契高达其中n是由用户输入的第n项。* / #包括 <stdio.h>中 INT 主要() { INT数,N,T1 = 0,T = 1,显示= 0 ; printf的(“输入项数:”); scanf函数(“%d个”,&N ); printf的(“斐波纳契数列数:%d +%D +”,T1,T2); / *显示前两项* / 数= 2 ; / *计数= 2,因为前两项已经显示出来。* / 而(计数<N) { 显示器= T1 + T2; T1 = T2; T2 =显示; ++计数; 的printf(“%D +” ,显示); } 返回 0 ; }
结果输出:
输入数字的计算:10 斐波纳契数列:0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 +
也可以使用下面的源代码:
/ *显示Fibonacci序列到由用户输入一定次数。* / #包括 <stdio.h>中 INT 主要() { INT T1 = 0,T = 1,显示= 0,NUM; 的printf(“请输入一个整数:”); scanf函数(“%D” ,与NUM); printf的(“斐波纳契数列数:%d +%D +“,T1,T2); / *显示前两项* / 显示器= T1 + T2; 而(显示<NUM) { 的printf(“%D +” ,显示); T1 = T2; T2 =显示; 显示器= T1 + T2; } 返回 0 ; }
结果输出:
输入的整数:200 斐波系列:0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 + 144 +
2,回文检查
源代码:/ * C程序检查一个数是否是回文与否* / #包括 <stdio.h>中 INT 主要() { INT N,反向= 0,REM,温度; 的printf(“请输入一个整数:”); scanf函数(“%d个”,&N); TEMP = N; 而(温度!= 0) { REM =气温%10 ; 反向=反向* 10 + REM; 温度/ = 10 ; } / *检查,如果用户输入的数字,它的反向号码相等。* / 如果(反== N) 的printf(“%d是一个回文”,N); 其他 的printf(“%d不回文”,N); 返回 0 ; }
结果输出:
输入一个整数:12321 12321 是回文。
3,质数检查
注:1既不是质数也不是合数。源代码:
/ * C程序检查一个数是否是素与否。* / #包括 <stdio.h>中 INT 主要() { INT N,I,标志= 0 ; printf的(“请输入一个正整数:”); scanf函数(“%d个”,&N); 为(i = 2 ; I < = N / 2 ; ++ I) { 如果(N%我== 0) { 标志= 1 ; 打破 ; } } 如果(标志== 0) printf的(“%d是一个质数。”中,n); 其他 的printf(“%d为不是素数”,正); 返回 0 ; }
结果输出:
输入一个正整数:29 29 是一个质数。
4,打印金字塔和三角形
使用*建立三角形* * * * * * * * * * * * * * *
源代码:
#包括 <stdio.h>中 INT 主() { 诠释 I,J,行; printf的(“输入行数:”); scanf函数(“%d个”,&行); 对于(ⅰ= 1 ; I <=行++ I) { 为(J = 1 ;Ĵ<= I; ++ j)条 { 的printf(“*”); } 的printf(“\ n”); } 返回 0 ; }
如下图所示使用数字打印半金字塔。
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
源代码:
#包括 <stdio.h>中 INT 主() { 诠释 I,J,行; printf的(“输入行数:”); scanf函数(“%d个”,&行); 对于(ⅰ= 1 ; I <=行++ I) { 为(J = 1 ;Ĵ<= I; ++ j)条 { 的printf(“%D”,J); } 的printf(“\ n”); } 返回 0 ; }
用*打印半金字塔
* * * * * * * * * * * * * * *
源代码:
#包括 <stdio.h>中 INT 主要() { 诠释 I,J,行; 的printf(“请输入行数:”); scanf函数(“%d个”,&行); 对于(i =行;我> = 1 ; -我) { 为(J = 1 ;Ĵ<= I; ++ j)条 { 的printf(“*”); } 的printf(“\ n”); } 返回 0 ; }
用*打印金字塔
* * * * * * * * * * * * * * * * * * * * * * * * *
源代码:
#包括 <stdio.h>中 INT 主() { 诠释我,空间,行中,k = 0 ; printf的(“输入行数:”); scanf函数(“%d个”,&行); 对于(ⅰ= 1 ; I <=行++ I) { 对于(空格= 1 ;空间<=行,我++空间) { 的printf(“”); } 而(K!= 2 * I -1) { 的printf(“*”); ++ K表; } K = 0 ; printf的(“\ n”); } 返回 0 ; }
用*打印倒金字塔
* * * * * * * * * * * * * * * * * * * * * * * * *
源代码:
#包括<stdio.h>中 INT 主要() { INT行,I,J,空间; 的printf(“请输入行数:”); scanf函数(“%d个”,&行); 对于(i =行;我> = 1 ; -一) { 为(空间= 0 ;空间<行-i的++空间) 的printf(“,”); 为(J =;Ĵ<= 2 * I -1 ; ++ j)条 的printf(“*”); 对于( J = 0 ;Ĵ的<i -1 ++ j)条 的printf(“*”); printf的(“\ N”); } 返回 0 ; }
5,简单的加减乘除计算器
源代码:/ *源代码C语言编程使用开关... case语句来创建加法,减法,乘法和除法一个简单的计算器。* / #包括<stdio.h>中 INT 主要() { 字符 O; 浮球 NUM1,NUM2; 的printf( “请输入操作符+或-或*鸿沟:”); scanf函数( “%C” ,&O); printf的( “请输入两个操作数:”); scanf函数( “%F%F” ,与NUM1,NUM2和); 开关(O){ 案 '+' : printf的( “%.1F +%.1F =%.1F”,NUM1,NUM2,NUM1 + NUM2); 突破 ; 案例 ' - ': printf的( “%.1F - %.1F =%.1F”,NUM1,NUM2,NUM1 - NUM2); 打破 ; 案 “*” : printf的( “%* .1F%.1F =% .1F“,NUM1,NUM2,NUM1 * NUM2); 打破 ; 案例 '/' : printf的( ”%.1F /%.1F =%.1F“,NUM1,NUM2,NUM1 / NUM2); 打破 ; 默认: / *如果操作者不为+, - ,*或/,错误消息显示* / printf的( “错误!运算符是不正确的”); 打破 ; } 返回 0 ; }
结果输出:
进入运营商无论是+ 或 - 或 * 或者鸿沟: - 输入两个操作数:3.4 8.4 3.4 - 8.4 = -5.0
6,检查一个数能不能表示成两个质数之和
源代码:#包括 <stdio.h>中 INT 素(INT N) ; INT 主要() { INT N,I,标志= 0 ; printf的(“请输入一个正整数:”); scanf函数(“%d个”,&N); 为(I = 2 ;我<= N / 2 ; ++ I) { 如果(素(ⅰ)!= 0) { 如果(素(NI)!= 0) { 的printf(“%D =%D +%d个\ N”,N,I,NI); 标志= 1 ; } } } 如果(标志== 0) printf的(“%D不能被表示为两个素数的总和。”中,n); 返回 0 ; } INT 素(INT N) / *函数来检查素数* / { 的int我,标志= 1 ; 对于(i = 2 ;我<= N / 2 ; ++ I) 如果(N%我== 0) 标志= 0 ; 返回标志; }
结果输出:
输入一个正整数:34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 17
7,用递归的方式颠倒字符串
源代码:/ *例扭转由用户输入的句子,而不使用字符串。* / #包括 <stdio.h>中 无效 反转() ; INT 主要() { printf的(“请输入一个句子:”); 相反(); 返回 0 ; } 无效 反向() { 字符 ℃; scanf函数( “%C” ,&C); 如果(!c = '\ n' ) { 相反(); 的printf(“%C”,C); } }
结果输出:
输入了一句:margorp emosewa 真棒程序
8,实现二进制与十进制之间的相互转换
/ * C编程源代码,根据用户输入的数据或者二进制到十进制或十进制转换为二进制。* / #包括 <stdio.h>中 #包括 <math.h>中 INT binary_decimal (INT N) ; INT decimal_binary (INT N) ; INT 主要() { INT N; 焦炭 ℃; 的printf(“说明:\ n”); printf的(“1.输入字母”D“,以二进制转换为十进制\ n”); printf的(“2.输入字母”b“,以十进制转换为二进制\ n”); scanf函数(“%C” ,&C); 如果(C == 'D' ||ç== 'D') { 的printf(“请输入一个二进制数:”); scanf函数(“%d个”,&N); printf的(“%d在十进制二进制=%d个”,正,binary_decimal(N)); } 如果(C == 'B' ||ç== 'B') { 的printf(“请输入一个十进制数” ;) scanf函数(“%D” ;,&N) 的printf(“十进制%D =二进制%D” N,N,decimal_binary()); } 返回 0 ; } INT decimal_binary (INT N) / *功能将十进制转换为二进制* /。 { INT REM,I = 1,二进制= 0 ; 而(N!= 0) { REM = N%2 ; N / = 2 ; 二进制+ = REM *我; 我* = 10 ; } 返回二进制; } INT binary_decimal (INT N) / *功能,以二进制转换为十进制。* / { INT十进制= 0,I = 0,REM; 而(N!= 0) { REM = N%10 ; N / = 10 ; 十进制+ = REM * POW(2,I); ++我; } 返回小数; }
结果输出:
9,使用多维数组实现两个矩阵的相加
源代码:#包括 <stdio.h>中 INT 主要() { INT R,C,A [ 100 ] [ 100 ],B [ 100 ] [ 100 ],总和[ 100 ] [ 100 ],I,J; 的printf(“请输入号码行(1至100)的:“); scanf函数(”%d个“,&R); printf的(”输入列(1至100之间的数字):“); scanf函数(”%d个“,&amp; C); printf的(“第一个矩阵的\ n输入元素:\ n”); / *存储由用户输入的第一矩阵的元素。* / 对于(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 { 的printf(“输入元件的%D:”,I + 1,J + 1); scanf函数(“%d个”,&一个由[i] [j]的); } / *存储由用户输入的第二矩阵的元素。* / 的printf(“请输入第二个矩阵的元素:\ n”); 为(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 { 的printf(“请输入元素的%D:” ,我+ 1,J + 1); scanf函数(“%d个”,&B [I] [J]); } / *添加两个矩阵* / 对于(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 总和[I] [J] = a [i] [j]的+ B [I] [J]。 / *显示产生的和矩阵。* / 的printf(“\关于两个矩阵的nSum为:\ n \ n”); 为(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 { 的printf(“%d个”,总和[I] [J]); 如果(J == c审核-1) 的printf(“\ n \ n”); } 返回 0 ; }
结果输出:
10,矩阵转置
源代码:#包括 <stdio.h>中 INT 主() { 诠释一个[ 10 ] [ 10 ],反式[ 10 ] [ 10 ],R,C,I,J; printf的(“输入行和矩阵的列:”); scanf函数(“%D” ,&R&C); / *存储由用户在阵列[] []输入矩阵的元素。* / printf的(“矩阵\ n输入元素:\ n”); 为(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 { 的printf(“输入元件的%D:”,I + 1,J + 1); scanf函数(“%d个”,&一个由[i] [j]的); } / *显示矩阵[] [] * / printf的(“\ nEntered矩阵:\ N”); 对于(ⅰ= 0 ;我<R ++ⅰ) 为(J = 0 ;Ĵ<C ++ j)条 { 的printf(“%d个”,一个由[i] [j]的); 如果(J == c审核-1) 的printf(“\ n \ n”); } / *矩阵[] []并将其存储在阵列跨[] []中查找转。* / 为(i = 0 ;我<R; ++ I) 为(J = 0 ;Ĵ<C ++ j)条 { 转[J] [I] = a [i] [J]。 } / *显示转置,即,显示阵列反[] []。* / printf的(“矩阵\ nTranspose:\ n”); 为(i = 0 ;我<C ++ I) 为(J = 0 ;Ĵ<R,+ j)条 { 的printf(“%d个”,反式[I] [J]); 如果(J == - [R -1) 的printf(“\ n \ n”); } 返回 0 ; }
结果输出:
相关文章推荐
- 10个经典的 C 语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 10个经典的C语言面试基础算法及代码
- 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语言面试基础算法及代码
- 【分享】一些经典的C/C++语言基础算法及代码(一)
- 【分享】一些经典的C/C++语言基础算法及代码(二)
- 【分享】一些经典的C/C++语言基础算法及代码(三)