C語言經(jīng)典編程算法.doc_第1頁
C語言經(jīng)典編程算法.doc_第2頁
C語言經(jīng)典編程算法.doc_第3頁
C語言經(jīng)典編程算法.doc_第4頁
C語言經(jīng)典編程算法.doc_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.C語言經(jīng)典編程算法匯集(不斷補充)用pi/4=1-1/3+1/5-1/7+.公式求PI的近似值,直到最后一項的絕對值小有10的-6次方為止。#include main()int i=-1;float j,s=0.0;for(j=1.0;fabs(1.0/j)=1e-6;j=j+2.0)i=-i;s+=i*1.0/j;s=s*4.0;printf(%fn,s);輸入四個整數(shù),要求按由小到大的順序輸出。main()int a,b,c,d;printf(請輸入4個整數(shù):);scanf(%d,%d,%d,%d,&a,&b,&c,&d);printf(n a=%d, b=%d, c=%d, d=%d n,a,b,c,d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b,b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(排序結(jié)果如下:n);printf(%d %d %d %dn,a,b,c,d);譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。例如,可以按以下規(guī)律電文變?yōu)槊艽a:將字母A變成字母E,a變成e,即變成其后的第個字母,變成,變成,變成,變成。字母按上述規(guī)律轉(zhuǎn)換,非字母字符不變。如“China!”轉(zhuǎn)換為“Glmre!”。輸入一行字符,要求輸出其相應(yīng)的密碼。#include main()char a,b100;int i,j=0;printf(qing shu ru,yi hui che jie shu:);for(i=0;(bi=getchar()!=n;i+)if(bi=a&bi=A&biZ&biz)bi=bi-26;while(bj!=0)printf(%c,bj);j+;輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。main()int p,r,n,m,temp;printf(請輸入兩個正整數(shù) n,m);scanf(%d,%d,&n,&m);if(nm)temp=n;n=m;m=temp;p=n*m;while(m!=0) r=n%m; n=m; m=r; printf(它們的最大公約數(shù)為:%dn,n);printf(它們的最小公倍數(shù)為:%dn,pn);打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個“水仙花數(shù)”,因為153=1的立方+5的立方+3的立方。main()int i,j,k,n; printf(水仙花數(shù)是:); for(n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if(n=i*i*i+j*j*j+k*k*k) printf(%4d,n); printf(n);兩個乒乓球隊進行比賽,各出三人。甲隊為A、B、C三人,乙隊為X、Y、Z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單,A說他不和X比,C說他不和X、Z比。請編程序找出三對賽手的名單。main()char i,j,k;for(i=X;i=Z;i+) for(j=X;j=Z;j+) if(i!=j)for(k=X;k=Z;k+) if(i!=k&j!=k) if(i!=X&k!=X&k!=Z) printf(A-%ctB-%ctC-%cn,i,j,k);用起泡法對10個數(shù)排序(由小到大)。main()int a10,t,i,j;printf(qing shu ru 10 ge shu:n);for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i9;i+) for(j=0;j=aj+1) t=aj;aj=aj+1;aj+1=t;for(i=0;i10;i+)printf(%5d,ai);輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。#include main()char string81;int i,num=0,word=0;char c;gets(string);for(i=0;(c=stringi)!=0;i+)if(c= )word=0;else if(word=0)word=1;num+;printf(there are %d wprd in the line.n,num);用選擇法對10個整數(shù)排序(從小到大)。main()int i,j,temp,a11;printf(Enter data:n);for(i=1;i=10;i+)printf(a%d=,i); scanf(%d,&ai); printf(n);for(i=1;i=10;i+)printf(%5d,ai);printf(n);for(i=1;i=9;i+)for(j=i+1;jaj) temp=ai; ai=aj; aj=temp; printf(nThe sorted numbers:n);for(i=1;i=10;i+)printf(%5d,ai);將一個數(shù)組中的直按逆序重新存放。列如原來順序為:8、6、5、4、1。要求改為:1、4、5、6、8。#define N 5main()int aN,i,temp;printf(qing shu ru :);for(i=0;iN;i+) scanf(%d,&ai);for(i=0;iN/2;i+) temp=ai; ai=aN-i+1; aN-i+1=temp;for(i=0;iN;i+) printf(%4d,ai);printf(n);打印“打印魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。要求打印1平方的自然數(shù)構(gòu)成的魔方陣。main()int a1616,i,j,k,p,m,n;p=1;while(p=1) printf(Enter n(n=115):); scanf(%d,&n); if(n!=0)&(n=15)&(n%2!=0) p=0; for(i=1;i=n;i+) for(j=1;j=n;j+) aij=0;j=n/2+1;a1j=1;for(k=2;k=n*n;k+) i=i-1; j=j+1; if(in) i=i+2; j=j-1; else if(in)j=1; if(aij=0) aij=k;else i=i+2; j=j-1; aij=k; for(i=1;i=n;i+) for(j=1;j=n;j+) printf(%4d,aij); printf(n); 有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中(以兩兩交換的方式)。main()int a11=1,4,6,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(array a:n);for(i=0;iend) a10=number;else for(i=0;inumber) temp1=ai; ai=number; for(j=i+1;j11;j+) temp2=aj; aj=temp1; temp1=temp2; break; printf(Now,array a:n);for(i=0;i0;i-) str2*i=stri; str2*i-1= ; printf(nOutput:n%s,str);寫一函數(shù),輸入一行字符,將此字符串中最長的單詞輸出。int alphabetic(char c)if(c=a&c=A&c=z)return(1);elsereturn(0);int longest(char string)int len=0,i,length=0,flag=1,place=0,point;for(i=0;i=length) length=len; place=point; len=0; return(place); main() int i; char line100; printf(Input one line:n); gets(line); printf(nThe longest word is:); for(i=longest(line);alphabetic(linei);i+) printf(%c,linei); printf(n); 有15個數(shù)按由大到小的順序存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)是數(shù)組中第幾個元素的值。如果該數(shù)不在數(shù)組中,則打印出“無此表”。#include #define N 15main()int i,j,number,top,bott,mid,loca,aN,flag=1,sign=1;char c;printf(Enter data:n);scanf(%d,&a0);i=1;while(i=ai-1) i+; else printf(Enter this data again:); printf(n);for(i=0;iN;i+) printf(%4d,ai);printf(n);while(flag) printf(Input number to look for:); scanf(%d,&number); loca=0; top=0; bott=N-1; if(numberaN-1) loca=-1; while(sign=1)&(top=bott) mid=(bott+top)/2; if(number=amid) loca=mid; printf(Find %d,its position is %dn,number,loca+1); sign=0; else if(numberamid) bott=mid-1; else top=mid+1; if(sign=1|loca=-1) printf(%d is not found.n,number); printf(Continue or not(Y/N)?); scanf( %c,&c); if(c=N|c=n) flag=0; 寫一函數(shù),輸入一個十六進制數(shù),輸出相應(yīng)的十進制數(shù)。#include #define MAX 1000main()char tMAX,c; int i,flag,flag1; i=0; flag=0; flag1=1; printf(nInput a hex number:); while(c=getchar()!=0&i=0&c=a&c=A&c=0&si=a&si=A&si=F)n=n*16+si-A+10; return(n); 10進制轉(zhuǎn)k進制(2=k=9)編程 給定程序功能是將十進制正整數(shù)m轉(zhuǎn)化為k進制(2=k=9)數(shù)的數(shù)字輸出。例如,若輸入8和2,則應(yīng)輸出1000(即十進制數(shù)8轉(zhuǎn)化為二進制表示是1000)。 #include void fun( int m, int k ) int aa20, i; for( i = 0; m; i+ ) /*found*/ aai = m%k; /*found*/ m /= k; for( ; i; i- ) /*found*/ printf( %d, aa i-1 ); main() int b, n; printf( nPlease enter a number and a base:n ); scanf( %d %d, &n, &b ); fun( n, b );用遞歸法將一個整數(shù)n 轉(zhuǎn)換成字符串。例如輸入483,應(yīng)輸出字符串“483”。n的位數(shù)不確定,可以是任意位數(shù)的整數(shù)。#include void convert(int n)int i;if(i=n/10)!=0) convert(i);putchar(n%10+0);main()int number;printf(n Input an integer:);scanf(%d,&number);printf(Output:);if(number0) putchar(_); number=-number; convert(number);有n個整數(shù),使其前面各數(shù)順序向后移m個位置,最后m個數(shù)變成最前面m個數(shù),見圖10.3。寫一函數(shù)實現(xiàn)以上功能,在主函數(shù)中輸入n個整數(shù),并輸出調(diào)整后的n個數(shù)。main()int number20,n,m,i;printf(How many numbers?);scanf(%d,&n);printf(Input %d numbers:n,n);for(i=0;in;i+)scanf(%d,&numberi);printf(How many place you want to move?);scanf(%d,&m);move(number,n,m);printf(Now,they are:n);for(i=0;iarray;p-) *p=*(p-1); *array=array_end; m-; if(m0) move(array,n,m); 有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。main()int n,i,a100,*p,tr=0;printf(qing shu ru ren shu:);scanf(%d,&n);for(i=0;in;i+) ai=i+1;p=a;while(tra+n-1)p=a; for(i=0;in;i+) if(ai!=0) printf(zui hou liu zai dui wu zhong de shi %d,ai); break;寫一個函數(shù),將一個3*3的矩陣轉(zhuǎn)置。main()int a33,*p,i,j;printf(Input matrix:n);for(i=0;i3;i+) scanf(%d %d %d,&ai0,&ai1,&ai2);p=&a00;move(p);printf(Now,matrix:n);for(i=0;i3;i+)printf(%d %d %dn,ai0,ai1,ai2);move(int *pointer)int i,j,t; for(i=0;i3;i+) for(j=i;j3;j+) t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; 用指向指針的指針的方法對5個字符串排序并輸出。#define LINEMAX 20#include #include main()char *str5,tempLINEMAX,a5LINEMAX,*p;int i,j;printf(qing yi ci shu ru zi fu chuan:);for(i=0;i5;i+) gets(ai);for(i=0;i5;i+) stri=ai;p=str;for(i=0;i4;i+) for(j=i+1;j0) strcpy(temp,*(p+i);strcpy(*(p+i),*(p+j);strcpy(*(p+j),temp);for(i=0;i5;i+)puts(ai);printf(n)

溫馨提示

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

評論

0/150

提交評論