经典的C语言基础算法及代码

article/2025/9/22 10:17:35

文章来源:10个经典的C语言面试基础算法及代码

算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。

一、计算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+

二、回文检查

源代码:


/* 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.

三、质数检查

注: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.

四、打印金字塔和三角形

使用 * 建立三角形


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

源代码:


#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;
}

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


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;
}

五、简单的加减乘除计算器

源代码:


/* 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

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

源代码:


#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;
}/* Function to check prime number */
int prime(int n)
{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

七、用递归的方式颠倒字符串

源代码:

/* 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

八、实现二进制与十进制之间的相互转换

源代码:


/* 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;
}/* Function to convert decimal to binary.*/
int decimal_binary(int n)
{int rem, i=1, binary=0;while (n!=0){rem=n%2;n/=2;binary+=rem*i;i*=10;}return binary;
}/* Function to convert binary to decimal.*/
int binary_decimal(int n)
{int decimal=0, i=0, rem;while (n!=0){rem = n%10;n/=10;decimal += rem*pow(2,i);++i;}return decimal;
}

结果输出:

九、使用多维数组实现两个矩阵的相加

源代码:


#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;
}

结果输出:
在这里插入图片描述

十、矩阵转置

源代码:

#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;
}

结果输出:
在这里插入图片描述

版权归原作者所有,如有侵权,请联系删除。


http://chatgpt.dhexx.cn/article/SecVtS4j.shtml

相关文章

C语言入门常写的三个代码

今天我们要看的是C语言常写的三个代码。 打印100~200之间的素数 常用的方法是试除法&#xff0c;解释一下什么是试除法。 “试除”顾名思义就是不断的尝试能否整除&#xff0c;比如要判断一个自然数x是否是质数&#xff0c;就不断用这个数x去除以小于x且大于1的自然数&#xf…

学计算机必记代码语言,c语言必背代码有哪些

对于刚学计算机编程的同学来说&#xff0c;每一个编程知识都觉得很重要。下面小编为大家整理了c语言必背代码&#xff0c;希望大家喜欢。 c语言必背代码 第一条 /*输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。*/ #include "stdio.h" main() {int …

c语言必背18个经典程序

1、/*输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i1;i<10;i) { for(j1;j<10;j) { resulti*j; printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐&#xff0c;占3位*/ } prin…

单片机c语言基础知识,c语言必背100代码有哪些?

我记得刚开始接触编程的时候&#xff0c;觉得太难了。 也很好奇&#xff0c;写代码的那些人也太厉害了吧&#xff1f;全是英文的&#xff0c;他们的英文水平一定很好吧&#xff1f; 他们是怎么记住这么多代码格式的&#xff1f;而且错了一个标点符号&#xff0c;整个程序都会有…

(完整版)c语言初学必背代码

截止到目前我已经写了 600多道算法题&#xff0c;其中部分已经整理成了pdf文档&#xff0c;目前总共有1000多页&#xff08;并且还会不断的增加&#xff09;&#xff0c;大家可以免费下载 下载链接&#xff1a;https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码&#xf…

C语言必背代码大全(2021整理)

一、C语言必背代码前言 对于c语言来说&#xff0c;要记得东西其实不多&#xff0c;基本就是几个常用语句加一些关键字而已。你所看到的那些几千甚至上万行的代码&#xff0c;都是用这些语句和关键词来重复编写的。只是他们逻辑功能不一样&#xff0c;那如何快速的上手C语言代码…

c语言必背的100代码

c语言必背的100代码 \\\插播一条&#xff1a; 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图源代码开题报告正文外文资料 想要的同学私信找我。 我记得刚开始接触编程的时候&#xff0c;觉得太难了。 也很好奇&#xff0c;写代码的那些人也太厉…

C语言必背100代码,C语言必会100代码大全

一、C语言初学者必学必会的C语言必背100代码 一个C语言入门初学者如何学代码,读代码和写代码&#xff0c;我想学代码不知道方向谁能给我指明一个方向?对于c语言来说&#xff0c;要记得东西其实不多&#xff0c;基本就是几个常用语句加一些关键字而已。你所看到的那些几千甚至…

C语言必背18个经典程序,2022年C语言必背100代码大全

一、C语言必背18个经典程序&#xff0c;C语言初学者必会 一个C语言入门初学者如何学代码,读代码和写代码&#xff0c;我想学代码不知道方向谁能给我指明一个方向?对于c语言来说&#xff0c;要记得东西其实不多&#xff0c;基本就是几个常用语句加一些关键字而已。你所看到的那…

12个C语言必背实例

C语言实例第01期&#xff0c;十进制数转换二进制数 实例代码 //#include "stdio.h"int main(){int m, n, k;//定义变量int a[16] { 0 };printf("请输入一个0~32767之间的数字&#xff1a;\n");scanf("%d", &n);printf("十进制数%d转…

最新稳定短视频去水印免费解析API接口分享

请求方式&#xff1a;GET 返回格式&#xff1a;json 请求地址&#xff1a; eeapi.cn申请

抖音 快手 皮皮虾 短视频一次解析

介绍&#xff1a; 支持抖音,快手,皮皮虾短视频jiexi&#xff0c;一次解析&#xff0c;非接口版二次解析 网盘下载地址&#xff1a; http://kekewangLuo.cc/ydnaPTFhXU2 图片&#xff1a;

2022最新短视频去水印解析API接口支持各大小程序平台分享

支持平台&#xff1a;支持各大热门去水印小程序短视频平台 去水印接口 请求地址&#xff1a;https://域名.cn/api/dsp/{clientSecretKey}/{clientId}/?url{短视频链接&#xff0c;记住是纯链接} 请求方式&#xff1a;GET 返回格式&#xff1a;json "code":"20…

【短视频音乐解析源码】在线解析抖音短视频音乐BGM源码+解析后自动播放mp3

介绍 源码名称&#xff1a;【短视频音乐解析源码】在线解析抖音短视频音乐BGM源码解析后自动播放mp3 源码大小&#xff1a;41.8KB 开发语言&#xff1a;PHPMysql 操作系统&#xff1a;Windows&#xff0c;Linux 源码简介与安装说明&#xff1a; 纯源码非第三方接口&#…

抖音分享链接解析

现在抖音小视频很火&#xff0c;就研究了一下&#xff0c;写的不好请谅解。 $urlsI(url);//获取抖音视频分享链接 $dats self::get_dy($url); function get_dy($url){ $UserAgent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.…

python3 抖音短视频链接去水印下载视频到本地

基于近段时间对抖音&#xff0c;快手&#xff0c;秒拍等视频抓取一直想搞一下。加了个QQ群&#xff0c;里面全是自媒体&#xff0c;就是抖音、快手、秒拍的视频搬运工&#xff0c;把一个平台搬到另外一个平台上&#xff0c;去除水印。降低被干掉的危险。经过半天的琢磨&#xf…

微信小程序短视频去水印解析

小程序体验 下载源码&#xff1a;源码下载 js var services require(../../lib/service)var ReceiverOptions null; Page({data: {loading: false,videoInfo: {}, //{videoId:0,videourl:,title:}//0:加载完成(还有数据) 1:加载中 2:加载完成(没有更多数据了)searchLoadi…

PHP如何实现解析抖音短视频链接中的无水印视频

抖音短视频的链接一般是一个很短的url地址&#xff0c;实际访问之后会进行重定向&#xff0c;访问一个很长的地址 public function douyin(Request $request){//获取前端传的抖音短视频地址$url $request->param(url,https://v.douyin.com/eNpFNdB/);if(empty($url)){retur…

抖音seo短视频矩阵系统源码开发解析---多账号授权管理

本文开发语音使用PHP语言开发&#xff0c;梅雨plum框架自主研发&#xff0c;文末另附开发技巧 抖音SEO短视频矩阵系统源码开发解析是一种基于抖音平台的短视频排名优化技术&#xff0c;通过对抖音算法的分析和抖音用户行为的研究&#xff0c;提供一种基于“流量矩阵”的短视频管…

在线解析短视频去水印工具

网址&#xff1a;在线解析短视频去水印工具 点击“在线体验”