6[簡答題]下列給定程序中函數fun()的功能是:用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1,1,2,3,5,8,13,21,…
例如,若給n輸入7,則該項的斐波拉契數值為13。
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構!
試題程序:
參考解析:
(1)錯誤:switch(g);
正確:switch(g)
(2)錯誤:case 1:case2:return 1;
正確:case 1;case 2:return 1;
【解析】此題考查C語言的語法規則,switch(表達式)后不應該帶有“;”,case語句常量后應該是“:”。switch語句的一般形式如下:
7[單選題] 有三個關系R、S和T如下:
其中關系T由關系R和s通過某種操作得到,該操作為( )。
A.選擇B.投影C.交D.井
參考答案:D
參考解析:關系T中包含了關系R與s中的所有元組,所以進行的是并的運算。
8[單選題] 若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是( )。
A.函數的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數的實參和其對應的形參共占同一存儲單元
參考答案:A
參考解析:本題重點考察的是函數的形參和實參。I在定義函數時函數名后面括弧中的變量名稱為“形式參數”l(簡稱形參),在主調函數中調用一個函數時,函數名后面括弧1中的參數(可以是—個表達式)稱為“實際參數”(簡稱實參)。f C語言規定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。因此A選項正確。
9[單選題] 若有定義語句:int a=3,b=2,c=1;以下選項中錯誤的賦值表達式是( )。
A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);
參考答案:A
參考解析:不能將變量或常量賦給一個表達式,所以A選項中(b=4)=3是錯誤的。
10[單選題]
程序運行后的輸出結果是( )。
A.Qian,f,350,Sun,f,350
B.Qiamf,350,Qian,f,350
C.Qian,f,350,Sun,m,370
D.Zha0,m,290,Sun,m,370
參考答案:A
參考解析:c語言函數參數傳遞大致分為:1、值傳遞過程中。被調函數的形參作為被調函數的局部變量處理,即在內存的堆棧中開辟空間以存放由主調函數放進來的實參的值,從而成為了實參的一個拷貝。值傳遞的特點是被調函數對形參的任何操作都是作為局部變量進行,不會影響主調函數的實參變量的值。2、地址傳遞過程中,被調函數的形參雖然也作為局部變量在堆棧中開辟了內存空間,但是這時存放的是由主調函數放進來的實參變量的地址。被調函數對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調函數中的實參變量。正因為如此,被調函數對形參做的任何操作都影響了主調函數中的實參變量。結構體中nanle是數組,做實參傳遞,會退化為指針,因此調用f(),b.nanle發生修改,其他的成員,傳遞的是拷貝,不會被修改。因此輸出Sun,f,350。故答案為A選項。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |