《c程式設計》的演算法歸納

2021-04-13 22:23:54 字數 3193 閱讀 3810

文章由演算法原始碼吧(www.sfcode.cn)收集

遞迴法轉換整數為字元

void convert(int n)

判斷素數

int isprime(int n)

求閏年

if((year%4==0&year%100!=0)||(year%400)==0)

printf("%d is a leap year",year);

else

printf("%d is not a leap year",year);

求n的階乘

for(int t=1,i=2;i<=n;i++)

t*=i;

printf("%d",t);

求m和n最大公約數和最小公倍數

if(a

r=a%b;

while(r)

printf("(a,b)最大公約數%d,(a,b)最小公倍數%d",r,ab/r);

大寫字母改小寫字母

c1=getchar();

c2=c1+32;

printf("%c,%c",c1,c2);

小寫字母改大寫字母

c1=getchar();

c2=c1-32;

printf("%c,%c",c1,c2);

求3個數由小到大的順序輸出

if(a>b)

if(a>c)

if(b>c)

* 若要求由大到小順序輸出,改'>'為'<'即可。

求ax*x+b*x+c方程的解

if(fabs(a)<=1e-6)

printf("非二次方程");

else

disc=b*b-4*a*c;

if(fabs(disc)<=1e-6)

printf("有兩相等實根:%f/n",-b/(2*a));

else if(fabs(disc)>1e-6)

else

求fibonacci數列 ( f(n)=f(n-1)+f(n-2) )

int f[n]=;

for(i=2;i

f[i]=f[i-1]+f[i-2];

printf("%d",f[i]);

迭代法求x=sqrt(a) ( 迭代公式:x(n+1)=(x(n)+a/x(n))/2 絕對誤差<0.00001 )

double mysqrt(double x0)

求方程2*x*x*x-4*x*x+3*x-6的根

(1)牛頓迭代法求方程在1.5附近的根

( 牛頓迭代公式:x(n+1)=x(n)-f(x(n))/f'(x(n)) 絕對誤差<0.001 )

double f(double x0)

(2)二分法求方程在(-10,10)之間的根 ( 絕對誤差<0.001 )

/* 子程式部分 */

float f(float x)

- - - - - - -

/* 主程式部分 */

float m=-10,n=10;r=(m+n)/2;

while(f(r)*f(n))

printf("%f",r); /* r即為根 */

(3)弦截法求根

/* 子程式部分 */

float f(float x)

float xpoint(float x1,float x2);

float root(float x1,float x2)

else

x2=x;

}while(fabs(y)>=0.0001);

return(x);

} - - - - - - -

/* 主程式部分 */

dowhile(f1*f2>=0);

x=root(x1,x2);

printf("乙個根為:%f/n",x);

冒泡法排序 (由小到大)

int a[n+1];

for(i=1;i<=n;i++) /* 輸入n個數 (陣列輸入功能)*

scanf("%d",&a[i]);

for(j=1;j

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

if(a[i]>a[i+1])

for(i=1;i<=n;i++) /* 輸出排好的這n個數 (陣列輸出功能) */

printf("%d",a[i]);

選擇法排序 (由小到大)

/* 子程式部分 */

void sort(int array,int n)

插入法排序

int a[n];

/* 省略陣列輸入(見上:冒泡法)*/

for(i=1;i

a[j]=m;

}

/* 省略陣列輸出(見上:冒泡法)*/

數列中查詢乙個關鍵字

(1)折半法

binarysearch(a,n,x,j)

k=0;

m=n-1;

while(k<=m)

if(k>m) j=0;

printf("%d",j);

(2)順序查詢法

int a[n];

/* 省略陣列輸入(見上:冒泡法)*/

for(i=0;i

if(x==a[i])

if(i==8)

printf("沒找到!");

(3)快速順序查詢法

int a[n];

/* 省略陣列輸入(見上:冒泡法)*/

a[n-1]=x;

i=0;

while(a[i]!=x) i++;

if(i

else printf("沒找到!");

漢諾塔(hanoi)問題

hanoi(n,x,y,z)

if(n==1)

move(x,1,z);

else

{

hanoi(n-1,x,z,y);

move(x,n,z);

hanoi(n-1,y,x,z);

本文**

《c程式設計》的演算法歸納

文章由演算法原始碼吧 www.sfcode.cn 收集 遞迴法轉換整數為字元 void convert int n 判斷素數 int isprime int n 求閏年 if year 4 0 year 100 0 year 400 0 printf d is a leap year year el...

C語言常用演算法歸納

記錄一些常用的演算法,包括實際應用的。首先是氣泡排序。這個一般在一些濾波演算法的時候可能會用到。氣泡排序 include intmain 氣泡排序 for j 1 j n 1 j n個數處理n 1趟 for i 0 i n i return0 冒牌排序的演算法的基本思維是 1.對存放序列的陣列的第乙...

歸納邏輯程式設計

歸納邏輯程式設計 inductive logic programming,ilp 在一階規則學習中引入了函式和邏輯表示式巢狀。這使得,一方面機器學習系統具備了更為強大的表達能力 另一方面ilp可看作用機器學習技術來解決基於背景知識的邏輯程式 logic program 貴南,其學得的規則可被prol...