算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个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 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
结果输出:
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(%d,&num); printf(fibonacci series: %d+%d+, t1, t2); /* displaying first two terms */ display=t1+t2; while(display
结果输出:
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 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 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 int main(){ int i,j,rows; printf(enter the number of rows: ); scanf(%d,&rows);//微信搜索公众号【c语言中文社区】关注回复c语言,免费领取200g学习资料 for(i=1;i<=rows;++i) { for(j=1;j<=i;++j) { printf(* ); } printf( ); } 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=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=1;--i) { for(space=0;space
5、简单的加减乘除计算器
源代码:
/* 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 + 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 int prime(int n);int main(){ int n, i, flag=0;//微信搜索公众号【c语言中文社区】关注回复c语言,免费领取200g学习资料 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, 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 void reverse();int main(){ printf(enter a sentence: ); reverse(); return 0;}void reverse(){ char c; scanf(%c,&c); if( c != ' ') { 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 #include int binary_decimal(int n);int decimal_binary(int n);int main(){ int n; char c; printf(instructions: ); printf(1. enter alphabet 'd' to convert binary to decimal. ); printf(2. enter alphabet 'b' to convert decimal to binary. ); 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 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( enter elements of 1st matrix: ); /* storing elements of first matrix entered by user. */ for(i=0;i
结果输出:
10、矩阵转置
源代码:
#include 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( enter elements of matrix: ); for(i=0; i
学子专区—ADALM2000实验:将BJT连接为二极管
苹果又曝iPhone6/6S自动关机原因:或为劣质电源适配器所致
浅谈什么是智能电容器
新唐科技ISD4004芯片简介
源极接地放大电路设计(2)
10大C语言基础算法珍藏版源码
特斯拉正式推出自研太阳能逆变器:基于 Powerwall 2 技术
微雪电子树莓派3 B+计算模块配件包A介绍
Coverity 呼吁停止使用不安全软件
三星GALAXY C9 Pro体验评测:超薄超高颜值!
8K大战后,三星与LG家电业两巨头江湖恩怨继续上演
VR的神奇功效 帮助妈妈分娩
印度国有电信运营商BSNL启动了4G招标计划
手机行业格局生变,华为三星抢夺iPhone三成利润
辽宁大连开放首批无人驾驶出租车
一加7Pro上手评测 到底怎么样
你知道用Micro bit DIY制作的一款多功能语音小车
谷歌和UC伯克利的新式Actor-Critic算法快速在真实世界训练机器人
首届中文NL2SQL挑战赛收官 产学研携手推动智能交互发展
过流继电器的调节步骤和安装注意事项