第一篇:C語(yǔ)言程序總結(jié)
C語(yǔ)言程序總結(jié)
1·C程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)函數(shù)(main函數(shù)),也可以包含一個(gè)main和若干其他函數(shù)。C的函數(shù)相當(dāng)于其它語(yǔ)言中的子程序。用函數(shù)來(lái)實(shí)現(xiàn)特定的功能??梢哉f(shuō)C是函數(shù)式的語(yǔ)言。程序全部工作都是由函數(shù)來(lái)完成的。C的函數(shù)庫(kù)十分豐富,標(biāo)準(zhǔn)C提供一百多個(gè)庫(kù)函數(shù),TurboC和MS C4.0提供三百多個(gè)庫(kù)函數(shù)。
C的這種特點(diǎn)使得容易實(shí)現(xiàn)程序的模塊化。2.一個(gè)函數(shù)由兩部分組成:
(1)函數(shù)的說(shuō)明部分。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、形式參數(shù)類型。
例如例1.3中的max函數(shù)的說(shuō)明部分為。int max(x,y)函數(shù)類型 函數(shù)名 函數(shù)參數(shù) int x,y;形參類型 形參
一個(gè)函數(shù)名后面必須跟一對(duì)圓括弧,函數(shù)參數(shù)可以沒(méi)有,如main()。
(2)函數(shù)體,即函數(shù)說(shuō)明部分下面的大括?。?}內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)大括弧,則最外層的一對(duì){
}為函數(shù)體的范圍。
函數(shù)體一般包括:
①變量定義。如例1.3中main函數(shù)中的“int a,b,c”。
②執(zhí)行部分。由若干個(gè)語(yǔ)句組成。
當(dāng)然,在某些情況下也可以沒(méi)有變量定義部分(例如例1.1)。甚至可以既無(wú)變量定義也無(wú)執(zhí)行部分。如:
dump(){ } 它是一個(gè)空函數(shù),什么也下干,但這是合法的。3.一個(gè)C程序總是從main函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前在另一些函數(shù)之后)。
4.C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫在多行上人程序沒(méi)有行號(hào),也不象FORTRAN或CoBoL那樣嚴(yán)格規(guī)定書寫格式(語(yǔ)句必須從某一列開(kāi)始書寫)。5.每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ)句的必要組成部分。例如:
c=a十b;
分號(hào)不可少。即使是程序中最后一個(gè)語(yǔ)句也應(yīng)包含分號(hào)(這是和PAScAL語(yǔ)言不同的)。
6.C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成.C對(duì)輸入輸出實(shí)行‘函數(shù)化'
7.可以用/*??*/對(duì)C程序中的任何部分作注釋,一個(gè)好的,有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。
第二篇:c語(yǔ)言程序分類總結(jié)
一、選擇排序法:
1、函數(shù)方法: #include
scanf(“%d”,&a[i]);sort(a,10);printf(“The sorted array:n”);for(i=0;i<10;i++)
printf(“%d ”,a[i]);printf(“n”);}
void sort(int array[],int n){int i,j,k,t;
for(i=0;i {k=i; for(j=i+1;j if(array[j] k=j; t=array[k];array[k]=array[i];array[i]=t;} } 2、數(shù)組方法:實(shí)驗(yàn)6_1 #include printf(“enter data:n”); for(i=1;i<=10;i++) {printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(“n”); printf(“The orginal numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“nThe sorted numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”);} 3、指針?lè)椒ǎ海ń滩?09 例題8.9)#include scanf(“%d”,p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++) {printf(“%d ”,*p);p++;} printf(“n”);} void sort(int x[],int n){int i,j,k,t; for(i=0;i {k=i; for(j=i+1;j if(x[j]>x[k])k=j; if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;} } } 二、素?cái)?shù)算法: 1、篩選法求素?cái)?shù)(教輔41.1題)#include for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i for(j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf(“n”); for(i=2,n=0;i<=100;i++) { if(a[i]!=0) {printf(“%5d”,a[i]); n++; } if(n==10) {printf(“n”); n=0; } } printf(“n”);} 2、(1)For循環(huán)方法: #include printf(“please enter a integer number:”); scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)printf(“%d is a prime number.n”,m); else printf(“%d is not a prime number.n”,m);} (2)求100~200之間素?cái)?shù): # include for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {printf(“%d ”,m); n=n+1; } if(n%10==0)printf(“n”); } printf(“n”);} 3、函數(shù)方法:實(shí)驗(yàn)7_1(教輔63.3題)#include int n; printf(“ninput an integer:”); scanf(“%d”,&n); if(prime(n)) printf(“n %d is a prime.n”,n); else printf(“n %d is not a prime.n”,n);} int prime(int n) {int flag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 三、最值問(wèn)題: 1、函數(shù)方法,兩個(gè)數(shù)比較大小(教材144.例題7.2)#include int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max is %dn”,c);} int max(int x,int y){ int z; z=x>y?x:y; return(z);} 2、二維數(shù)組,求出其中值最大的那個(gè)元素值:(教材123.例題6.5)#include int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf(“max=%d,row=%d,colum=%dn”,max,row,colum);} 3、有三個(gè)字符串,要求找出其中最大者(教材136.例題6.9)#include char string[20]; char str[3][20]; int i; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“nthe largest string is:n%sn”,string);} 4、函數(shù)方法,四個(gè)整數(shù),找出最大值:(教材152.例題7.5)#include int a,b,c,d,max; printf(“Please enter 4 interger numbers:”); scanf(“%d %d %d %d”,&a,&b,&c,&d); max=max_4(a,b,c,d); printf(“max=%d n”,max);} int max_4(int a,int b,int c,int d){int max_2(int a,int b);int m; m=max_2(a,b);m=max_2(m,c);m=max_2(m,d);return(m);} int max_2(int a,int b) 這也可以這么寫 int max_2(int a,int b){return(a>b?a:b); {if(a>b)return a;} else return b;} 四、輾轉(zhuǎn)相除問(wèn)題:(最大公約數(shù)最小公倍數(shù)問(wèn)題) 1、一般法,求最大公約數(shù)和最小公倍數(shù)(教輔26頁(yè),第一題)#include int p,r,n,m,temp; printf(“請(qǐng)輸入兩個(gè)正整數(shù)n,m:”); scanf(“%d,%d,”,&n,&m); if(n { 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”,p/n);} 2、函數(shù)法: void main(){int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”,l);} int hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v);} int lcd(int u,int v,int h) { return(u*v/h); } 五、有關(guān)指針的實(shí)驗(yàn)題: 1、實(shí)驗(yàn)9-1(輸入3個(gè)整數(shù),由小到大的順序排列)(1)#include void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; }(2)#include void swap(char *p1,char *p2){char p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 2、實(shí)驗(yàn)9_2(將n個(gè)數(shù),輸入時(shí)順序的逆序排列)#include scanf(“%d”,&num[i]);p=&num[0];sort(p,n);printf(“Now,the sequence is:n”);for(i=0;i printf(“%d ”,num[i]);printf(“n”);} void sort(char *p,int m){int i;char temp, *p1,*p2;for(i=0;i {p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; } } 3、實(shí)驗(yàn)9_3(寫一函數(shù),求一個(gè)字符長(zhǎng)度)#include int length(char *p) {int n;n=0;while(*p!='