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

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

9.1  單項(xiàng)選擇題
    1.在下列代碼中,正確的C代碼是(     )
       ①# define MYNAME="ABC"
       ②# include string.h
       ③ for(i=0;i<10; i++);
       ④ struct int stu { int name };
        【解】①是關(guān)于宏定義的,在宏的定義形式中,宏名與字符列之間至少有一個(gè)空白符,并在宏名希望代表的字符序列之間也不能有任何非空格類字符,若有也被當(dāng)作是字符序列的一部分。有了宏定義,以后程序中若要有宏名后的字符序列就可簡(jiǎn)寫成宏名。選擇①在宏名之后緊接字符=。②是關(guān)于包含命令的,在上述包含命令的格式中,被包含文件應(yīng)放在一對(duì)尖括號(hào)之間,或一對(duì)雙引號(hào)之間,不可在文件名字符列的首末沒有這種符號(hào)。③是for語句,for語句的循環(huán)體可以用空語句,從語言的句法規(guī)則來說,該語句是正確的。但通常循環(huán)是為了完成某種重復(fù)計(jì)算操作,單一地讓一個(gè)變量循環(huán)增1到某個(gè)值,程序員是不會(huì)編寫這種代碼的。④是想定義結(jié)構(gòu)類型,定義結(jié)構(gòu)時(shí),struct后接結(jié)構(gòu)類型名,不可在結(jié)構(gòu)名之前插入某些其它類型符。正確解答是③。

         2.在下列代碼中,正確的C代碼是(  )
      ①# define PI=3.14159
      ② include"stdio.h" 
      ③ for(i=0,i<10, i++) a++;     
      ④static struct { int i;} b ={2};
        【解】①定定義時(shí),宏名與被定義的字符列之間不可以插入等號(hào)等其它字符。選擇答案②是包含文件預(yù)處理,所有的預(yù)處理命令都應(yīng)由字符# 開始于新的一行。③在寫for語句時(shí),其中的三個(gè)表達(dá)式必須用字符";"分隔。④在定義結(jié)構(gòu)變量時(shí),結(jié)構(gòu)的類型名可以省缺,并可為結(jié)構(gòu)變量賦初值。為結(jié)構(gòu)變量賦初值,必須順序給出各成分的初值,并將初值寫在一對(duì)花括號(hào)中。這里給出的結(jié)構(gòu)變量定義的代碼是正確的。正確解答是④。

         3.在下列代碼中,錯(cuò)誤的C代碼是(  )
      ①# define PI 3.14159
      ②# include"stdio.h";
      ③ if(2);
      ④ for(;;) if(1) break;
        【解】①是正確的宏定義。②的文件包含預(yù)處理命令行不可以有多余的分號(hào)字符。③是if語句,雖沒有任何意義,但就句法來說是正確的。④是for語句,其成分語句是if語句,從for語句來說,是一個(gè)無窮循環(huán)的控制結(jié)構(gòu),但它的成分語句因條件成立,執(zhí)行break語句,立即退出循環(huán)。同樣雖也是一條沒有任何意義的語句,但從句法規(guī)則來說,也是正確的。正確解答是②。

        4.設(shè)有以下定義,則執(zhí)行語句"z=2*(N+Y(5+1));"后,z的值為(   )
      # define N 3
     # define Y(n)((N+l)*n) 
        ①出錯(cuò)          ②42              ③48            ④54
      【解】在新的宏定義中,可以使用前面已定義的宏名。另外,宏調(diào)用是這樣被替換展開的,分別用宏調(diào)用中的實(shí)在參數(shù)字符序列替換定定義字符序列中對(duì)應(yīng)所有出現(xiàn)的形式參數(shù)。而宏定義字符序列中的不是形式參數(shù)的其他字符則保留。這樣形成的字符序列,即為宏調(diào)用的展開替換結(jié)果。所以代碼"z=2*(N+Y(5+1));"被替換成:
        z=2*(3+((3+1)*5+1));
執(zhí)行該代碼,將使Z的值為48。解答為③。

         5.以下程序中的for循環(huán)執(zhí)行的次數(shù)是(  )
     # include 
     # define N 2
     # define M N+1
     # define NUM(M+l)* M/2
    main()
    { int i, n=0;
      for( i= l; i<=NUM;i++) { n++; printf("%d",n); }
       printf("\n");
   }
      ①5          ②6            ③8           ④9
    【解】代碼NUM被替換成(2+1+1)*2+1/2,所以其值是8。所以程序中的臉循環(huán)執(zhí)行的次數(shù)是8次。正確解答是③。
 
    9.2    填充題
 
    1.設(shè)有定義"# define F(N) 2*N",則表達(dá)式 F(2+)的值是_____。
      【解】F(N)被定義成2*N,表達(dá)式F(2+3)被替換成2*2+3,其值是7。

        2.設(shè)有下列程序:
      # include 
     main(int argc,int *argv[]) 
     { while( --argc> 0) printf("%s",argv[argc]);
     printf("\n");
     }
假定上述程序編譯連接成目標(biāo)程序名為p.exe,如果輸入如下的命令:
       P 123 AAA BBB ↓(其中的↓表示回車) 
則輸出結(jié)果是_____。
    【解】程序啟動(dòng)時(shí),參數(shù)argc的值是4,由于循環(huán)條件是一即組>0,是先減1后判大于0,循環(huán)共進(jìn)行三次,順序輸出argv[3],argv[2]和argv[1],即輸出BBBAAAl23。
 
    9.3    程序分析題
 
 1.閱讀下面程序,寫出程序運(yùn)行結(jié)果。
  # define PR(ar) printf("%d,", ar) 
  main()
  { int j,a[] ={1,3,5,7, 9,11,15}, * p= a+5;
  for(j=3; j; j--) 
  switch(j) { case 1:
  case 2: PR( * p++); break;
  case 3: PR(*(--p));
   }
   printf("\n");
   }
    【解】程序的宏定義PR以d格式輸出參數(shù)的值和遠(yuǎn)號(hào)字符。程序給數(shù)組a 賦初值,并由指針p指向元素a[5]。程序讓j從3減至1,共循環(huán)三次。當(dāng)j是3時(shí),讓p減1,并輸出p所指元素的值9;當(dāng) j是2和1時(shí),輸出p所指的數(shù)組元素的值,并讓p增1,順序輸出9和11。所以
程序輸出:
      9,9,11

        2.設(shè)下面的程序經(jīng)編譯連接后生成的目標(biāo)程序名為:  ABC.EXE,寫出輸入以下命令行后的輸出:
     ABC FILE1 FILE2 ↓(其中的↓表示回車) 
   # include 
   main( int argc, char *argv[])
   { int i;
  printf("%d \n",argc);
    for(i=O;i    printf("\n");
    }
    【解】程序首先輸出參數(shù)argv的值3,然后循環(huán)三次,順序輸出ABC、FILE1和FILE2,并回車:
     3
    ABC FILE1 FILE2

         3.讀程序,寫功能。
    # include 
    # include 
    main(int argc, char *argv[]) 
    { FILE *fl,*f2;
    char ch;
    if(argc< 3) 
   { printf("Parameters missing! \n");exit(0); }
    if(((f1 =fopen(argv[1],"r"))== NULL) ||
    ((f2=fopen(argv[2],"w"))== NULL))
    { printf("Can not open file! \n"); exit(0); }
    while(!feof(f1)) fputc(fgetc(f1),f2);
    fclose(f1);
    fclose(f2);
   }
        【解】程序在argc小于3時(shí),報(bào)告出錯(cuò)信息結(jié)束。當(dāng)argc大于2時(shí),以程序啟動(dòng)時(shí)的第一和第二參數(shù)為文件名打開文件,井用循環(huán)將第一參數(shù)的文件內(nèi)容復(fù)制到第二參數(shù)的文件。

更多軟考資料請(qǐng)?jiān)L問:考試吧軟件水平考試欄目

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