点击上方“大鱼机器人”,选择“置顶/星标公众号

福利干货,第一时间送达!

算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个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: 10
Fibonacci 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: 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 <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);elseprintf("%d is not a palindrome.",n);return 0;
}

结果输出:

Enter an integer: 12321
12321 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);elseprintf("%d is not a prime number.",n);return 0;
}

结果输出:

Enter a positive integer: 29
29 is a prime number.

4、打印金字塔和三角形

使用 * 建立三角形

*
* *
* * *
* * * *
* * * * *

源代码:

#include <stdio.h>
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("\n");}return 0;
}

如下图所示使用数字打印半金字塔。

1
1 2
1 2 3
1 2 3 4
1 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.4
8.4
3.4 - 8.4 = -5.0

6、检查一个数能不能表示成两个质数之和

源代码:

#include <stdio.h>
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", 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: 34
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 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 emosewa
awesome 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;
}

结果输出:

免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

-END-

来源 | 知乎

整理文章为传播相关技术,版权归原作者所有 |

| 如有侵权,请联系删除 |

往期好文合集嵌入式开发中,用C++真香!干货 | 嵌入式系统软件架构设计
嵌入式大佬 | 嵌入式C语言知识点万字总结最 后   若觉得文章不错,转发分享,也是我们继续更新的动力。5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等!在公众号内回复「更多资源」,即可免费获取,期待你的关注~

经常遇到的10大C语言基础算法(珍藏版源码)相关推荐

  1. 寻找第K大元素的八大算法、源码及拓展

    寻找第K大元素的八大算法.源码及拓展 http://www.cnblogs.com/bethunebtj/p/4861378.html 一.问题描述 所谓"第(前)k大数问题"指的 ...

  2. 10大Go语言开源项目推荐

    关注公众号 风色年代(itfantasycc) 300G微服务资料等你拿! Go语言诞生5周年!10大Go语言开源项目推荐 - Go语言中文网 - Golang中文社区 引用 2014年11月,Gol ...

  3. c语言关于continue的题,10道c语言基础题1、C语言的跳转语句中,对于break和continue说法正确的是_______. A、contin...

    10道c语言基础题1.C语言的跳转语句中,对于break和continue说法正确的是_______. A.contin 10道c语言基础题 1.C语言的跳转语句中,对于break和continue说 ...

  4. C语言基础算法:魔方阵

    C语言基础算法:魔方阵. 核心玩法:第一个元素放置第一排(第0行)中间位置,依次往右上方填充数据, 若是 1.右上角行,列越界,该元素放置上一元素下方a(i+2)(j-1)位置 2.右上角行越界,而列 ...

  5. C语言期末大作业15个(附源码)成绩管理系统、图书馆管理系统、学生打卡系统、超市信息管理系统、学生考勤系统、职工信息管理系统源码、歌曲信息管理系统、超市收款系统等等

    C语言期末作业15个(上) 1.C语言学生成绩管理系统 2.C语言图书馆管理系统(复杂版) 3.C语言图书馆管理系统(简洁版) 4.C语言停车管理系统(两个版本) 5.C语言学生考勤系统 6.C语言班 ...

  6. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

  7. 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】

    本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...

  8. c语言案例分析105,C语言实战105例源码

    C语言实战105例源码 以下程序大家如有兴趣可在文件夹下载即可 第1部分 基础篇 实例1 一个价值"三天"的BUG 2 实例2 灵活使用递增(递减)操作符 5 实例3 算术运算符计 ...

  9. 安卓期末大作业——鲜花商店APP(源码+任务书)

    安卓期末大作业--鲜花商店APP(源码+任务书) <移动应用开发> 课程考核报告 姓    名: 学    号: 完 成 日 期 2022年 5月 建议从以下方面填写:1. 课题的作用和意 ...

最新文章

  1. 更深的编码器+更浅的解码器=更快的自回归模型
  2. c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...
  3. 【数据库系统】再谈关系模型和关系型数据库
  4. 微信公众平台开发之留言板
  5. 聊天IM的时间戳显示规则
  6. Dynamic CRM2013安装系列三、SQL及CRM2013安装
  7. 软件设计模式经典书籍推荐
  8. AWS携手光环云助力2019第三届“中信建投证券杯”世界智能围棋公开赛
  9. iOS 苹果授权登录(Sign in with Apple)/Apple登录/苹果登录集成教程
  10. Linux设置和取消定时关机,修改 linux 默认启动级别 设置系统时间   定时关机
  11. 图片加载框架之UIL
  12. mysql 代理 mycat_使用MyCAT代理MySQL数据库
  13. 安卓疫情打卡APP源码
  14. 第三次工业革命(四)
  15. slam中的相机相关
  16. WEB开发(7) Hibernate篇(上)
  17. Git上传项目提示Push rejected: Push to origin/dev was rejected解决办法
  18. 期末复习【计算机组成原理】
  19. 刚子扯谈:网站运营路在何方?
  20. why哥这里有一道Dubbo高频面试题,请查收。

热门文章

  1. SAP gateway GWaaS single sign on
  2. use SAP web IDE to commit change to git
  3. support mobile touch event
  4. 如何把webIDE里的UI5应用配置到SAP云平台的Launchpad里
  5. 打印product所有attachment 具体信息的小工具
  6. How to resolve syntax error in CL_IM_CMS_SI_GEN_INTF
  7. 用英语回答问题 - 一个SAP开发人员为什么要练习双截棍
  8. SAP CRM responsibility的维护
  9. SAP移动解决方案之Cordova技术架构综述
  10. SAP Cloud for Customer里如何根据产品ID拿到其UUID