2017上半年軟件設(shè)計(jì)師考試下午真題(四)

軟件設(shè)計(jì)師 責(zé)任編輯:長(zhǎng)頸鹿 2017-05-26

添加老師微信

備考咨詢(xún)

加我微信

摘要:希賽網(wǎng)整理了2017上半年軟件設(shè)計(jì)師考試下午真題,以下是第四部分。

      >>>>點(diǎn)擊進(jìn)入了解軟件設(shè)計(jì)師培訓(xùn)視頻

    >>>>點(diǎn)擊進(jìn)入了解軟件設(shè)計(jì)師面授班


    希賽網(wǎng)整理了2017上半年軟件設(shè)計(jì)師考試下午真題,以下是第四部分。

      試題四

      閱讀下列說(shuō)明和C代碼,回答問(wèn)題1至問(wèn)題3,將解答寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

      【說(shuō)明】

      假幣問(wèn)題:有n枚硬幣,其中有一枚是假幣,己知假幣的重量較輕?,F(xiàn)只有一個(gè)天平,要求用盡量少的比較次數(shù)找出這枚假幣。

      【分析問(wèn)題】

      將n枚硬幣分成相等的兩部分:

      (1)當(dāng)n為偶數(shù)時(shí),將前后兩部分,即1...n/2和n/2+1...0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣:

      (2)當(dāng)n為奇數(shù)時(shí),將前后兩部分,即1..(n-1)/2和(n+1)/2+1...0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣:若兩端重量相等,則中間的硬幣,即第(n+1)/2枚硬幣是假幣。

      【C代碼】

      下面是算法的C語(yǔ)言實(shí)現(xiàn),其中:

      coins[]:硬幣數(shù)組

      first,last:當(dāng)前考慮的硬幣數(shù)組中的第一個(gè)和最后一個(gè)下標(biāo)

#include <stdio.h>


int getCounterfeitCoin(int coins[], int first,iot last)

{

      int firstSum = 0,lastSum = 0;

      int ì;

      If(first==last-1){        /*只剩兩枚硬幣*/

           if(coins[first] < coins[last])

                 return first;

           return last;

       }



if((last - first + 1) % 2 =0){   /*偶數(shù)枚硬幣*/

       for(i = first;i <(   1   );i++){

             firstSum+= coins[i];

        }

        for(i=first + (last-first) / 2 + 1;i < last +1;i++){

            lastSum += coins[i];

        }

        if(    2    ){

            Return getCounterfeitCoin(coins,first,first+(last-first)/2;)

        }else{

            Return getCounterfeitCoin(coins,first+(last-first)/2+1,last;)

        }

}

else{       /*奇數(shù)枚硬幣*/

        For(i=first;i<first+(last-first)/2;i++){

               firstSum+=coins[i];

        }

        For(i=first+(last-first)/2+1;i<last+1;i++){

               lastSum+=coins[i];

        }

        If(firstSum<lastSum){

               return getCounterfeitCoin(coins,first,first+(last-first)/2-1);

        }else if(firstSum>lastSum){

               return getCounterfeitCoin(coins,first+(last-first)/2-1,last);

        }else{

            Return(   3    )

        }

     }

}

      【問(wèn)題一】

      根據(jù)題干說(shuō)明,填充C代碼中的空(1)-(3)

      【問(wèn)題二】

      根據(jù)題干說(shuō)明和C代碼,算法采用了()設(shè)計(jì)策略。函數(shù)getCounterfeitCoin的時(shí)間復(fù)雜度為()(用O表示)。

      【問(wèn)題三】

      若輸入的硬幣數(shù)為30,則最少的比較次數(shù)為(),最多的比較次數(shù)為()。


    >>>返回目錄:2017上半年軟件設(shè)計(jì)師考試下午真題匯總

    >>>點(diǎn)擊查看:2017上半年軟件設(shè)計(jì)師考試下午真題答案和解析

    >>>進(jìn)入估分:2017上半年軟考分?jǐn)?shù)早知道,在線估分+真題解析

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢(xún)?cè)诰€老師!