了解湖南/長沙365体育备用网址資訊,從365投注平台開始!365bet官网報名365bet官网本科
您當前的位置:首頁 > 365bet官网考前練習

365体育备用网址“高級語言程序設計”經典習題及答案(24)

365体育备用网址“高級語言程序設計”經典習題及答案(24)

 

  6.1 單項選擇題jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  1.函數調用語句“f((el,e2),(e3,e4,e5));”中參數的個數是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ①1 ②2jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③4 ④5jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  “解”上述函數調用中,(e1,e2)和(e3,e4,e5)是兩個帶括號的表達式,所以函數調用只提供兩個實參,其中第一個實參先計算el的值,然后計算e2,并以e2的值為實參。第二個實參順序計算e3,e4,e5,并以e5的值為實參。所以解答是②。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  2.C語言中,函數的隱含存儲類型是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ①auto ②staticjAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③extern ④無存儲類別jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  “解”由于C函數內不能再定義函數,C函數的存儲類型只能是靜態的或外部的之一。若定義函數時不指定存儲類型是靜態的,則它的存儲類型就是外部的(extern),即函數允許被程序的其它函數調用。所以解答是③。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  3.以下對C語言函數的有關描述中,正確的是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ①在C語言中,調用函數時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ②C函數既可以嵌套定義,又可以遞歸調用jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③函數必須有返回值,否則不能定義成函數jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ④C程序中,有調用關系的所有函數必須放在同一個源程序文件中jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  “解”C語言規定,調用函數時,只能把實參的值傳遞給函數的形參。函數調用時,形參從實參表達式得到初值,報參也是函數的一種局部變量,其值可以改變,但形參的值不能傳回給對應的實參。當函數設置非指針類型的形參時,實參可以是同類型的一般表達式;當函數設置指針類型的形參時,對應的實參也必須是同類型的指針表達式。所以敘述①是正確的。C語言雖可以遞歸調用,但同時規定,在函數內不能再定義函數,所以敘述②是錯誤的。通常C函數會有返回值,但也可以沒有返回值。有許多情況,函數的執行是完成某種預定的工作,并沒有返回值,所以敘述③是不正確的。在C程序中,如函數未指定是靜態的,則就是外部的,能讓別的文件中的函數調用。但函數要調用別的文件中的函數,在調用代碼之前,需對它作說明,所以敘述④也是不正確的。正確的解答只有①。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  4.設函數的功能是交換X和y的值,且通過正確調用返回交換結果。不能正確執行此功能的函數是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ① funa(int *x, int *y)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int * p;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  * p=*x; *x=*y; *y=*p;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ② funb(int x, int y)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int t;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  t=x;x=y;y=t;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③ func(int *x, int *y)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int p;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  p=*x; *x=*y; * y=p;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ④fund( int *x,int *y)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  {jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  *x=*x+ *y;*y=*x- *y;*x= *x- *y;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  “解”設計實現交換兩個變量值的函數。希望函數調用能改變調用環境中的變量,方法之一是讓函數設置指針類型的形參,實參傳送給形參的是希望交換值的兩個變量的指針。函數的兩個形參得到這兩個變量的指針后,函數就能通過形參間接引用要交換值的變量,或引用它們的值,或改變它們的值。從而實現從函數傳回信息存于調用環境的變量中。以上所述是設計交換變量值函數的一般原則,具體編寫函數時還需注意對上述原則的正確應用。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  對于函數funa,該函數的定義滿足設置指針形參,并通過指針形參間接引用環境變量的要求。但是在函數體中定義了指針變量p,并在p宋明確設定它所指向的變量下,代碼*p=* x企圖將值存入它所指的變量中,這是初學者經常出現的一種嚴重的錯誤。該函數因有錯,不能實現交換變量值的功能。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  對于函數funb,該函數不定義指針形參,函數體也沒有可用的指針間接引用調用環境中的變量,所以該函數也不能實現交換變量值的功能。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  對于函數func,該函數正確定義了指針形參,函數體也正確通過指針形參間接引用環境中的變量,并正確定義了自己的局部變量。該函數能實現交換變量值的功能。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  對于函數fund,該函數也正確定義指針形參和函數體通過形參間接引用環境變量。特別要指出的是,該函數是利用*x和*y的;日值與新值之間的關系實現問題要求的。其中第一個賦值使。x存有原來未交換之前的*x與*y之和;第二個賦值從這個和中減去原來的*y,并將差賦給*y,使*y的值是交換之前的*x的值;第三個賦值再次從和中減去新的*y,即減去交換之前的*x,這個差就是交換之前的*y,并將差賦給*x.經以上三個賦值,實現兩變量之間的值交換。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  所以不能正確執行交換變量值的函數是funa和funb,即正確選擇是①②。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  5.要求函數的功能是在一維數組a中查找x值。若找到,則返回所在的下標值;否則,返回0.設數據放在數組元素的a[1]到a[n]中。在以下給出的函數中,不能正確執行此功能的函數是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ① funa(int *a,int n, int x)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { *a=x;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  whlie(a[n]!=x) n——;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  return n;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ② funb(int *a, int n, int x)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int k ;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  for( k=l; k<=n; k++)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  if(a[k]==x) return k;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  return 0 ;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③ func(int a[], int n, int x)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int * k;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  a[O]=x; k=a+n;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  while(*k!=x)k——;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  return k-n;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ④ fund(int a[], int n, int x)jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { int k=0;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  do k++;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  while((kjAP365投注平台_365bet官网本科_365bet官网報名_首頁

  if((kjAP365投注平台_365bet官网本科_365bet官网報名_首頁

  else return 0;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

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

  6.以下程序的輸出結果是( )jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  # includejAP365投注平台_365bet官网本科_365bet官网報名_首頁

  subl(char a,char b) {char c;c=a;a=b;b=c;}jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  sub2(char *a,char b){ char c;c=*a;*a=b;b=c;}jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  sub3(char *a,char *b) { char c;c=*a;*a=*b;*b=c;}jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  main()jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  { char a, b;jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  a=‘A’; b=‘B’; sub3(&a,&b); putchar(a); putchar(b);jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  a=‘A’;b=‘B’ ;Sub2(&a,b);putchar(a); rutchar(b);jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  a=‘A’; b=‘B’; sub1(a,b); putchar(a);putchar(b);jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  }jAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ①BABBAB ②ABBBBAjAP365投注平台_365bet官网本科_365bet官网報名_首頁

  ③ BABABA ④ BAABBAjAP365投注平台_365bet官网本科_365bet官网報名_首頁

  “解”在上述程序中,函數subl完成兩形參值的交換,這個交換不影響實參變量,這是一個沒有意義的函數。函數sub2將第二個形參的值置入由第一個指針形參所指的變量中,指針形參所指的變量由調用時的實參提供。函數sub3完成將兩個形參所指的變量的值交換。程序調用sub3,使變量a和b的值交換輸出BA;調用subZ,使變量b的值傳送到a,輸出BB;調用subl,變量a和b的值不改變,輸出AB.所以程序輸出BABBAB.正確解答是①。jAP365投注平台_365bet官网本科_365bet官网報名_首頁

 jAP365投注平台_365bet官网本科_365bet官网報名_首頁

jAP365投注平台_365bet官网本科_365bet官网報名_首頁

 

365体育备用网址“高級語言程序設計”經典習題及答案(24)

    365投注平台——致力于打造365投注平台第一網,以努力服務于廣大365bet官网學子、提供最全的365bet官网資訊為己任,發布365bet官网最新的新聞資訊,提供365bet官网專科365bet官网本科365bet官网報名365bet官网成績查詢等綜合信息

 

365bet官网
相關文章
    無相關信息
湖南365体育备用网址
365bet官网政策
365体育备用网址30年大事
365bet官网專業
365bet官网問答
名家訪談
365bet官网故事
365bet官网院校
365bet官网大綱
365体育备用网址復習方法
365体育备用网址筆記串講
365体育备用网址應試技巧
365bet官网真題
365bet官网就業
湖南論文指導
365bet官网實踐
365bet官网學位
365体育备用网址成績查詢
365体育备用网址考籍查詢
365体育备用网址學歷查詢


咨詢QQ:137847917
13548661633(微信同號)