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