c語(yǔ)言常見(jiàn)基本算法程序段_第1頁(yè)
c語(yǔ)言常見(jiàn)基本算法程序段_第2頁(yè)
c語(yǔ)言常見(jiàn)基本算法程序段_第3頁(yè)
c語(yǔ)言常見(jiàn)基本算法程序段_第4頁(yè)
c語(yǔ)言常見(jiàn)基本算法程序段_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

cc語(yǔ)言常見(jiàn)基本算法程序段1、互換x,y的值利用中間變量tt二x;x=y;y=t;自身相加減x=x+y;y=x-y;x=x-y;2、 求m,n的最大公約數(shù)gys和最小、公倍數(shù)gbs相除求余法:余數(shù)用r表示if(m<n){互換m,n的值、}亠gbs=m*n;/*為求最小公倍數(shù)*/r=m%n;while(r!=0){m=n;n=r;r=m%n;}gys=n;gbs二gbs/gys; 一相減求差法:差數(shù)用c表示if(m<n){互換m,n的值}gbs=m*n;c=m-n;while(c!=0){m=n;n=c;if(m<n){互換m,n的值}c=m-n;}gys=m;/*或gys=n*/gbs=gbs/gys;窮舉法gbs=m*n;for(i=1;i<=n;i++)if(m%i==0&&n%i==0)gys=i;gbs=gbs/gys;求多個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)方法一:窮舉法方法二:利用求余或相減法,先求其中前兩個(gè)數(shù)的最大公約數(shù),再用前兩個(gè)數(shù)的最大公數(shù)與第三個(gè)數(shù)求最大公約數(shù),以此類(lèi)推,直到與最后一個(gè)數(shù)求最大公約數(shù)即可。3、 判斷m是否是素?cái)?shù)、用標(biāo)志變量flag=1假設(shè)m是素?cái)?shù)flag=1; 、for(i=2;i〈m;i++) /*或i<sqrt(m)*/if(m%i==0){flag=0;break;}if(flag==1)m是素?cái)?shù)elsem不是素?cái)?shù)用循環(huán)控制變量是否等于mfor(i=2;i〈m;i++) /*或i〈sqrt(m)*/if(m%i二=0)break;if(i==m)m是素?cái)?shù)elsem不是素?cái)?shù)4、 累加累乘注重發(fā)現(xiàn)累加項(xiàng)、累乘項(xiàng)的變化規(guī)律。(1)、累加(或計(jì)數(shù)):累加器初始化為0如求:1+2+3+ + 100s=0;for(i=1;i〈=100;i++)s=s+i;或:s=0;i=1;while(i〈=100){s=s+i;i++;}累乘:累乘器初始化為1如求n!p=1;for(i=1;i<=n;i++)、p=p*i或:p=1;i=1;while(i<=n){p=p*i;i++;}累加累乘同時(shí)進(jìn)行如求:1!+2!+3!+ +n!s=0;p=1;for(i=1;i<=n;i++){p=p*i;s=s+p;或:s=0;p=1;i=1;while(i<=n){p=p*i;s=s+p;

5、5、a、b、c、d、文本作圖外循環(huán)控制行,內(nèi)循環(huán)控制列。每次輸出一個(gè)或一組文本。注意文本前或文本與文本之間的空格個(gè)數(shù)。 定義行號(hào),并找出行號(hào)與該行文本個(gè)數(shù)之間的關(guān)系。(1)中心對(duì)稱(chēng)圖形(行號(hào):-n~n)*****!>**!>**X<*****for(i二-n;i〈二n;i++){for(j=l;j〈二abs(i)+m;j++)printf(“ “);for(j=l;j〈=2*n+i-2*abs(i);j++)printf(“*”);printf(“\n”);TOC\o"1-5"\h\z或: 11 2 11 2 3 2 11 2 11for(i=_2;i<=2;i++){for(j=1;j〈=3*abs(i);j++)printf(“ “);for(k二abs(i)-2;k〈=2-abs(i);k++)printf(“%3d”,3-abs(i)-abs(k));printf(“\n”)(2)三角形如:**********for(i=1;i〈=4;i++){for(j=1;j〈二i;j++)printf(“%c”,'*');printf(“\n”);}6、窮舉與遞推窮舉:如果解決的問(wèn)題可列出不定方程式或不定方程組,定方程中的未知數(shù)的作為循環(huán)控制變量,一個(gè)未知數(shù)一層循環(huán),控制變量的初值、終值為未知數(shù)的取值范圍。如:百錢(qián)買(mǎi)百雞。方程組如下:x+y+z=100

5*x+3*y+z/3.0=100、遞推:根據(jù)前一項(xiàng)推出后一項(xiàng)或根據(jù)后一項(xiàng)推出前一項(xiàng)。遞推時(shí)注意發(fā)現(xiàn)變化規(guī)律。7、排序:(對(duì)數(shù)組a中的n個(gè)元素按升序排序)從左向右排:(1)順序比較從左向右排:a[i]=a[j];

a[j]=x;}

從右向左排:

for(i二nT;i〉0;i--)

for(j=i-1;j>=0;j--)

if(a[i]〉a[j]){x=a[i];

a[i]=a[j];

a[j]=x;}a[i]=a[j];

a[j]=x;}

從右向左排:

for(i二nT;i〉0;i--)

for(j=i-1;j>=0;j--)

if(a[i]〉a[j]){x=a[i];

a[i]=a[j];

a[j]=x;}(2)選樣排序從左向右排:for(i=0;i〈nT;i++){p=i;for(j=i+1;j<n;j++)if(a[p]〉a[j])zP二j;if(p!=i){x=a[p];a[p]=a[i];a[i]=x;}}{p=i;for(j=i—1;j>=0;j--)if(a[p]{p=i;for(j=i—1;j>=0;j--)if(a[p]〉a[j])p=j;if(p!=i){x=a[p];a[p]=a[i];a[i]=x;}) 冒泡排序從左向右排:for(i=l;i〈n;i++)for(j=0;j<=n—1—i;j++)if(a[j]〉a[j+l]){x=a[j];a[j]=a[j+1];

a[j+l]=x;從右向左排:for(i二nT;i〉0;i--){for(j二n-l;j〉二n-i;j—)if(a[j]〈a[j-l]){x=a[j];a[j]=a[j-1];a[j-1]=x;}插入排序從左向右排:for(i=l;i〈二nT;i++){x=a[i];x〈a[j])x〈a[j])x〉a[j])while(j>=0&&{a[j+l]=a[j];j二}T;a[j+1]=x;從右向左排:for(i=n-2;i>=0;i--){x=a[i];j=i+1;while(j〈二nT&&{a[j-1]=a[j];j=j+1;a[j-1]=x;8、數(shù)組在統(tǒng)計(jì)中的應(yīng)用、統(tǒng)計(jì)數(shù)組中符合要求的如:輸出數(shù)組a中大于平均值的元素,并統(tǒng)計(jì)個(gè)數(shù)。#include〈stdio.h〉Viodmain(){inti,n=0,a[10]={34,56,76,23,12,87,32,45,38,41};floataver,s=0;for(i=0;i〈10;i++)s=s+a[i];aver二s/10;for(i=0;i〈10;i++)if(a[i]〉aver){n++;printf(“%d\t”,a[i]);}Printf(“\n%d”,n);((2)、將統(tǒng)計(jì)的結(jié)果保存到數(shù)組中如:統(tǒng)計(jì)全校1000名學(xué)生體重分別為48~52、53~57、58~62、63~67、68~72、73~77的人數(shù)。

#include〈#include〈stdio.h〉{intx,a[6]={0},i;for(i=l;i〈=1000;i++){scanf(“%d”,&x);a[(x-48)/5]++;}for(i=0;i<6;i++)中求最大值或最小值)9、極值(在給定的數(shù)組 在數(shù)組中求極值時(shí),可求極值,也可求極值的位置。假設(shè)數(shù)組中的首兀素為最大值或最小值。、一維數(shù)組中求最大值或最小值)9、極值(在給定的數(shù)組 在數(shù)組中求極值時(shí),可求極值,也可求極值的位置。假設(shè)數(shù)組中的首兀素為最大值或最小值。、一維數(shù)組a[10]a[0];il=0;min=a[0];i2=0;for(i=1;i<1{if(max<aif(min>a}printf(“max=%di1=%d\n”,max,i1);printf(“min=%di2=%d\n”,min,i2);、二維數(shù)組a[4][5]max=a[0][0];i1=0;j1=0;min=a[0][0];i2=0;j2=0;for(i=0;i<4;i++)for(j=0;j<5;{if(max<a=if(min>a[i}printf(“max=%d \ti1二%d\tj1=%d\n” ,max,i1,j1);printf(“min二%d\ti2二%d\tj2=%d\n”,min,i2,j2);max=);」L++)丄) {max二a=i=_i_) {min二a_i_;i2=i;}j++)){max=a[i][j];il二i;jl=j;}[j]){min=a[i][j];i2=i;j2=j;}10、查找順序查找直接對(duì)數(shù)組掃描并比較是否相等即可。二分法查找要求數(shù)組a[10]已排好序。方法一、在升序數(shù)組中查找#include〈stdio.h>voidmain(){intx,low,hig,mid,a[10]={1,2,3,4,5,6,7,8,9,10};scanf(“%d”,&x);n=10;low=0;hig=n-1;mid=(low+hig)/2;while(a[mid]〈〉x&&low〈二hig){if(x〉a[mid])low二mid+1;elsehig二midT;

mid=(low+hig)/s;}if(x==a[mid])printf(“%d:\t%d”,x,mid)elseprintf(“nofound”)方法二、在降序數(shù)組中查找#include〈stdio.h>voidmain(){intx,low,hig,mid,a[10]={10,9,8,7,6,5,4,3,2,1};scanf(“%d”,&x);n=10;low=0;hig=n-1;mid=(low+hig)/2;while(a[mid]〈〉x&&low〈二hig){if(x〉a[mid])hig二midT;elselow二mid+1;mid=(low+hig)/s;}if(x==a[mid])printf(“%d:\t%d”,x,mid)elseprintf(“nofound”)11、移動(dòng)要求移動(dòng)前后相鄰兩數(shù)的位置關(guān)系不變。如:a[10]={1,2,3,4,5,6,7,8,9,10}一維數(shù)組左移左移3位如下:4,5,6,7,8,9,10,1,2,3for(i=1;i<=3;i++){x=a[0];for(j=0;j<9;j++)a[j]=a[j+1];a[j]=x;}一維數(shù)組右移右移3位如下:&9,10,1,2,3,4,5,6,7for(i=1;i<=3;i++){x=a[9];for(j=9;j>0;j--)a[j]=a[j-1];a[j]=x;

二維數(shù)組按行向左移1列#definem4#definen5inta[m][n],i,j,x;for(i=0;i〈m;i++){x=a[i][0];for(j=0;j〈n-1;j++)[j]=a[i][j+1];a[i][j]=x;}一#definem4(4)二維數(shù)組按列向上移1#definem4#definen5inta[m][n],i,j,x;for(j=0;j〈n;j++){x=a[0][j];for(i=0;i〈mT;i++)a[i][j]=a[i+1][j];a[i][j]=x;}(5)移到指定位置將NXN階矩陣a的每列最大值移到主對(duì)角線(xiàn)上。for(j=0;j〈N;i++){max二a[0][j]; /*找最大值*/for(i=1;i〈N;i++)if(a[i][j]〉max)max二a、[i][j];while(max〈〉a[j][j])/*按列向上平移*/{x=a[0][j];for(i=0;i〈NT;i++)a[i][j]=a[i+1][j];a[N-1][j]=x;}12、插入、刪除、復(fù)制(1)插入xinta[11]={147,143,140,135,130,125,118,106,101,98}scanf(“%d”,&x);j=9;while(j>=0&& x〈a[j]){a[j+1]=a[j];j=j-1;a[j+1]=x;(2)刪除xinta[10]={147,143,140,135,130,125,118,106,101,98}k=0;for(i=0;i〈10;i++)if(a[i]!=x)a[k++]=a[i];復(fù)制 、、,①、一維數(shù)組復(fù)制到一維數(shù)組inta[9]={ },b[3][3],n=0;for(i=0;i〈3;i++)for(j=0;j〈3;j++){b[i][j]=a[n];n++;}②、二維數(shù)組復(fù)制到一維數(shù)組inta[9],b[3][3]={ },n=0;for(i=0;i〈9;i++)a[i]=b[i/3][i%3];13、矩陣(二維數(shù)組)處理(1)、相加#definem3#definen4inta[m][n],b[m][n],c[m][n];for(i=0;i〈m;i++)for(j=0;j〈n;j++)c[m][n]=a[m][n]+、相乘#definem3#definen4#definel5inta[m][n],b[n][l],c[m][l];for(i=0;i〈m;i++){for(j=0;j〈l;j++)c[i][j]=0;for(k=0;k〈n;k++)c[i][j]=c[i][j]+a[i][k]*b[k][j];、轉(zhuǎn)置(行列互換)#definem3#definen4inta[m][n],b[n][m];for(i=0;i〈m;i++)for(j=0;j〈n;j++)b[j][i]二a[i][j];、逆時(shí)針旋轉(zhuǎn)90度#definem3#definen4inta[m][n],b[n][m];for(i=0;i<m;i++)for(j=0;j<n;j++)b[j][i]=a[i][n-1-j];、順時(shí)針旋轉(zhuǎn)90度#definem3#definen4inta[m][n],b[n][m];for(i=0;i<m;i++)for(j=0;j<n;j++)b[j][i]=a[m-l-i][j];、逆時(shí)針或順時(shí)針旋轉(zhuǎn)180度#include〈stdio.h〉voidmain(){inti,j,m,n;inta[3][4]={l,2,3,4,5,6,7,8,9,10,ll,12},b[3][4];m=3;n=4;clrscr();for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%d\t",a[i][j]);printf(〃\n〃);for(i=0;i<m;i++)for(j=0;j<n;j++)b[i][j]=a[m-1-i][n-1-j];for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%d\t〃,b[i][j]);printf(〃\n〃);}}14、數(shù)制轉(zhuǎn)換(整數(shù))系統(tǒng)默認(rèn)數(shù)值型數(shù)據(jù)以十進(jìn)制形式輸出,非十進(jìn)制數(shù)的輸出可作字符輸出,也可將二進(jìn)制以十進(jìn)制形式輸出。如:(loioooii)10100011B 2(1)、十進(jìn)制x轉(zhuǎn)二進(jìn)制yintx,r,n=0;longy=0;while(x!=0)

{r=x%2;y二pow(10,n)*r+y;x=x/2;n++}或:intx,r,n=0,I;chary[]={“ “};while(x=0){r=x%2;y[n++]=r+48;x=x/2;}for(i二nT;i〉=0;i--)putchar(y[i]);、二進(jìn)制y轉(zhuǎn)十進(jìn)制xintx=0,r,n=0,i;chary[]={“10111001“};n=strlen(y);for(i=0;i<n;i++){r=y[i]-48;x二x+r*pow(2,n_i_1);、二進(jìn)制y轉(zhuǎn)八進(jìn)制x#include〈stdio.h〉#include〈math.h〉voidmain(){charx[]={" "};intr,n=0,m=0,t=0,i;chary[]二{"10111001"};clrscr();n=strlen(y);for(i=n-1;i>=0;i--){r=y[i]-'0';t二t+r*pow(2,m);m++;if(m==3||i==0){m=0;r=0;x[((i+1)/3)]=t+'0';t=0;}}puts(x);、八進(jìn)制x轉(zhuǎn)二進(jìn)制y#include〈stdio.h〉#include〈math.h〉voidmain()"},t[3];{"},t

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論