《C語言程序設計基礎》單元總結與練習題及答案_第1頁
《C語言程序設計基礎》單元總結與練習題及答案_第2頁
《C語言程序設計基礎》單元總結與練習題及答案_第3頁
《C語言程序設計基礎》單元總結與練習題及答案_第4頁
《C語言程序設計基礎》單元總結與練習題及答案_第5頁
已閱讀5頁,還剩35頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言程序設計單元總結與練習題答 案單元一 程序設計宏觀認識單元總結提升本單元中,核心內容有C語言程序框架結構、程序的構成和程序開發過程。通過本單元的學習,我們應該知道:1C語言程序最基本的程序框架由兩部分構成,分別是:(1) 編譯預處理 (2) 函數組 2C程序最大的特點就是所有的程序都是用函數來裝配的,函數是構成C語言程序的基本單位,函數包括主函數、庫函數和自定義函數。函數的一般結構形式為: 函數返回值類型 函數名(形式參數) /函數首部 說明語句; /函數體 可執行語句; 3 標識符是用來標識程序中的某個對象名字的字符序列。C語言把標識符分為三類,即關鍵字、預定義標識符、用戶自定義標識符

2、。對于用戶自定義標識符的命名C語言規定:(1) 所有的用戶標識符必須先定義后使用;(2) 用戶標識符由字母(AZ,az)、數字(09)、下劃線“_”組成,并且首字符不能是 數字 ;(3) 區分大小寫;(4)不能用關鍵字作為用戶自定義標識符,通常不使用預定義標識符作為用戶自定義標識符。4理論上講,程序開發過程分為四個步驟,分別為:(1) 編輯源程序 (2) 編譯源程序,生成目標程序 (3) 連接目標程序及其相關模塊,生成可執行文件 (4) 運行可執行文件 5簡單描述使用VC+6.0開發應用程序的步驟:如圖所示: 啟動VC+6.0打開或新建工程打開或新建文件編輯、編譯連接、運行完成圖 VC+6.0

3、開發程序的步驟總之,通過本單元的學習,應該掌握C語言程序框架結構和程序開發過程,還要對C語言程序設計的知識脈絡有一定的了解。單元練習一選擇題 1構成C語言程序的基本單位是( )。A框架    B預處理    C函數   D語句 2在程序開發過程中,把文本文件格式源程序轉化為二進制格式的目標程序的過程稱之為( )。A編輯 B編譯 C連接 D運行3關于主函數,下列說法不正確的是( )。A一個完整的C語言應用程序有唯一的主函數B主函數的名稱只能是mainC主函數可以被其他自定義函數調用DC語言程序的運行從主函數開始,以主

4、函數為核心展開4關于標識符,下列說法不正確的是( )。A庫函數名稱為預定義標識符,不建議用作用戶自定義標識符B. 關鍵字不能作為用戶自定義標識符C用戶自定義標識符中不區分大小寫字母D標識符中可以出現下劃線,且可以出現在標識符的任意位置5以下可用作用戶自定義標識符的一組是( )。Avoid、return、ifBprintf、include、fabsCMax、_abc、MainD2abc、pay$、sum-10二填空題1C語言程序一般由若干個函數構成,程序中應至少包含一個_,其名稱只能為_。 2C語言程序中每條語句必須以_結束。3C語言程序的注釋是以_開頭,以_結束的,在VC+6.0編程

5、環境中,可使用_作為注釋的起始標識,注釋對程序的執行不起任何作用。 4最初編寫的C語言程序稱為_,其擴展名為_,編譯后生成的文件為_,其擴展名是_,連接后生成的文件是_,其擴展名是_。 5C語言規定,標識符只能由_、_和_三種字符組成,而且,首字符只能是_或_。*習題答案:一選擇題1C2B3C4C5C二填空題1主函數 main2分號;3/* */ /4源程序 .cpp或.c目標文件(或目標程序) .obj 可執行文件(或可執行程序) .exe5字母(AZ,az)、數字(09)、下劃線“_” 字母或下劃線*單元二 程序設計基礎知識單元總結提升本單元中,核心內容有C語言中基本的

6、數據類型、常量和變量、運算符和表達式以及算法的概念。通過本單元的學習,我們應該知道:1C語言中最基本的數據類型有: 整型、字符型、浮點型 。2C程序中使用的常量按照表現形式可分為直接常量和符號常量。(1)直接常量 1)整型常量,有十進制、八進制和十六進制三種描述方式,其中,八進制的前置符號標志為 0 ,十六進制的前置符號標志為 0x或0X 。 2)浮點型常量,有十進制小數和指數兩種描述方式,指數形式的符號標志是 e或E 。 3)字符型常量,是用單撇引號括起來的單一字符,對一些特殊字符和控制字符用 的形式表示。 4)字符串常量,是用雙撇引號括起來的一串字符序列。字符串的結束標志為 0 。(2)符

7、號常量 符號常量是使用某個符號代表的常量,符號常量使用編譯預處理中的宏定義命令 定義。3C程序中使用變量,必須先 定義 ,后 使用 。變量定義后,系統會根據變量的類型分配相應的存儲空間。4C語言有豐富的運算符,其中算術運算符包括+、-、*、/、%,運算符中的 僅用于整數間的運算;賦值運算符包括“=”和相應的復合賦值運算符 +=、-=、*=、/= ,賦值運算的含義是將“=”右側的表達式的計算結果賦值給“=”左側的變量,這與數學中“=”的含義不同,需要注意。5由運算符和數據構成表達式,若表達式中各數據的類型不同,則存在類型自動轉換問題,必要時也可以使用強制類型轉換。6對于面向過程的程序設計來說,程

8、序= 數據結構 + 算法 。7在C語言中,對于每一個程序設計單元可采用結構化程序設計方法,有三種基本的程序結構,分別為: 順序 、 選擇 和 循環 。通過本單元的學習,應該掌握C語言程序設計所需要的基本知識,為后續內容的學習打下堅實的基礎。單元練習一選擇題 1在C語言中,int、short、char三種類型數據所占用的存儲空間是( )。A均為2個字節    Bint和short占2個字節,char占1個字節C與編譯環境有關   D由用戶自己定義  2下面定義字符型變量ch的語句不正確的是( )。Achar ch=X2A; 

9、Bchar ch="c" Cchar ch=65;   Dchar ch=NULL; 3已知大寫字母A的ASCII是65,小寫字母a的ASCII是97,以下不能將字符型變量c中的大寫字母轉換成對應的小寫字母的語句是( )。Ac= (c-'A')%26+'a'    Bc2=tolower(c);Cc= c-'A'+'a'   Dc=('A'+c)%26-'a'  4設有定義:dou

10、ble d,h;,其中d為三角形的底邊長,h為三角形的高,則以下C語言表達式與其面積公式dh計算結果不相符的是( )。Ad*h/2    B1/2*d*hCd*h*1/2Dd/2*h  5以下選項中,與k=n+;完全等價的語句是( )。Ak=n;n=n+1;    Bn=n+1;k=n;Ck=+n;Dk+=n+1;二填空題1寫出整型變量a、無符號長整型變量b、雙精度浮點型變量c和字符型變量d的定義語句: 。2常量a和”a”分別占用_個字節和_個字節的存儲空間。3有定義 int a=1234;,獲取其百位數碼的表達式為_。4若

11、有定義:char a=97,c;,則表達式c='a'+'8'-'3'的值為_。5已知int x=6;,則執行x+=x-=x-3;語句后,x的值是_。6將一個浮點型變量n四舍五入精確到小數點后兩位,其表達式為: 。7C語言中基本的數據類型有 、 、 。8結構化程序設計中基本的程序結構有 、 、 。*習題答案:一選擇題1C2B3D4B5A二填空題1int a; unsigned long b; double c; char d;21 23a/100%104f566(int)(n*100+0.5)/100.0;7整型、浮點型、字符型8順序、選擇、循環*

12、單元三 順序結構程序設計單元總結提升本單元中,核心內容是順序程序結構程序設計中標準輸入輸出庫函數的使用。通過本單元的學習,我們應該知道:1C語言提供了標準輸入輸出庫函數用于實現數據輸入輸出操作,其對應的頭文件為 stdio.h 。2單字符輸入和輸出函數分別為 getchar() 和 putchar() 。3格式化輸入和輸出函數分別為 scanf() 和 printf() 。4格式化輸出函數有兩種調用格式:(1) printf("字符串常量"); (2) printf("格式控制字符串",輸出項列表); 5格式化輸入/輸出中,格式控制符由 % 開頭。常用的

13、格式控制符有:整型int格式符 %d 、float浮點型格式符 %f 、double浮點型格式符 %lf 、字符型格式符 %c ;對于浮點型格式可以用 m.n 形式的附加格式說明小數的寬度和小數位數。6格式化輸入中的輸入項為地址列表,對變量取地址的運算符為 & 。通過本單元的學習,應對順序結構程序設計的特點和設計思路有所了解,同時重點學會單字符輸入函數getchar()、單字符輸出函數putchar()、格式化輸出函數printf()和格式化輸入函數scanf()的正確使用。單元練習一選擇題1已定義x為float型變量,其值為213.45678,則printf("%-4.2f

14、n",x);的輸出結果為( )。A213.46    B213.45   C-213.45   D輸出格式控制說明的域寬不夠,不能輸出  2. 有以下程序,程序運行時輸入:1,2,3<回車>,則輸出的結果為( )。#include <stdio.h>void main( ) int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("a+b+c=%dn",a+b+c); A6 &

15、#160;  Ba+b+c=6C123D不確定的值3.下面輸入語句中,正確的是( )。Ascanf("a=b=%d",&a,&b);  Bscanf("%d,%d",&a,&b); Cscanf("%c",c);   Dscanf("%d %dn",&f1,f2); 4在VC+6.0環境中,下列說法正確的是( )。A輸入函數scanf()輸入多個數據時,有時數據間不必加間隔符。B輸入函數scanf()中單精度或雙精度

16、浮點型數據都要用%f作為格式控制符。C使用輸出函數printf()輸出字符或字符串都用格式控制符%s。 D輸出函數printf()中單精度或雙精度浮點型數據都要用%f作為格式控制符。5下面程序的功能是實現兩個字符變量互換值,若為ch1輸入a,ch2輸入b,則程序運行時正確的輸入是( )。#include <stdio.h>void main( ) char ch1,ch2,ch; scanf("%c%c",&ch1,&ch2); ch=ch1;ch1=ch2;ch2=ch;printf("ch1=%c,ch2=%cn"

17、;,ch1,ch2); Aa,b    Ba<空格>bCabDa<回車>b二填空題1.有語句putchar(getchar(),程序運行時輸入:A,則輸出結果是_。2printf("%6.2f%",1.0/3);的輸出結果是_。3補充程序: int n1=10,n2=20; printf(" ",n1,n2); 要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始。n1=0010n2=00204.有以下程序,程序運行時輸入:1234<回車>,執行后輸出的結果是_。#include &l

18、t;stdio.h>void main( ) char ch1,ch2;int n1,n2; ch1=getchar();ch2=getchar();n1=ch1-0; n2=n1*10+(ch2-0); printf("n1=%d,n2=%d.n",n1,n2); 5. 輸入多個非字符型的數值數據時,數據輸入時可用 、 和 作為間隔符。*習題答案:一選擇題1A2D3B4A5C二填空題1.A2.0.33%3.n1=%04dnn2=%04d4.n1=1,n2=125.空格,TAB鍵,回車*單元四 選擇結構程序設計單元總結提升在選擇結構程序設計中,條件判斷表達式和選擇結構

19、實現語句是兩個核心內容。通過本單元的學習,我們應該知道:1條件判斷表達式由關系運算符及其表達式、邏輯運算符及其表達式構成,其中:(1) 關系運算符有: > 、 < 、 >= 、 <= 、 !=、 = (2) 邏輯運算符有: &&、|、 ! 2選擇結構實現語句有三種方式:(1) 單分支if選擇結構,一般格式為: if ( 表達式 ) 語句;(2) 雙分支if-else選擇結構,一般格式為:if ( 表達式 ) 語句1; else 語句2;(3) 多分支 switch選擇結構,一般格式為:switch( 表達式 ) case 常量表達式1: 語句序列1; b

20、reak; case 常量表達式2: 語句序列2; break; case 常量表達式n: 語句序列n; break; default: 語句序列n+1; 3在應用選擇結構時,應注意以下問題:(1)在if嵌套語句中,要弄清else與if的匹配關系,書寫if語句嵌套時一般采用縮進的階梯式寫法,在實際編程中,為了表明編程者的意圖,也常常通過“”來強制if和else的配對關系。(2)switch語句中,“表達式”和“常量表達式”的類型只能是整型或字符型數據,且“常量表達式”只能由常量構成,通過“表達式”與“常量表達式”之間的對等關系構造出多分支選擇結構。(3)在某些多分支選擇結構程序設計中,既可使用

21、if-else語句實現,也可以使用switch語句實現。switch語句與if語句的不同之處在于:switch語句僅能判斷一種邏輯關系,即“表達式”和指定“常量表達式”的值是否相等,而不能進行大于,小于某一個值的判斷,不能表達區間數據的概念;if語句可以計算和判斷各種表達式。所以switch語句不能完全替代if語句。總之,通過本單元的學習,應該掌握C語言選擇結構程序設計的思路和語句的基本用法。單元練習一選擇題1以下選項中,當x為大于1的奇數時,值為0的表達式( )。Ax%2=1     Bx/2     

22、 Cx%2!=0    Dx%2=0 2在C語言中,if語句后的一對圓括號中有一個用以決定分支走向的表達式,該表達式( )。A只能是關系表達式 B只能是邏輯表達式C只能是關系或邏輯表達式 D可以是任何合法表達式3讀下面程序段,當x=-3時,輸出y的值為( )。int x,y; y=0;scanf(“%d”,&x);if(x>=0)if(x>0) y=1;else y=-1; printf(“y=%d”,y);A1 B-1 C0 D不確定4下列語句將小寫字母轉化為大寫字母,正確的語句為( )。Aif(z>=ch>=a) ch=ch-3

23、2;Bif(ch>=a&&ch<=z) ch=ch-32;Cch=(z>=ch>=a)?ch-32:ch;Dch=( ch>=a&&ch<=z)?ch:ch-32;5關于與switch語句配套的case語句中所使用的表達式,說法正確的是( )。A可以是變量 B可以是常量或變量C只能是常量或常量表達式D無論是何種表達式,只要在執行時有確定的值就行二填空題1在算術運算符、關系運算符、邏輯運算符和賦值運算符中,運算優先級最高的運算符是 ,最低的是 。2正確表示數學關系“1<a<4”的C語言表達式為_。3整型變量n不能被3

24、整除的條件判斷表達式為 。 4以下程序段的功能是:對輸入的大寫字母循環移動6個位置后輸出,如A變為G,W變為C。請將程序段補充完整。char ch;ch= ;if(ch>=A&& ) else if( ) putchar(ch);5以下程序段功能是根據學生考試成績,確定其成績等級,成績與等級對應情況與【例4-7】中表格相同,請將程序段補充完整。char level; /成績等級float score; /考試成績scanf(“%f”,&score);switch( ) :level=A; ;case 8: level=B;break;case 7: level=C

25、; break;case 6: level=D; break;default: ; printf(“考試成績等級為: .”,level);*習題答案:一選擇題1D2D3C4B5C二填空題1!(非) =2a>1&&a<43n%3!=04 char ch;ch= getchar() ;if(ch>=A&& ch<='T' ) ch=ch+6; else if(ch>='U'&&ch<='Z' ) ch=ch-20; putchar(ch);5char level; /

26、成績等級float score; /考試成績scanf(“%f”,&score);switch(int(score/10) ) case 10: case 9 :level=A; break ;case 8: level=B;break;case 7: level=C; break;case 6: level=D; break;default: level='E' ; *單元五 循環結構程序設計單元總結提升在本單元中,如何理解循環的本質、如何分析循環的三個要素以及如何描述循環結構語句是核心內容。通過本單元的學習,我們應該知道:1 循環的本質是將程序員從大量重復編寫相同代

27、碼的工作中解放出來,減少程序源代碼的存儲空間,提高程序的質量,提高程序編寫的工作效率,但計算機執行程序的工作量并沒有減少。2 循環結構的三要素包括:(1)循環變量初值 (2)循環控制條件表達式(3)循環體 3循環結構描述語句有三種: while 、 do-while 和 for 。其中while和do-while的區別在于 不管循環條件是否成立,do-while循環都先執行一次循環體,所以do-while循環的循環體至少執行一次,而while循環的循環體可能一次都不執行 。4循環結構控制語句break的作用是: 結束循環 ;循環結構控制語句continue的作用是: 提前結束本次循環 。5在一

28、個循環結構語句中又包含了一個循環結構語句稱之為 循環的嵌套 。程序執行時,外層循環每執行一次,內層循環就要完整的執行完,直至內層循環執行結束,再開始執行下一次外層循環。學習完本單元,應該掌握C語言循環結構程序設計的思路和基本語句的用法。至此,我們就學完了結構化程序設計中的三種基本結構:順序、選擇和循環。單元練習一選擇題1下面說法正確的是( )。Awhile語句不管條件表達式是否為真,都將執行一次循環體。Bdo-while語句構成的循環,一定要有能使while后面表達式的值為0的操作,或在循環體中使用break語句。Cfor循環只能用于循環次數確定的情況,且先執行循環體語句,后判斷條件表達式。D

29、break語句的作用是從最近的循環體內跳出來,而continue語句的作用是繼續執行循環體中尚未執行的語句。 2 對for(表達式1;表達式3),可理解為( )。Afor(表達式1;0;表達式3)Bfor(表達式1;1;表達式3)C語法錯誤D僅執行循環一次3 以下程序的功能為( )。 #include <stdio.h>void main() int i,k=0; for(i=1;i<10;i+=2) k+=i+1; printf("%dn",k); A計算自然數19的累加和 B計算自然數110的偶數之和C計算自然數19的奇數之和 D計算自然數110的累加

30、和4以下能正確計算1*2*3*4*5*6*7*8*9*10的程序段是( )。Adoi=1;s=1; Bdoi=1;s=0; s=s*i; s=s*i; i+; i+; while(i<=10); while(i<=10);Ci=1;s=1; Di=1;s=0;do do s=s*i; s=s*i; i+; i+; while(i<=10); while(i<=10);5有以下程序段 int k=0; while(k=1) k+; while循環執行的次數是( )。A無限次 B1次C語法錯誤,不能執行D一次也不執行二填空題1若輸入字符串:abcde<回車>,則

31、以下while循環體將執行 次。 while(ch=getchar()=e) printf("*");2以下程序執行后的輸出結果是 。 #include <stdio.h>void main() int i; for(i=0;i<3;i+) switch(i) case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); 3下面程序的功能是:輸出100以內能被3整除且個位數為6的所有整數,請填空。 #include

32、 <stdio.h>void main() int i,j; for(i=0; ;i+) j=i*10+6; if( ) continue; printf("%dn",j); 4有以下程序 #include <stdio.h>void main() int x=23; do printf("%d",x-);while(!x); 該程序執行的結果為 。5以下程序的功能是計算1-3+5-7+-99+101的值,請將程序補充完整。 #include <stdio.h>void main() int i,t=1,s=0; fo

33、r(i=1;i<=101;i+=2) s=s+ ; ; printf("%dn",s); *習題答案:一選擇題1B2B3B4C5A二填空題1020111223i<10 j%3!=04235i*t t=-t*單元六 數組的使用單元總結提升在本單元中,如何定義一維、二維數組、如何操作數組以及如何利用字符數組處理字符串是核心內容。通過本單元的學習,我們應該知道:1 數組是一組相同類型的有序數據的集合。數組要先定義后使用,可以在定義時初始化,每個數組元素相當于同類型的變量,使用數組名和下標來唯一確定數組中的元素。2 一維數組定義的一般格式為: 類型標識符 數組名整型常量

34、表達式; ,對于已定義好的一維數組C編譯系統會分配連續的存儲空間, 數組名 代表數組在內存中存放的首地址。一維數組的引用方法為: 數組名下標 ,其中下標從 0 開始。3 二維數組定義的一般格式為: 類型標識符 數組名整型常量表達式1 整型常量表達式2; ,對于已定義好的二維數組C編譯系統會分配連續的存儲空間,將二維數組元素按 行 依次存儲。二維數組元素的訪問涉及第一維和第二維兩個下標,其引用方法為: 數組名下標1下標2 。4 字符數組是一組字符型數據的有序集合,其中每個數組元素的值都是字符。C語言用字符數組實現字符串變量,字符串以 0 作為結束標志。字符串的輸入可以通過 gets() 、 sc

35、anf() 函數實現,字符串的輸出可以通過 puts() 、 printf() 函數實現。常見的字符串操作庫函數有:求字符串長度函數 strlen() 、字符串復制函數 strcpy() 、字符串連接函數 strcat() 、字符串比較函數 strcmp(),這些庫函數的定義都在頭文件 string.h 中。常見的字符庫函數的定義都在頭文件 ctype.h 中。5 數組的操作通常離不開循環結構,在使用循環結構操作數組時應注意下標的變化規律。通過本單元的學習,應該掌握C語言中對于數組這一構造數據類型的使用方法和操作方法。單元練習一選擇題1定義一個名為s的字符型數組,并且賦初值為字符串"

36、123"的錯誤語句是( )。 Achar s=1','2','3','0 ';  Bchar s="123"; Cchar s="123n"            Dchar s4='1','2','3';  2下列數組定義語

37、句中,正確的是()Aint a=1,2,3,4,5,6;Bchar a23=a',b'Cint a3=1,2,3,4,5,6;Dint a=1,2,3,4,5,6;3已定義 int a3=1,2,3,4,5,6,7,8,9;,則a12的初值為( )。A2B4C6D84判斷字符串str1是否大于字符串str2,應當使用( )。Aif(str1>str2)Bif(strcmp(str1,str2)<0)Cif(strcmp(str2,str1)>0)Dif(strcmp(str1,str2)>0)5下列程序段的功能是給數組所有的元素輸入數據,然后輸出,請選擇

38、正確答案填空( )。#include <stdio.h>void main() int a10,i=0; while(i<10)scanf("%d", ); for(i=0;i<10;i+) printf("%4d",ai);A a+(i+) B&ai+1 Ca+i D&a+i二填空題1定義一個名為a的單精度浮點型一維數組,數組的長度為4,所有元素的初值均為0,定義語句為 ,引用該數組元素時,下標的范圍是 ,該數組占用的存儲空間為 字節。2設有數據定義語句int i=3,x4=1,2,3;,則數組元素xi 

39、;的值是 。3下列程序的功能是讀取10個實數,然后依次輸出前1個實數和、前2個實數和、.、前9個實數和、前10個實數和。請將程序補充完整。#include <stdio.h>void main() float f10,x=0; int i; for(i=0;i<10;i+) scanf("%f",&fi); for(i=0;i<10;i+) ; printf("sum of No.%2d is %.2f.n",i,x); 4下列程序的功能是求兩個矩陣的和,請將程序補充完整。#include <stdio.h>v

40、oid main() int a34,b34,c34; /數組c存放矩陣a與b的和 int i,j; for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d",&aij); for(i=0;i<3;i+) for(j=0;j<4;j+) scanf("%d", ); ; for(i=0;i<3;i+) for(j=0;j<4;j+)printf("%d ",cij); putchar('n'); 5閱讀下列程序,程序運行后的輸出結果是 。#incl

41、ude <stdio.h>#include <string.h>void main() char s320=“1234”,”234567”,”6789”; int i,k;for(k=0,i=1;i<3;i+)if(strcmp(sk,si)<0) k=i;puts(sk);*習題答案:一選擇題1C2C3C4D5A二填空題1float a4=0 0至3 16203x+=fi;或x=x+fi;4&bij cij=aij+bij 56789*單元七 函數的使用單元總結提升在本單元中,如何使用自定義函數是核心內容。通過本單元的學習,我們應該知道:1 函數是

42、構成C程序的基本單位,函數的使用為模塊化程序設計奠定了基礎。從用戶使用的角度,函數分為 庫 函數、 自定義 函數兩種。2 庫函數的使用包括 頭文件包含 和 庫函數調用 兩個環節;用戶自定義函數的使用包括 函數聲明 、 函數定義 和 函數調用 三個環節。3 從函數的外觀形式看,函數分為 有參 函數、 無參 函數兩種。當主調函數調用無參 函數時,不需要向這些函數傳遞參數;當主調函數調用 有參 函數時,需要傳遞參數。4 用戶自定義函數的一般形式為:函數返回值類型 函數名(形式參數列表) /函數首部 函數體;其中第一行稱為 函數首部 ,大括號“”括起來的部分稱為 函數體 ,對于有返回值的函數,函數體中

43、要包括 return 語句。5函數首部也稱為函數原型,用函數原型聲明函數時,形參名可以省略不寫,而只寫形參的類型,但形參的 類型 和 數量 必須與函數首部保持一致。6函數要先聲明,然后才能使用,函數聲明在程序中的位置有以下幾種情況:(1)函數聲明寫在主調函數的外部,這時的函數聲明為全局聲明。(2)函數聲明寫在主調函數的說明語句中,這時的函數聲明為局部聲明。(3)函數的定義出現在主調函數之前,則函數聲明可以省略。 7函數的調用形式為:函數名(實際參數列表)。若調用無參函數,則實參為空;若調用有參函數,則在()內寫出與形參類型、數量一致的實參。對于有參函數,函數調用過程中存在著參數傳遞的問題,參數

44、傳遞有兩種情況,其一為 值傳遞,其二為 地址傳遞。8函數在函數體中出現了對自身調用的語句,就稱為函數遞歸調用。使用遞歸方法解決問題的關鍵是如何找出 遞歸關系 ,以及找出遞歸調用的 終止條件 。9帶參宏定義的一般形式為: #define 宏名(形參列表) 字符串 。通常用帶參數的宏定義代替簡單公式型函數。10函數的存儲類型有static和extern兩種。 extern 型函數稱為“外部函數”,可以被其他編譯單位中的函數調用; static 型函數稱為“內部函數”,只能被本編譯單位的函數調用。11程序中變量的使用范圍稱為變量的作用域,每個變量都有自己的作用域。按照作用域的范圍可分為兩種: 局部變

45、量 和 全局變量 。12變量的存儲方式可分為“動態存儲”和“靜態存儲”兩種。動態存儲變量包括 auto 和 regiest 兩種類型;靜態存儲變量包括 static 和 extern 兩種類型。靜態存儲變量若沒有初始化,則默認初始值為 0 。static類型變量的值具有繼承性,即本次調用的初值是上次調用結束時變量的值。單元練習一選擇題1關于使用函數的目的,以下不正確的說法是( )。A提高程序的執行效率B提高程序的開發效率C減少程序文件所占內存D提高程序可讀性2以下正確的函數首部是( )。Avoid fun(int x,int y)Bvoid fun(int x;int y)Cvoid fun(

46、int x,y)Dvoid fun(x,y)3設函數fun的定義形式為:void fun(char ch, float x) . 則以下對函數fun的調用正確的是( )。Afun("abc",3.0);Bt=fun('D',12.3);Cfun('65',3.7);Dfun(65,65);4關于函數的實參和形參,以下正確的說法是( )。A實參和對應的形參各占用獨立的存儲單元B實參和對應的形參共同占用同一存儲單元C只有當實參與形參重名時才共同占用存儲單元D形參是虛擬的,不占用存儲單元5當調用函數時,實參是一個數組名,則向函數傳遞的是( )。A數

47、組的長度B數組的首地址C數組的每一個元素的地址D數組的每一個元素的值6將一個函數指定為static存儲類別后,該函數將( )。A既可以被同一源文件中的函數調用,也可以被其他源文件中的函數調用B只能被同一源文件中的函數調用,不能被其他源文件中的函數調用C只能被其他源文件中的函數調用,不能被同一源文件中的函數調用D既不能被同一源文件中的函數調用,也不能被其他源文件中的函數調用7以下敘述正確的是( )。A全局變量的作用域一定比局部變量的作用域作用范圍大B靜態static類型變量的生存期貫穿于整個程序的運行期間C函數的形參都屬于全局變量D未在定義語句中賦初值的auto變量和static變量的初值都是隨機值二填空題1假設已有#define M(r) r*r,則語句printf(“%d”,M(2+3);的

溫馨提示

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

評論

0/150

提交評論