【文章內容簡介】
i=7。i++) { s=0。 //去掉該語句 t=t*i。 s=s+t。 } printf(sum=d\n,s)。 //printf(“sum=%ld”,s)。 } 第6章 函數習題1. 單項選擇題 (1)C 語言總是從 A 函數開始執(zhí)行。 A. main B. 處于最前的 D. 隨機選一個 (2)函數在定義時,省略函數類型說明符,則該函數值的類型為 A 。 A. int B. float C. long D. double (2)以下 B 函數,真正地沒有返回值。 A. int a(){int a=2。return (a)。} B. void b(){printf(c)。} C. int a(){int a=2。return a。} D. 以上都是 (3)在 C 語言中,有關函數的說法,以下正確的是 C 。 A. 函數可嵌套定義,也可嵌套調用 B. 函數可嵌套定義,但不可嵌套調用 C. 函數不可嵌套定義,但可嵌套調用 D. 函數不可嵌套定義,也不可嵌套調用 (4)以下函數調用語句中,含有實參的個數為 B 。 7fun((2,3),(4,5+6,7))。 A. 1 B. 2 C. 5 D. 6(5)函數調用可以在 D 。 A. 函數表達式中 B. 函數語句中 C. 函數參數中 D. 以上都是 (6)被調函數返回給主調函數的值稱為 C 。 A. 形參 B. 實參 C. 返回值 D. 參數 (7) D ,可以不進行函數類型說明。 A. 被調函數的返回值是整型或字符型時 B. 被調函數的定義在主調函數定義之前時 C. 在所有函數定義前,已在函數外預先說明了被調函數類型 D. 以上都是 (8)被調函數通過 D 語句,將值返回給主調函數。 A. if B. for C. while D. return (9)被調函數調用結束后,返回到 B 。 (10)以下對 C語言函數的有關描述中,正確的是 A 。 A. 在 C 中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參 B. C函數既可以嵌套定義又可遞歸調用 C. 函數必須有返回值,否則不能使用函數 D. C程序中有調用關系的所有函數必須放在同一個源程序文件中 (11)C 語言中函數的隱含存儲類型是 A 。 A. auto B. static C. extern D. 無存儲類型 (12)能把函數處理結果的兩個數據返回給主調函數,在下面的方法中不正確的是 A 。A. return 這兩個數 B. 形參用兩個元素的數組 C. 形參用兩個這種數據類型的指針 D. 用兩個全局變量 2. 填空題 (1) 變量的作用域主要取決于變量 定義的位子 ,變量的生存期既取決于變量 存儲類型 ,又取決于變量 存儲方式 。 (2) 說明變量時,若省略存儲類型符,系統默認其為 整形 存儲類別,該存儲類別的類型符為: int 。 (3) 靜態(tài)型局部變量的作用域是 靜態(tài)局部變量定義的復合語句或函數體內 ,生存期是 整個程序運行期內 。 (4) 函數中的形參和調用時的實參都是數組名時,傳遞方式為 地址傳遞 ,都是變量時,傳遞方式為 值傳遞 。 (5) 函數的形式參數的作用域為 整個函數體內 ,全局的外部變量和函數體內定義的局部變量重名時, 函數體內定義的局部 變量優(yōu)先。 (6) 若自定義函數要求返回一個值,則應在該函數體中有一條 return 語句,若自定義函數要求不返回一個值,則應在該函數說明時加一個類型說明符 void 。 (7) 若函數的形式參數是指針類型,則實參可以是 數組名 、 地址 或 指針變量 。 (8) 函數的參數為 char *類型時,形參與實參結合的傳遞方式為 地址傳遞 。 (9) 函數的實參為常量時,形參與實參結合的傳遞方式為 值傳遞 。 (10) 對數組按值從大到小的順序排序后輸出,請?zhí)羁铡? include void main() { float a[7]={2,6,3,8,3,12,9}。 int i void sort(float*,int)。 sort(a,7) 。 for(i=0。i7。i++) printf(%f ,a[i])。 printf(\n)。 } void sort( float *p, int n ) { int i,j,k。 float t。 for(i=0。in1。i++) { k=i。 for(j=i+1。jn。j++) if( p[k]p[j] ) k=j。 if(k != i) { t=*(p+i)。 *(p+i)=*(p+k)。 *(p+k)=t。 } } } (11) 下列函數在 n 個元素的一維數組中,找出最大值、最小值并傳送到調用函數,請?zhí)羁铡? include void find(float *p, float *max, float *min, int n) { int k。 float t。 *max=*p。 *min = *p。 for(k=1。kn。k++) { t=*(p+k)。 if( t*max ) *max=t。 if(t*min) *min=t。 } }3. 寫出下列程序運行結果: (1) main() { int i=1,p。 p=fun(i,i+1)。 printf(%d\n,p)。 } int fun(int a,int b) { int f。 if(ab) f=1。 else if(a==b) f=0。 else f=1。 return f。 }輸出:1(2)鍵盤輸入 abcdefCR include void fun( ) { char c 。 if((c=getchar( ))!=39。\n39。) fun( ) 。 putchar(c)。 } void main( ) { fun( )。 } 輸出:fedcba(3) include define C 5 int x=1,y=C。 void main( ) { int x。 x=y++。 printf(%d %d\n, x,y)。 if(x4){ int x 。 x=++y。 printf(%d %d\n,x,y) 。 } x+=y。 printf(%d %d\n,x,y)。 } (4) include int c , a=4 。 func(int a , int b) { c=a*b 。 a=b1 。 b++ 。 return (a+b+1) 。 } void main( ) { int b=2 , p=0 。 c=1 。 p=func(b , a) 。 printf(%d,%d,%d,%d\n, a,b,c,p) 。 } 輸出:4,2,8,9 (5) unsigned fun6(unsigned num) { unsigned k=1。 do { k*=num%10。 num/=10。 } while(num)。 return k。 } void main( ) { unsigned n=26。 printf(%d\n, fun6(n))。 } 輸出:12輸出:5 67 712 64) fdsa) i++。 d\n,a)。