10个C语言面试算法及代码源代码质数数列

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

本篇介绍了包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。

1、计算Fibonacci数列

Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。

C语言实现的代码如下:

/*DisplayingFibonaccisequenceuptonthtermwherenisenteredbyuser.*/

#include

intmain()

intcount,n,t1=0,t2=1,display=0;

printf("Enternumberofterms:");

scanf("%d",&n);

printf("FibonacciSeries:%d+%d+",t1,t2);/*Displayingfirsttwoterms*/

count=2;/*count=2becausefirsttwotermsarealreadydisplayed.*/

while(count

display=t1+t2;

t1=t2;

t2=display;

++count;

printf("%d+",display);

return0;

结果输出:

Enternumberofterms:10

FibonacciSeries:0+1+1+2+3+5+8+13+21+34+

也可以使用下面的源代码:

/*DisplayingFibonacciseriesuptocertainnumberenteredbyuser.*/

{

intt1=0,t2=1,display=0,num;

printf("Enteraninteger:");

scanf("%d",&num);

while(display

}

Enteraninteger:200

FibonacciSeries:0+1+1+2+3+5+8+13+21+34+55+89+144+

2、回文检查

源代码:

/*Cprogramtocheckwhetheranumberispalindromeornot*/

intn,reverse=0,rem,temp;

temp=n;

while(temp!=0)

rem=temp%10;

reverse=reverse*10+rem;

temp/=10;

/*Checkingifnumberenteredbyuserandit'sreversenumberisequal.*/

if(reverse==n)

printf("%disapalindrome.",n);

else

printf("%disnotapalindrome.",n);

Enteraninteger:12321

12321isapalindrome.

3、质数检查

注:1既不是质数也不是合数。

/*Cprogramtocheckwhetheranumberisprimeornot.*/

intn,i,flag=0;

printf("Enterapositiveinteger:");

for(i=2;i<=n/2;++i)

if(n%i==0)

flag=1;

break;

if(flag==0)

printf("%disaprimenumber.",n);

printf("%disnotaprimenumber.",n);

Enterapositiveinteger:29

29isaprimenumber.

4、打印金字塔和三角形

使用*建立三角形

*

**

***

****

*****

inti,j,rows;

printf("Enterthenumberofrows:");

scanf("%d",&rows);

for(i=1;i<=rows;++i)

for(j=1;j<=i;++j)

printf("*");

printf("\n");

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

1

12

123

1234

12345

printf("%d",j);

用*打印半金字塔

for(i=rows;i>=1;--i)

用*打印金字塔

*******

*********

inti,space,rows,k=0;

for(space=1;space<=rows-i;++space)

printf("");

while(k!=2*i-1)

++k;

k=0;

用*打印倒金字塔

introws,i,j,space;

printf("Enternumberofrows:");

for(space=0;space

for(j=i;j<=2*i-1;++j)

for(j=0;j

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

/*Sourcecodetocreateasimplecalculatorforaddition,subtraction,multiplicationanddivisionusingswitch...casestatementinCprogramming.*/

charo;

floatnum1,num2;

printf("Enteroperatoreither+or-or*ordivide:");

scanf("%c",&o);

printf("Entertwooperands:");

scanf("%f%f",&num1,&num2);

switch(o){

case'+':

printf("%.1f+%.1f=%.1f",num1,num2,num1+num2);

case'-':

printf("%.1f-%.1f=%.1f",num1,num2,num1-num2);

case'*':

printf("%.1f*%.1f=%.1f",num1,num2,num1*num2);

case'/':

printf("%.1f/%.1f=%.1f",num1,num2,num1/num2);

default:

/*Ifoperatorisotherthan+,-,*or/,errormessageisshown*/

printf("Error!operatorisnotcorrect");

Enteroperatoreither+or-or*ordivide:-

Entertwooperands:3.4

8.4

3.4-8.4=-5.0

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

intprime(intn);

if(prime(i)!=0)

if(prime(n-i)!=0)

printf("%d=%d+%d\n",n,i,n-i);

printf("%dcan'tbeexpressedassumoftwoprimenumbers.",n);

intprime(intn)/*Functiontocheckprimenumber*/

inti,flag=1;

flag=0;

returnflag;

Enterapositiveinteger:34

34=3+31

34=5+29

34=11+23

34=17+17

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

/*Exampletoreverseasentenceenteredbyuserwithoutusingstrings.*/

voidReverse();

printf("Enterasentence:");

Reverse();

voidReverse()

charc;

scanf("%c",&c);

if(c!='\n')

printf("%c",c);

Enterasentence:margorpemosewa

awesomeprogram

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

/*Cprogrammingsourcecodetoconverteitherbinarytodecimalordecimaltobinaryaccordingtodataenteredbyuser.*/

intbinary_decimal(intn);

intdecimal_binary(intn);

intn;

printf("Instructions:\n");

printf("1.Enteralphabet'd'toconvertbinarytodecimal.\n");

printf("2.Enteralphabet'b'toconvertdecimaltobinary.\n");

if(c=='d'||c=='D')

printf("Enterabinarynumber:");

printf("%dinbinary=%dindecimal",n,binary_decimal(n));

if(c=='b'||c=='B')

printf("Enteradecimalnumber:");

printf("%dindecimal=%dinbinary",n,decimal_binary(n));

intdecimal_binary(intn)/*Functiontoconvertdecimaltobinary.*/

intrem,i=1,binary=0;

while(n!=0)

rem=n%2;

n/=2;

binary+=rem*i;

i*=10;

returnbinary;

intbinary_decimal(intn)/*Functiontoconvertbinarytodecimal.*/

THE END
1.最短路径A*算法原理及java代码实现(看不懂是我的失败)算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可) A*算法 百度上的解释: A*[1](A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。 公式表示为: f(n)=g(n)+h(n), https://blog.csdn.net/h348592532/article/details/44421753
2.Java编程实现A*算法完整代码java这篇文章主要介绍了Java编程实现A*算法完整代码,简单介绍了a星算法,然后分享了完整测试代码,具有一定借鉴价值,需要的朋友可以参考下。前言 A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中 通过二维数组构建的一个迷宫,“%”表示墙壁,A为起点,B为终点,“#https://www.jb51.net/article/129284.htm
3.启发式搜索AStar算法附代码A*算法是对Best-First算法的一种改进,核心思想是广搜,利用open表和close表对节点进行剪枝,同时利用启发式测度来选择最优的扩展节点。 A*算法在满足一定条件下找到的解必然是最优解。 最短路得到最优解条件:A*算法的启发式函数h如果小于等于真实值n的话,那么算法是能得到最优解的,若h大于等于真实值n,那么就不https://www.jianshu.com/p/5704e67f40aa
4.基于向量矩阵的Apriori改进算法研究摘要: 针对传统的关联分析算法Apriori执行效率低、I/O过重、计算量过大等问题,提出了一种通过减少扫描数据库次数来降低候选项集计算复杂度, 在频繁项集求解过程中通过将事务项集转换为行向量,利用“与”操作来提高算法执行效率的Apriori改进算法。利用学生在校行为数据集对Apriori改进算法进行有效性和高效性验证。https://jns.usst.edu.cn/html/2022/1/20220109.htm
5.Apriori算法如何用代码实现mb64ca025376906的技术博客Apriori算法如何用代码实现 Apriori算法是一种用于频繁项集挖掘的算法,通常用于市场篮子分析等场景,用于发现不同商品之间的关联规则。以下是使用Python实现Apriori算法的示例: from itertools import combinations # 定义函数用于生成候选项集 def generate_candidates(itemsets, k):https://blog.51cto.com/u_16213142/7073018
6.基于时空A*算法的多AGV无冲突路径规划从这一角度出发, 本文首先根据物流分拣中心的场地特点选择合适的地图建模方法, 然后将时间维度导入A*算法, 将其改进为时空A*算法, 并将时空A*算法作为基于冲突搜索框架的下层规划器, 用于求解多AGV无冲突路径规划问题. 对上述两种算法的融合, 旨在优势互补为解决路径规划中的冲突问题提供新的求解思路. 最后, 通过仿https://c-s-a.org.cn/html/2022/4/8454.htm
7.实测A*寻路与JPS寻路同一地图运行效率腾讯云开发者社区前面几篇我们把A*算法和JPS的算法都简单介绍了一下,并且展现出来了行动规划,其中A*算法的核心代码我也在《实战|OpenCV结合A*算法实现简单的运动路径规划》中放出来了, 感兴趣的朋友可以连接过去看一下,今天我们就专门对两个算法的运算效果进行一下实测,对比一下看看 https://cloud.tencent.com/developer/article/1621022