c语言 算法
- 格式:ppt
- 大小:637.50 KB
- 文档页数:43


10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码
算法是一个程序和软件的灵魂,下面店铺为大家整理了10个经典的C语言面试基础算法及代码,希望能帮到大家!
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
{
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
int main()
{
int t1=0, t2=1, display=0, num;
10个经典的C语言基础算法及代码
1.冒泡排序算法
冒泡排序是一种简单但效率较低的排序算法,在每一轮遍历中比较相邻的两个元素,如果顺序不正确则交换它们,直到整个数组有序为止。
```c
void bubbleSort(int arr[], int n)
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-1-i; j++)
if (arr[j] > arr[j+1])
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
```
2.选择排序算法
选择排序是一种简单直观的排序算法,它每次从待排序的数组中选择最小(或最大)的元素,并放到已排序的数组末尾。 ```c
void selectionSort(int arr[], int n)
for (int i = 0; i < n-1; i++)
int min_index = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[min_index])
min_index = j;
}
}
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
```
3.插入排序算法
插入排序的基本思想是将数组分为已排序和未排序两部分,每次将未排序的元素插入到已排序的合适位置。
```c
void insertionSort(int arr[], int n) for (int i = 1; i < n; i++)
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key)
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
十大滤波算法程序大全精心整理版转自网络
1
1、限幅滤波法函数名称:AmplitudeLimiterFilter-限幅滤波法优点:能有效克服因偶然因素引起的脉冲干扰缺点:无法抑制那种周期性的干扰,且平滑度差说明:1、调用函数GetAD,该函数用来取得当前值2、变量说明Value:最近一次有效采样的值,该变量为全局变量NewValue:当前采样的值ReturnValue:返回值3、常量说明A:两次采样的最大误差值,该值需要使用者根据实际情况设置入口:Value,上一次有效的采样值,在主程序里赋值出口:ReturnValue,返回值,本次滤波结果/defineA10unsignedcharValueunsignedcharAmplitudeLimiterFilter{unsignedcharNewValue;unsignedcharReturnValue;NewValue=GatAD;ifNewValue-Value>A||Value-NewValue>AReturnValue=Value;elseReturnValue=NewValue;returnReturnValue;}
2、中位值滤波法
/函数名称:MiddlevalueFilter-中位值滤波法优点:能有效克服因偶然因素引起的波动干扰;对温度、液位等变化缓慢的被测参数有良好的滤波效果缺点:对流量,速度等快速变化的参数不宜说明:1、调用函数GetAD,该函数用来取得当前值Delay,基本延时函数2、变量说明ArrDataBufferN:用来存放一次性采集的N组数据Temp:完成冒泡法试用的临时寄存器i,j,k:循环试用的参数值3、常量说明N:数组长度入口:出口:value_bufN-1/2,返回值,本次滤波结果/
defineN11
unsignedcharMiddlevalueFilter
{unsignedcharvalue_bufN;unsignedchari,j,k,temp;fori=0;ivalue_bufk+1{temp=value_bufk;value_bufk=value_bufk+1;value_bufk+1=temp;}}}returnvalue_bufN-1/2;}
C语言经典算法100例
C语言经典算法100例
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
__________________________________________________________________程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
___________________________________________________________________程序源代码:
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;ii++)
{ printf(“%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");/*控制输出,每行四个*/
f1=f1+f2;/*前两个月加起来赋值给第三个月*/ f2=f1+f2;/*前两个月加起来赋值给第三个月*/
}
}
上题还可用一维数组处理,you try!
题目:判断101-200之间有多少个素数,并输出所有素数。
__________________________________________________________________程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
___________________________________________________________________程序源代码:
#include "math.h"
main()
{
int m,i,k,h=0,leap=1;