C語言第六章

2023-01-19 03:21:03 字數 4450 閱讀 6609

第六章習題解析

一、選擇題

1.答案選擇:a

分析:int n1=0,n2,*p=&n2,*q=&n1;首先定義了兩個整型變數n1和n2,並為n1賦值為0,定義了兩個指標變臉p和q,p指向了n2的位址,q指向了n1的位址。可以用「間接訪問運算子」來引用相應的儲存單元,因此*p就是n2的值,*q就是n1的值。

與n2=n1等價的就是*p=*q,故選擇a答案。

2.答案選擇:b

分析:int x=0,*p=&x; printf(「%d\n」,*p);輸出*p的值,首先p指向了x的位址,*p將輸出x的值為0。

3.答案選擇:c

分析:a答案char a=』a』b=』b』,定義了兩個char型別的變數,並為它們賦初始值。定義兩個及多個變數時,變數中間用逗號隔開作為分隔,a選項中變數a和b中間沒有逗號,因此出錯。

b答案float a=b=10.0;定義個變數a,但是不能定義變數b,那麼將10.0賦值給變數b就違背了變數「先定義,後使用」的原則。

float a , b; a=b=10.0;這樣才對。

c答案int a=10,*b=&a;定義了乙個整型變數a和指標變數b,指標b指向了a的位址,因此c答案是正確的。

d答案float *a, b=&a;定義了乙個指標變數a和變數b,b被賦值為a的位址。普通變數不能接受位址,因此b=&a的形式是錯誤的。

4.答案選擇:c

分析:main()

首先定義了兩個變數a和b,,分別賦值為7和8,定義了三個指標變數p,q,r,其中p指向了a的位址,q指向了b的位址。

其次,r=p;p=q;q=r;這是典型的交換,在題目中表示指標p和q的互換,p指向了變數b的位址,q指向了變數a的位址。但是注意一點:雖然指標p和q互換但是變數a和b的值並沒有互換,a的值是7,b的值是8。

如果要互換a和b的值,將函式中的r=p;p=q;q=r;改為*r=*p;*p=*q;*q=*r;即可。

第三輸出:*p的值為8,*q的值為7,a的值為7,b的值為8,選擇c答案。

5.答案選擇:c

分析:void *fun(){}首先函式返回的是乙個位址,位址的型別是void是空,我們稱這種返回的型別為無值型的指標型別。

6.答案選擇:a

分析:int a,*pa=&a;指標pa執行了a的位址,簡單的說就是pa等價於&a。題目中要求使用scanf語句能正確為變數a讀入資料。

利用我們以前學過的知識,如果要給變數a輸入資料,其形式為:scanf(「%d」,&a); 結合指標的知識點可以有另外的一種形式,因為pa等價於&a,那麼scanf(「%d」,&a);可以換為scanf(「%d」,pa);故答案選擇a。

7.答案選擇:d

分析:int n=0,*p=&n,**q=&p;定義了乙個普通變數n賦初始值為0,乙個一維指標p指向了n的位址,乙個二維指標q指向了p的位址。

a答案p=1,將常量1賦值給一維指標是錯誤的,型別不一致。

b答案*q=2,因為q是二維指標,因此*q可以理解為一維的指標,將2賦值給*q型別不一致。

c答案q=p,q和q的型別不一致,因此不能直接賦值。

d答案*p=5,p是一維指標,*p就相當於乙個普通變數,因此可以將5賦值給*p。

8.答案選擇:c

分析:考查函式的呼叫和區域性變數的使用,看下面的函式,用紅色方框框住的」int a=2」對於整個程式來說是全域性的,因此在這裡我們把它叫做「全域性變數」,用紅圓圈圈住的部分「int a=5」在main函式中,那麼它的有效範圍僅僅在main函式中,由於「int a=5;s=f(&a)」用大括號括起來了,因此「int a=5」僅僅在main函式中的大括號中有效,把它叫做「區域性變數」。

(1)函式從main函式開始執行,定義了乙個整型變數s賦值為0,執行「int a=5;s=f(&a)」,呼叫f函式,此時的實參a是指「區域性變數」a,值為5。

(2)執行呼叫函式f,那麼形參a的值為實參a的位址,*a的值為5,返回

(*a)++表示式的值為5。

(3)執行完呼叫函式後s的值為函式返回值為5,繼續執行s+=f(&a),此時的實參a是指「全域性變數」a,值為2。

(4)執行呼叫函式f,那麼形參a的值為實參a的位址,*a的值為2,返回

(*a)++表示式的值為2。

(5)繼續執行s+=2,那麼s的值為7

9.答案選擇:a

分析:void fun(char *a, char *b)

main()

(1)從main函式開始執行,其中p1指標指向了變數c1的位址,指標p2指向了變數c2的位址,呼叫函式fun(p1,p2),此時實參為兩個指標,因此傳入的是位址。

(2)執行呼叫函式,那麼形參a和b也分別指向變數c1和c2的位址,執行:a=b,指標a指向了指標b指向的儲存單元,就是指向了c2。(*a)++相當於變數c2++,即變數c2的值變為了『b』。

fun函式執行完畢。

(3)繼續執行main函式中呼叫函式以後的語句,輸出c1和c2的值為:ab

10.答案選擇:a

分析:printf(「%d\n」,null);輸出null的值,在庫函式「中,null表示空,值為0。如果不包含「標頭檔案,將不能通過編譯,得不到正確結果。

11.答案選擇:c

分析:return *p;將返回p所指儲存單元中的值。

12.答案選擇:b

分析:考查函式的定義。

b答案int max(int x,y)中引數有兩個x和y,其中x的型別為int,但是引數沒有指定型別,因此是錯誤的。考點:定義函式時,一定要指定引數的型別。

a,c,d答案沒有錯誤。

13.答案選擇:c

分析:int a=5,*b,**c; c=&b; b=&a;二維指標c指向了一維指標b的位址,一維指標b指向了變數a的位址。*c將得到一維指標b的值,就是變數a的位址,**c將得到變數a的值。

14.答案選擇:a

分析:#include 「

main()

q指向了null為空,不能再去訪問其它的儲存單元。a答案中*q=0,將出現錯誤,可以通過編譯但是不能正確執行。

15.答案選擇:b

分析:int *f(int *x,int *y)

main()

16.答案選擇:d

分析:答案d中p=n,p是一維指標,n是普通變數,將變數賦值給指標,型別不一致因此是錯誤的。

17.答案選擇:d

分析:void fun(char *c,int c)

main()

18.答案選擇:d

分析:int a=511,*b=&a;輸出*b的值,首先指標b指向了a的位址,*b將輸出變數a的值為511。

19.答案選擇:c

分析:int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;p1指向了a的位址,p2指向了b的位址,p指向了c的位址。 *p=*p1*(*p2);計算*p1和*p2的乘積,注意中間的*號表示乘號。

即*p=1*3值為3,由於p指向了c的位址,*p的值為3那麼c的值為3。

20.答案選擇:c

分析:int fun1(double a)

int fun2(double x,double y)

main()

首先函式總是從main函式開始執行,在main函式中定義了乙個變數w,w用來接收函式的返回值。呼叫fun2(1.1,2.0)。

其次,執行函式fun2,引數x的值為1.1,引數y的值為2.0。執行函式體:定義了兩個變數a和b,a=fun1(1.1)

第三,執行函式fun1,那麼a的值為1.1,返回a*=a,那麼a的值為1.21,由於fun1函式返回的型別為int,而a的值是1.21,那麼返回的值為1。

第四,繼續執行fun2函式,那麼a=1.0,b=fun1(2)

第五,執行函式fun1(2),那麼a的值為2.0,返回a*=a,那麼a的值為4.0,由於fun1函式返回的型別為int,而a的值是4.0,那麼返回的值為4。

第六,繼續執行fun2函式,那麼a=1.0,b=4.0,返回(int)(a+b),值為5

第七,執行main函式的函式體,那麼w的值為5,由於w是double的型別,那麼w的值為5.0。

21.答案選擇:a

分析:int fun(int n)

main()

22.答案選擇:d

分析:int n=0,*p=&n,**q=&p;一維指標p指向了n的位址,二維指標q指向了指標p的位址。

a答案p=1,型別不一致,左邊p是一維指標,右邊是值

b答案*q=2,型別不一致,左邊*q獲得一維指標的值,是變數n的位址。將常量2賦值給*q,相當於將乙個值賦值給乙個位址,因此是錯誤的。

c答案q=p,q是二維指標,p是一維指標,因此型別不一致。

d答案*p=5,p是一維指標,將常量5賦值給指標變數p所指向的變數n。

23.答案選擇:d

分析:a答案float *p=1024,將乙個常量1024賦值給指標,賦值號兩邊的型別錯誤。b答案int *p=(float x);將乙個float型別的變數x賦值給指標變數p是錯誤的。

c答案float p=&x;將x的位址賦值給變數p是錯誤的。d答案float *p=&x;將變數x的位址賦值給指標p,因此是正確的。

第六章第六章財務計畫

6.1 資金 投資比例餅圖 希吉雅食品責任 成立初期,準備籌集資金100萬元。發起人自投60萬元,申請大學生創業貸款30萬元,10萬元尋求投資,企業固定資產作投資160萬元,向銀行貸款100萬元。共計註冊資本360萬元。投資比例如圖所示 圖8 1 投資比例 創業自籌資金由創業者個人以其個人名義籌集的...

第六章管理

答案 c 是指生產者至使用者或消費者之間的物流。a.物流 b.生產物流 c.銷售物流 d.營銷物流 答案 c 是企業生產物流系統的終點,也是銷售物流系統的起點。a.運輸 b.配送 c.包裝 d.庫存 答案 c 銷售物流服務有四個要素,即 可靠性 通訊和方便性。a.空間 b.地點 c.時間 d.數量 ...

第六章總結

第六章遺傳和變異 第一節生物的遺傳 一 dna是主要的遺傳物質 少數種類生物 如菸草花葉病毒 遺傳物質是rna。二 dna分子的結構和複製 1 dna分子結構特點 2 dna複製 1 概念 以親代fna分子為模板來合成子代dna的過程。2 過程 邊解旋邊複製 3 條件 模板 原料 能量和酶。4 分子...