首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計算機(jī)等級考試 | 軟件水平考試 | 職稱計算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計從業(yè)資格考試會計證) | 經(jīng)濟(jì)師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復(fù)習(xí)資料 > 軟件設(shè)計師 > 正文

軟考軟件設(shè)計師課后練習(xí)題:第六章習(xí)題及解答

   6.1  單項選擇題
   1.函數(shù)調(diào)用語句“f((el,e2),(e3,e4,e5));”中參數(shù)的個數(shù)是(  )
    ①1            ②2              
    ③4             ④5
      【解】上述函數(shù)調(diào)用中,(e1,e2)和(e3,e4,e5)是兩個帶括號的表達(dá)式,所以函數(shù)調(diào)用只提供兩個實參,其中第一個實參先計算el的值,然后計算e2,并以e2的值為實參。第二個實參順序計算e3,e4,e5,并以e5的值為實參。所以解答是②。

    2.C語言中,函數(shù)的隱含存儲類型是(  )
    ①auto              ②static
    ③extern           ④無存儲類別
      【解】由于C函數(shù)內(nèi)不能再定義函數(shù),C函數(shù)的存儲類型只能是靜態(tài)的或外部的之一。若定義函數(shù)時不指定存儲類型是靜態(tài)的,則它的存儲類型就是外部的(extern),即函數(shù)允許被程序的其它函數(shù)調(diào)用。所以解答是③。

    3.以下對C語言函數(shù)的有關(guān)描述中,正確的是(  )
      ①在C語言中,調(diào)用函數(shù)時,只能把實參的值傳遞給形參,形參的值不能傳遞給實參
     ②C函數(shù)既可以嵌套定義,又可以遞歸調(diào)用
     ③函數(shù)必須有返回值,否則不能定義成函數(shù)
     ④C程序中,有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中
    【解】C語言規(guī)定,調(diào)用函數(shù)時,只能把實參的值傳遞給函數(shù)的形參。函數(shù)調(diào)用時,形參從實參表達(dá)式得到初值,報參也是函數(shù)的一種局部變量,其值可以改變,但形參的值不能傳回給對應(yīng)的實參。當(dāng)函數(shù)設(shè)置非指針類型的形參時,實參可以是同類型的一般表達(dá)式;當(dāng)函數(shù)設(shè)置指針類型的形參時,對應(yīng)的實參也必須是同類型的指針表達(dá)式。所以敘述①是正確的。C語言雖可以遞歸調(diào)用,但同時規(guī)定,在函數(shù)內(nèi)不能再定義函數(shù),所以敘述②是錯誤的。通常C函數(shù)會有返回值,但也可以沒有返回值。有許多情況,函數(shù)的執(zhí)行是完成某種預(yù)定的工作,并沒有返回值,所以敘述③是不正確的。在C程序中,如函數(shù)未指定是靜態(tài)的,則就是外部的,能讓別的文件中的函數(shù)調(diào)用。但函數(shù)要調(diào)用別的文件中的函數(shù),在調(diào)用代碼之前,需對它作說明,所以敘述④也是不正確的。正確的解答只有①。

    4.設(shè)函數(shù)的功能是交換X和y的值,且通過正確調(diào)用返回交換結(jié)果。不能正確執(zhí)行此功能的函數(shù)是(  )
          ① funa(int *x, int *y) 
             { int * p;
                * p=*x; *x=*y; *y=*p;
              }
         ② funb(int x, int y) 
             { int t;
               t=x;x=y;y=t;
             }
         ③ func(int *x, int *y)
           { int p;
               p=*x; *x=*y; * y=p;
             } 
         ④fund( int *x,int *y) 
             { 
             *x=*x+ *y;*y=*x- *y;*x= *x- *y;
             }
      【解】設(shè)計實現(xiàn)交換兩個變量值的函數(shù)。希望函數(shù)調(diào)用能改變調(diào)用環(huán)境中的變量,方法之一是讓函數(shù)設(shè)置指針類型的形參,實參傳送給形參的是希望交換值的兩個變量的指針。函數(shù)的兩個形參得到這兩個變量的指針后,函數(shù)就能通過形參間接引用要交換值的變量,或引用它們的值,或改變它們的值。從而實現(xiàn)從函數(shù)傳回信息存于調(diào)用環(huán)境的變量中。以上所述是設(shè)計交換變量值函數(shù)的一般原則,具體編寫函數(shù)時還需注意對上述原則的正確應(yīng)用。
      對于函數(shù)funa,該函數(shù)的定義滿足設(shè)置指針形參,并通過指針形參間接引用環(huán)境變量的要求。但是在函數(shù)體中定義了指針變量p,并在p宋明確設(shè)定它所指向的變量下,代碼*p=* x企圖將值存入它所指的變量中,這是初學(xué)者經(jīng)常出現(xiàn)的一種嚴(yán)重的錯誤。該函數(shù)因有錯,不能實現(xiàn)交換變量值的功能。
      對于函數(shù)funb,該函數(shù)不定義指針形參,函數(shù)體也沒有可用的指針間接引用調(diào)用環(huán)境中的變量,所以該函數(shù)也不能實現(xiàn)交換變量值的功能。
      對于函數(shù)func,該函數(shù)正確定義了指針形參,函數(shù)體也正確通過指針形參間接引用環(huán)境中的變量,并正確定義了自己的局部變量。該函數(shù)能實現(xiàn)交換變量值的功能。
      對于函數(shù)fund,該函數(shù)也正確定義指針形參和函數(shù)體通過形參間接引用環(huán)境變量。特別要指出的是,該函數(shù)是利用*x和*y的;日值與新值之間的關(guān)系實現(xiàn)問題要求的。其中第一個賦值使。x存有原來未交換之前的*x與*y之和;第二個賦值從這個和中減去原來的*y,并將差賦給*y,使*y的值是交換之前的*x的值;第三個賦值再次從和中減去新的*y,即減去交換之前的*x,這個差就是交換之前的*y,并將差賦給*x。經(jīng)以上三個賦值,實現(xiàn)兩變量之間的值交換。所以不能正確執(zhí)行交換變量值的函數(shù)是funa和funb,即正確選擇是①②。

    5.要求函數(shù)的功能是在一維數(shù)組a中查找x值。若找到,則返回所在的下標(biāo)值;否則,返回0。設(shè)數(shù)據(jù)放在數(shù)組元素的a[1]到a[n]中。在以下給出的函數(shù)中,不能正確執(zhí)行此功能的函數(shù)是(  )
          ① funa(int *a,int n, int x)
               { *a=x;
                whlie(a[n]!=x) 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!=x)k--;
              return k-n;
             }
         ④ fund(int a[], int n, int x) 
             { int k=0;
             do  k++;
             while((k             if((k              else return 0;
             }
      【解】在數(shù)組中找指定值是經(jīng)常遇到的計算要求,有多種編程方法。在這里,數(shù)據(jù)預(yù)放在數(shù)組下標(biāo)1至n的元素中,下標(biāo)為0的元素沒有放數(shù)據(jù),程序可以利用這個位置簡化查找函數(shù)。函數(shù)funa先將要查找的情放入a[0],從數(shù)據(jù)表的最后一個元素開始逆序向前查找。這樣做的好處是循環(huán)條件不必?fù)?dān)心因數(shù)組中原先沒有值為x的元素而一直順序查找下去,訪問不是數(shù)表的元素,需插入條件n>O。在a[0] 處放入x后,這個條件就不必要了,循環(huán)至少在訪問了a[0] 后終止,并返回0值。所以該函數(shù)能完成指定的功能。函數(shù)funb采用常規(guī)的辦法編寫,循環(huán)在a[1] 與a[n]之間順序?qū)ふ,一旦找到立即返回找到處的下?biāo),直至查找循環(huán)結(jié)束,查不到指定的值而返回0值。函數(shù)func采用與函數(shù)funa相同的方法,不過是另外引入一個指針變量。但是該函數(shù)return語句后的表達(dá)式有嚴(yán)重的錯誤,應(yīng)返回k-a,兩指針的差,其值等于找到元素的下標(biāo)。表達(dá)式k-n是指針k向前移n個位置的指針值。函數(shù)fund預(yù)置k為0,循環(huán)讓 k增 1,并在 k在界內(nèi)和 a[k] 不等于 x的情況下循環(huán)。循環(huán)結(jié)束有兩種情況,或 k已不在界內(nèi),或k在界內(nèi),并且a[k]等于x。若是后者,函數(shù)返回k,而若前者,函數(shù)返回比該函數(shù)也能正確完成查找工作。這樣,不能正確完成查找工作的函數(shù)是函數(shù)fonc。所以正確選擇是③。

更多軟考資料請訪問:考試吧軟件水平考試欄目

1 2 3 4 5 下一頁
文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。