0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

10大C语言基础算法珍藏版源码

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2020-11-16 15:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

用 * 打印半金字塔

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

源代码:

#include 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(" "); } 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<=rows-i;++space) { printf(" "); } while(k!=2*i-1) { printf("* "); ++k; } k=0; printf(" "); } return 0;}

用 * 打印倒金字塔

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

源代码:

#includeint main(){ int rows,i,j,space; printf("Enter number of rows: "); scanf("%d",&rows); for(i=rows;i>=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

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4816

    浏览量

    98756
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146355
  • 代码
    +关注

    关注

    30

    文章

    4981

    浏览量

    74513

原文标题:经常遇到的10大C语言基础算法(珍藏版源码)

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    WebRTC源码级深度解析(完结) (讠果xingkeit-top)#WebRTC #源码

    源码
    jf_82580774
    发布于 :2026年03月30日 15:22:21

    fft算法c语言的实现

    问题之前我烦恼了一会儿,但别忘了。 前者的展开是N/2,因为此时n是奇偶校验分离的,是从根据的可约束性得出的,在此不能混淆。 没有必要提到计算效率。 m级计算总共需要: FFT c语言实现 FFT算法
    发表于 01-27 06:10

    讲解C语言代码的实现过程

    重点讲解C语言代码的实现过程,算法C语言实现过程具有一般性,通过PID算法
    发表于 01-21 07:58

    C语言的PID算法

    C语言PID算法#include \"stdio.h\" #include //定义PID结构体 struct _pid{ float SetSpeed; float
    发表于 01-16 08:13

    C语言增量式PID的通用算法

    C语言增量式PID通用算法控制算法中PID使用的非常广泛,但是在网上找代码的时候发现好多代码都不够通用,需要自己改好多东西,而且当一个项目需要使用多个PID控制器时也颇为麻烦,这里设计
    发表于 01-14 08:28

    C语言主要特点

    C语言的主要特点有: 1.语言简洁、紧凑,使用方便、灵活 。C语言一共只有32个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示,
    发表于 01-05 07:41

    【精选活动】缺陷系统检测不走坑!10年+资深LabVIEW视觉专家全套珍藏

    “告别检测系统能力缺陷!10+年LabVIEW视觉资深专家手把手教你:5000+分钟高清教程(含工具、算法原理、实战操作、项目优化全流程讲解)”——从传统视觉算法→深度学习建模→工业级部署"
    的头像 发表于 12-30 08:06 492次阅读
    【精选活动】缺陷系统检测不走坑!<b class='flag-5'>10</b>年+资深LabVIEW视觉专家全套<b class='flag-5'>珍藏</b>

    C语言C++的区别及联系

    C语言C++到底是什么关系? 首先C++和C语言本来就是两种不同的编程
    发表于 12-24 07:23

    C语言C++之间的区别是什么

    (STL),包含多种容器(如vector、list、map等)、算法以及迭代器,极大地提高了开发效率和代码复用性。 而C语言的标准库相对较小,虽然也提供了基本的数据结构(如数组、链表等)和算法
    发表于 12-11 06:23

    为什么单片机还在用C语言编程?

    的缺陷 高级语言存在的目的是可以实现更为优化的算法,更多的是为了方便的执行方案,但是,高级语言对程序存储空间的占用要比汇编和C语言多很多。
    发表于 11-28 07:37

    C语言的常见算法

    # C语言常见算法 C语言中常用的算法可以分为以下几大类: ## 1. 排序
    发表于 11-24 08:29

    C语言的常量介绍

    在程序执行过程中,值不发生改变的量称为常量。 mtianyan: C语言的常量可以分为直接常量和符号常量。 直接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如: 整型常量:13、0
    发表于 11-24 07:12

    C语言和单片机C语言有什么差异

    单片机c语言相对于普通C语言增加了一些基本的指令,还有变量的赋值是16进制,当然单片机c语言只牵
    发表于 11-14 07:55

    复杂的软件算法硬件IP核的实现

    具体方法与步骤 通过 C 语言实现软件算法,并验证了算法的有效性以后,就可以进行算法的 HDL 转化工作了。通过使用 Altium Des
    发表于 10-30 07:02

    单片机常用算法源码下载!

    单片机常用算法源码下载!
    发表于 06-10 20:44