1.靜態(tài)型內(nèi)部變量的作用域是___________.
「解」靜態(tài)存儲(chǔ)類型的主要特性是永久性和專用性。靜態(tài)局部變量提供永久存儲(chǔ),但因它是局部變量,也得遵守局部變量的作用域規(guī)則,是定義它的函數(shù)或復(fù)合語(yǔ)句。
2.函數(shù)中的形參和調(diào)用時(shí)的實(shí)參都是數(shù)組名時(shí),傳遞方式為______;都是變量時(shí),傳遞方式為_____________.
「解」在C語(yǔ)言中,實(shí)參向形參傳遞方式只有值傳遞,但傳遞的內(nèi)容可能是非指針類型的值,如基本類型值,或結(jié)構(gòu)類型值,也可以是指針類型值。通常傳遞指針類型值特稱為傳地址方式。其中實(shí)參向指針形參傳遞數(shù)組名,就是一種傳地址方式。若形參不是指針類型的,形參是一般的變量,實(shí)參可以是變量或表達(dá)式,就是值傳遞方式。
3.函數(shù)的形式參數(shù)的作用域?yàn)開____,全局的外部變量和函數(shù)體內(nèi)定義的局部變量重名時(shí),________變量?jī)?yōu)先。
「解」函數(shù)將它的形參當(dāng)作它的局部變量,所以函數(shù)形參的作用城為定義它的函數(shù)。當(dāng)函數(shù)的形參或函數(shù)內(nèi)的局部變量與函數(shù)外的全局變量同名時(shí),函數(shù)的局部變量?jī)?yōu)先。
4.若自定義函數(shù)要求返回一個(gè)值,則應(yīng)在該函數(shù)體中有一條________語(yǔ)句,若自定義函數(shù)要求不返回一個(gè)值,則應(yīng)在該函數(shù)說明時(shí)加一個(gè)類型符____________.
「解」苦自定義的函數(shù)有返回值,則函數(shù)返回時(shí)應(yīng)執(zhí)行帶表達(dá)式的return語(yǔ)句返回,該表達(dá)式的值將作為函數(shù)調(diào)用的結(jié)果。為了強(qiáng)調(diào)函數(shù)是一個(gè)不返回值的函數(shù),應(yīng)在該函數(shù)說明時(shí),加上一個(gè)void類型說明符。
5.若給fun函數(shù)的形參s傳送字符串:“ㄩㄩ 6354abcc”(其中ㄩ表示空格字符),則函數(shù)的返回值是__________.
# include
long fun(char s[])
{ long n;int sign;
for(; isspace(*s); s++);
sign=(*s==‘-’ )?-1:l;
if(*s==‘+’ ||*s==‘-’) s++;
for(n=0; isdigit(*s); s++) n=10*n+(*s-‘0’);
return sign *n;
}
「解」函數(shù)fun的第一個(gè)for循環(huán)跳過字符串的前導(dǎo)空白符,接著分析第一個(gè)非空白符是否是負(fù)號(hào),若是置變量sign為-1;否則,置變量sign為1.接著的if語(yǔ)句在第一個(gè)非空白字符是負(fù)號(hào)或正號(hào)時(shí),跳過該字符。以后的for循環(huán)將后面的數(shù)字符當(dāng)作十進(jìn)制數(shù)的各位數(shù)字譯出一個(gè)長(zhǎng)整數(shù)n.遇字符a時(shí),結(jié)束譯數(shù)循環(huán)。最后,函數(shù)返回sign與n的乘積。所以若調(diào)用函數(shù)時(shí)提供的實(shí)參是“ㄩㄩ6354abc”,函數(shù)返回值是整數(shù)6354.
6.下面函數(shù)要求計(jì)算兩個(gè)整數(shù)X、y之和,并通過形參Z傳回該和值,請(qǐng)?zhí)羁铡?/p>
void add(int x,int y,________z)
{_________=x+ y; return;}
「解」函數(shù)希望通過形參z傳送結(jié)果,形參z必須是指針類型的,由于返回整型結(jié)果,所以z的說明是int *z.函數(shù)返回前必須先把結(jié)果通過形參z間接引用(寫成* z)傳回。7.以下函數(shù)用來在w數(shù)組中插入x.在n所指向的存儲(chǔ)單元中存放著w數(shù)組中的字符個(gè)數(shù)。數(shù)組W中的字符已按從小到大的順序排列,插入后數(shù)組W中的字符仍有序。請(qǐng)?zhí)羁铡?/p>
void fun(char *w,char x, int *n)
{ int i, p;
p=0;
w[*n]=x;
whlie( x w[p] ) p++;
for(i=* n; i p;i——) w=_____________;
w[p] = x;
++ *n;
}
「解」在用數(shù)組實(shí)現(xiàn)的有序序列中插入內(nèi)容,必須先尋找插入位置。插入位置找到后,需將插入位置之后的元素向后移動(dòng)一個(gè)位置,留出插入點(diǎn)。最后,將元素插入,并增加序列的元素個(gè)數(shù)。函數(shù)為了簡(jiǎn)化尋找插入位置循環(huán)的循環(huán)條件,預(yù)先在序列的最后置人插入值。插入位置之后的元素向后移動(dòng)一個(gè)位置必須從最后一個(gè)元素開始往前逆序移動(dòng),是將前一個(gè)元素向后移,所以在空框處應(yīng)填入w[i-l] .