7.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)S等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s t時(shí)返回正值,當(dāng)s T時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/p>
my_cmp( char *s, char * t)
{while(*s==* t)
{ if(*s==‘\0’) return 0 ;
++s;++t;
}
return____________;
}
「解」兩字符串大小比較必須從它們的首字符開(kāi)始,在對(duì)應(yīng)字將相等情況下循環(huán),直至不相等結(jié)束。相等時(shí),老字符率已到了字符串的結(jié)束標(biāo)記符,則兩字符率相同,函數(shù)退回0值;如還有后繼字符,則準(zhǔn)備比較下一對(duì)字符。對(duì)應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時(shí),就以兩個(gè)當(dāng)前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在s t時(shí)返回正值,當(dāng)s T時(shí)返回負(fù)值。
6.3 程序分析題
1.閱讀函數(shù),寫(xiě)出函數(shù)的主要功能:
ch(int *p1,int *p2)
{ int p;
if(*pl *p2) { p=* pl;*pl=*p2;* p2=p; }
}
「解」函數(shù)辦有兩個(gè)指針形參p1和p2,函數(shù)體通過(guò)*pl和*p2間接引用它們所指變量。當(dāng)pl所指變量的位大于p2所指變量的值時(shí),交換兩形參所指變量的值。所以函數(shù)的功能當(dāng)形參1所指變量比形參2所指變量的值大時(shí),交換這兩個(gè)變量的值。調(diào)用該函數(shù)能保證形參1所指變量的值不大于形參2所指變量的值。
2.閱讀函數(shù),寫(xiě)出函數(shù)的主要功能:
float av(a,n)
float a[];
int n;
{ int i; float s;
for(i=0,s= 0;i N;I++) S=S+A[I];
return s/n;
}
「解」函數(shù)有一個(gè)數(shù)組形參a和一個(gè)整型形參n.函數(shù)首先用循環(huán)求數(shù)組a的前n個(gè)元素和,然后將和除以n.即求數(shù)組元素的平均值。
3.閱讀下面程序,寫(xiě)出運(yùn)算結(jié)果。
unsigned fun6( unsigned num)
{ unsigned k=l;
do { k*= num;num/=10;}
while(n) ;
return k;
}
main()
{ unsigned n=26;
printf(“%d\n”, fun6(n));
}
「解」函數(shù)有一個(gè)形參num,循環(huán)前變量 k置 1,循環(huán)中,表達(dá)式num是取num的個(gè)位,將num的個(gè)位值累乘于k中,然后num除以10.循環(huán)直至num為0結(jié)束,這是逐一求出num十進(jìn)制表示的各位數(shù)字,并累乘于變量k的循環(huán)。函數(shù)最后返回k.函數(shù)fun6的功能是求整數(shù)的各位十進(jìn)數(shù)字積。所以程序輸出12.