c語言程序設(shè)計(jì)實(shí)驗(yàn)五函數(shù)與編譯預(yù)處理_第1頁
c語言程序設(shè)計(jì)實(shí)驗(yàn)五函數(shù)與編譯預(yù)處理_第2頁
c語言程序設(shè)計(jì)實(shí)驗(yàn)五函數(shù)與編譯預(yù)處理_第3頁
c語言程序設(shè)計(jì)實(shí)驗(yàn)五函數(shù)與編譯預(yù)處理_第4頁
c語言程序設(shè)計(jì)實(shí)驗(yàn)五函數(shù)與編譯預(yù)處理_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)五 函數(shù)與編譯預(yù)處理1、 任務(wù)名稱:通過調(diào)試該程序,熟悉函數(shù)的調(diào)用方法及單步跟蹤鍵F7和F8的不同。源代碼:#include void main() void fun(int i, int j, int k); int x,y,z; x=y=z=6; fun(x,y,z); printf(x=%d;y=%d;z=%dn,x,y,z);void fun(int i, int j, int k) int t; t=(i+j+k)*2; printf(t=%dn,t);運(yùn)行結(jié)果:2、 任務(wù)名稱:源代碼:#include void main() int x=10,y=20;void swap (i

2、nt ,int);printf(1)in main :x=%d,y=%dn,x,y);swap(x,y);printf(4)in main :x=%d,y=%dn,x,y); void swap (int m,int n) int temp;printf(2)in main :m=%d,n=%dn,m,n);temp=m;m=n;n=temp;printf(3)in main :m=%d,n=%dn,m,n);運(yùn)行結(jié)果:源代碼:#include void main() int x=10,y=20;void swap (int ,int);printf(1)in main :x=%d,y=%dn

3、,x,y);swap(x,y);printf(4)in main :x=%d,y=%dn,x,y); void swap (int x,int y) int temp;printf(2)in main :x=%d,y=%dn,x,y);temp=x;x=y;y=temp;printf(3)in main :x=%d,y=%dn,x,y);運(yùn)行結(jié)果:運(yùn)行結(jié)果分析:形參具有“用之則建,用完則撤”的特點(diǎn)。在函數(shù)定義時(shí),函數(shù)名后面圓括號(hào)內(nèi)的參數(shù)稱為形參;在函數(shù)調(diào)用時(shí),函數(shù)名后面圓括號(hào)內(nèi)的參數(shù)稱為實(shí)參。對(duì)于實(shí)參,在調(diào)用函數(shù)中對(duì)其進(jìn)行定義時(shí),不僅指明它的類型,而且系統(tǒng)還為其分配存儲(chǔ)單元。而對(duì)于形參,定義時(shí)

4、僅僅只是指明它的類型,并不在內(nèi)存中為它們分配存儲(chǔ)單元,只是在調(diào)用時(shí)才為其分配臨時(shí)存儲(chǔ)單元,函數(shù)執(zhí)行結(jié)束,返回調(diào)用函數(shù)時(shí),該存儲(chǔ)單元立即撤銷。3、 任務(wù)名稱:實(shí)現(xiàn)求素?cái)?shù)源代碼:#include #include void main() int m; void prime(int ) ; /* 申明求素?cái)?shù)函數(shù) */printf(Please input a data m=:);scanf(%d,&m); prime(m); /* 調(diào)用求素?cái)?shù)函數(shù) */ printf(n);void prime(int n) int i,k; k=sqrt(n); for(i=2;i=k+1)printf(This

5、is a prime number);else printf(This isnt a prime number);運(yùn)行結(jié)果:4、 任務(wù)名稱:從鍵盤上輸入的若干個(gè)數(shù)并求出最大值。源代碼:#include void main( ) int i;int s10,max;int Findmax(int x ,int n );printf(Input 10 number : n); for(i=0;i10;i+) scanf(%d,&si); for (i=0;i10; i+)printf(%4d,si);printf(nthe max is %dn ,Findmax(s,10);int Findmax

6、( int x , int n ) int max,i; max=x0; for ( i=1; in; i+) if(maxxi) max=xi; return (max);運(yùn)行結(jié)果:5、 任務(wù)名稱:從鍵盤上輸入的若干個(gè)數(shù)按升序排序源代碼:#include void main( ) int i , k; void sort(int x,int n);float s100, j ;printf( Input number : n);for (i=0; scanf(%f,&j); i+)si=j;sort(s, i);for (k=0; ki; k+)printf( %f , sk);printf

7、(n);void sort( int x, int n ) int i, j, temp,min; for ( i=0; in-1; i+) min=i; for(j=i+1;jn;j+) if ( xj xmin)min=j; if(min!=i) temp=xi; xi=xmin; xmin=temp; 運(yùn)行結(jié)果:6、 任務(wù)名稱:編寫程序,實(shí)現(xiàn)由主函數(shù)輸入m、n,按下述公式計(jì)算并輸出的值。源代碼:#include void main( ) float fac(int n);int n,m;float C;printf(輸出兩個(gè)整數(shù):);scanf(%d,%d,&n,&m);if(mn) C

8、=fac(m)/(fac(n)*fac(m-n);printf(C=%f,C);elseprintf(數(shù)據(jù)錯(cuò)誤);printf(n);float fac(int n)float f;if(n0)printf(n0,錯(cuò)誤);else if (n=0|n=1)f=1;elsef=fac(n-1)*n;return(f);運(yùn)行結(jié)果:7、 任務(wù)名稱:說明下面程序的功能。源代碼:#include void main( ) int m, k; void dtoo( int n ,int r ); printf(Pleae input the decimal number:); scanf(%d,&m);p

9、rintf( nPlease input a number in (2,8,16):);scanf(%d,&k); dtoo(m,k);printf(n);void dtoo( int n ,int r ) if(n=r) dtoo(n/r,r); printf(%d,n%r); 運(yùn)行結(jié)果:運(yùn)行結(jié)果分析:此程序是輸出較小值8、 任務(wù)名稱:上機(jī)驗(yàn)證源代碼:# define LOW 10# define HIGH 5# define CHANGE 2int i = LOW ;#include void main( ) int workover ( int i ) , reset ( int i )

10、; int i = HIGH ; reset ( i / 2) ; printf( i = %d n , i ); reset ( i = i / 2) ; printf( i = %d n , i ); reset ( i / 2) ; printf( i = %d n , i ); workover ( i ); printf( i = %d n , i ); int workover ( int i ) i = ( i % i ) * ( i * i ) / ( 2 * i ) + 4) ; printf( i = %d n , i ); return ( i );int reset (

11、 int i ) i = i = CHANGE ? HIGH : LOW ; return ( i );運(yùn)行結(jié)果:運(yùn)行結(jié)果分析:“變量用之不盡,一寫就走”。在main()主函數(shù)中reset(i/2)和reset(i=i/2)不同,第一個(gè)reset的i沒有被賦值到,所以該函數(shù)調(diào)用結(jié)束后還保持原來的值;而第二個(gè)reset的i被賦值了,所以函數(shù)調(diào)用結(jié)束后以前的值就沒有。全局變量:在所函數(shù)外面定義的變量,其有效范圍到整個(gè)源程序結(jié)尾;局部變量:在函數(shù)內(nèi)部定義的變量或在函數(shù)頭部定義的形參,其有效范圍只在所定義的函數(shù),局部變量具有“用之則建,用完則撤”的特點(diǎn)。在不同函數(shù)內(nèi)定義的變量同名互不干擾。如果一個(gè)源程

12、序中的局部變量和全局變量同名,則局部變量?jī)?yōu)先。9、任務(wù)名稱:觀察靜態(tài)局部變量在調(diào)用過程中的變化。源代碼:#include void main( )int i ; int f(int);for ( i = 1; i = 5; i +) printf( (%d):% dn, i,f(i);printf( n);int f ( int n)static int j = 1;j = j * n;return( j );運(yùn)行結(jié)果:運(yùn)行結(jié)果分析:靜態(tài)局部變量。如果希望在函數(shù)調(diào)用結(jié)束后仍然保留函數(shù)中定義的局部變量的值,則可以將該局部變量定義為靜態(tài)局部變量(或稱局部靜態(tài)變量)。靜態(tài)局部變量具有這樣一些特點(diǎn):全

13、局壽命:靜態(tài)局部變量的數(shù)據(jù)存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)的存儲(chǔ)單元中,在函數(shù)調(diào)用結(jié)束后,它的值并不消失,直到整個(gè)應(yīng)用程序執(zhí)行結(jié)束,它的存儲(chǔ)空間才被收回去。局部可見性:其作用域只在定義它的函數(shù)內(nèi)部,盡管它的值在函數(shù)調(diào)用結(jié)束后并不消失,但其他函數(shù)仍然不能訪問它,在進(jìn)入到它所在的函數(shù)內(nèi),它的值才可見。初始化的特點(diǎn):若在定義該局部變量時(shí)有賦初值的,則賦初值只在編譯過程中進(jìn)行,只賦值一次;若沒有賦初值,則默認(rèn)的初值為0(數(shù)值型)或空字符(字符型)。10、 任務(wù)名稱:在程序運(yùn)行前宏NUM的值源代碼:#include stdio.h#define N 2#define M N+1#define NUM (M+1)*M/2main() int i,n=0; for (i=1; i(y)?(x):(y)#define PR printf#include void main() int a,b,c,d,x;a=5;b=10;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論