自考“高級語言程序設計”習題答案詳解(34)

  • 發(fā)布時間:2024-09-15 16:21:23
  • 來源:本站整理
  • 閱讀:
導讀:
  5.要求函數(shù)的功能是在一維數(shù)組a中查找x值。若找到,則返回所在的下標值;否則,返回0.設數(shù)據(jù)放在數(shù)組元素的a[1]到a[n]中。在以下給出的函數(shù)中,不能正確執(zhí)行此功能的函數(shù)是( )
 ?、?amp;#32;funa(int *a,int n, int x)
  { *a=x;
  whlie(a[n]!=x) n——;
  return n;
  }
 ?、?amp;#32;

5.要求函數(shù)的功能是在一維數(shù)組a中查找x值。若找到,則返回所在的下標值;否則,返回0.設數(shù)據(jù)放在數(shù)組元素的a[1]到a[n]中。在以下給出的函數(shù)中,不能正確執(zhí)行此功能的函數(shù)是( )

① funa(int *a,int n, int x)

{ *a=x;

whlie(a[n]?。絰) n——;

return n;

}

② funb(int *a, int n, int x)

{ int k ;

for( k=l; k =n; k++)

if(a[k]==x) return k;

return 0 ;

}

③ func(int a[], int n, int x)

{ int * k;

a[O]=x; k=a+n;

while(*k?。絰)k——;

return k-n;

}

④ fund(int a[], int n, int x)

{ int k=0;

do k++;

while((k N+1) (A[K]! =X));

if((k N+1) [K]==X)) RETURN K;

else return 0;

}

「解」在數(shù)組中找指定值是經(jīng)常遇到的計算要求,有多種編程方法。在這里,數(shù)據(jù)預放在數(shù)組下標1至n的元素中,下標為0的元素沒有放數(shù)據(jù),程序可以利用這個位置簡化查找函數(shù)。函數(shù)funa先將要查找的情放入a[0],從數(shù)據(jù)表的最后一個元素開始逆序向前查找。這樣做的好處是循環(huán)條件不必擔心因數(shù)組中原先沒有值為x的元素而一直順序查找下去,訪問不是數(shù)表的元素,需插入條件n>O.在a[0] 處放入x后,這個條件就不必要了,循環(huán)至少在訪問了a[0] 后終止,并返回0值。所以該函數(shù)能完成指定的功能。函數(shù)funb采用常規(guī)的辦法編寫,循環(huán)在a[1] 與a[n]之間順序尋找,一旦找到立即返回找到處的下標,直至查找循環(huán)結束,查不到指定的值而返回0值。函數(shù)func采用與函數(shù)funa相同的方法,不過是另外引入一個指針變量。但是該函數(shù)return語句后的表達式有嚴重的錯誤,應返回k-a,兩指針的差,其值等于找到元素的下標。表達式k-n是指針k向前移n個位置的指針值。函數(shù)fund預置k為0,循環(huán)讓 k增 1,并在 k在界內(nèi)和 a[k] 不等于 x的情況下循環(huán)。循環(huán)結束有兩種情況,或 k已不在界內(nèi),或k在界內(nèi),并且a[k]等于x.若是后者,函數(shù)返回k,而若前者,函數(shù)返回比該函數(shù)也能正確完成查找工作。這樣,不能正確完成查找工作的函數(shù)是函數(shù)fonc.所以正確選擇是③。

6.以下程序的輸出結果是( )

# include

subl(char a,char b) {char c;c=a;a=b;b=c;}

sub2(char *a,char b){ char c;c=*a;*a=b;b=c;}

sub3(char *a,char *b) { char c;c=*a;*a=*b;*b=c;}

main()

{ char a, b;

a=‘A’; b=‘B’; sub3( a, b); putchar(a); putchar(b);

a=‘A’;b=‘B’ ;Sub2( a,b);putchar(a); rutchar(b);

a=‘A’; b=‘B’; sub1(a,b); putchar(a);putchar(b);

}

①BABBAB ②ABBBBA

③ BABABA ④ BAABBA

「解」在上述程序中,函數(shù)subl完成兩形參值的交換,這個交換不影響實參變量,這是一個沒有意義的函數(shù)。函數(shù)sub2將第二個形參的值置入由第一個指針形參所指的變量中,指針形參所指的變量由調用時的實參提供。函數(shù)sub3完成將兩個形參所指的變量的值交換。程序調用sub3,使變量a和b的值交換輸出BA;調用subZ,使變量b的值傳送到a,輸出BB;調用subl,變量a和b的值不改變,輸出AB.所以程序輸出BABBAB.正確解答是①。

相關閱讀