首頁 考試吧論壇 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ì)工作者 | 外銷員 | 國際商務(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ī)劃師 | 國際內(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è)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

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

      8.設(shè)有定義“char a[10]={"abcd"},*p=a;",則*(p+4)的值是(  )
    ①"abCd"              ②’d’
    ③’\0’              ④不能確定
 【  解】若有char a[10]="abcd",*p=a,則指針變量p指向a[0]。在表達(dá)式*(p+4)中,p+4指向a[4],*(p+4)就是a[4]。由于用字符"abcd" 給字符數(shù)組a賦初值,a[4]的值是字符串結(jié)束標(biāo)記符’\0’。所以解答是③。

       9.設(shè)有代碼"int(*ptr)[10];”,其中的ptr是(  )
    ①10個(gè)指向整型變量的指針
    ②指向10個(gè)整型變量的函數(shù)指針
    ③一個(gè)指向具有10個(gè)元素的一維數(shù)組的指針
    ④具有10個(gè)指針元素的一維數(shù)組
     【解】代碼“int(*ptr)[10];”的分析過程是,因圓括號(hào),括號(hào)內(nèi)的ptr先與字符*結(jié)合,字符*修飾標(biāo)識(shí)符ptr是一種指針;接著與后面的一對(duì)方括號(hào)結(jié)合,表示是這樣的一種指針,是指向一維數(shù)組的;再有方括號(hào)中的10,說明這種數(shù)組有10個(gè)元素。至此,ptr是指向含10個(gè)元素的
一維數(shù)組的指針。最后,是最前面的int,表示數(shù)組元素是int類型的。所以,ptr是一個(gè)指向具有10個(gè)int型元素的一維數(shù)組的指針。所以解答是③。另外,要是①,10個(gè)指向整型變量的指針,就是一個(gè)指針數(shù)組,上述代碼應(yīng)寫成“int *ptr[10];”,即ptr是一個(gè)有10個(gè)指向整型變量的數(shù)組。要是②,返回值是指向10個(gè)整型變量的函數(shù)的指針,上述代碼應(yīng)寫成“int(*(*ptr)())[10];”,即ptr是指針,指向一種函數(shù),函數(shù)的返回值又是一種指針,指向10個(gè)元素的數(shù)組,數(shù)組的元素是整型的。下面的代碼是這樣的函數(shù)指針和函數(shù)的例子:
        # include 
    int a[][10]={{1,2,3,4,5,6,7,8,9,0} ,{0,1,2,3,4,5,6,7,8,9} };
     int(*(*ptr)(int))[10];
     int(*f( int n))[10] 
     {return a+n;
      } 
    void main()
    { int(*p)[10],*q;
      ptr=f;/*讓ptr指向函數(shù)f*/
      P=(*ptr)(0); 
   q=*p;
      printf("%d\n", *p);
     P=(*ptr)(l);
     q=*p;
     printf("%d\n", *q);
     }
    在上述代碼中,函數(shù)有一個(gè)int型的形參。要是④,其意義與①相同,上述代碼應(yīng)寫成“int* ptr[10];”,即 ptr是一個(gè)有10個(gè)元素的數(shù)組,數(shù)組元素是指向整型變量的指針。

        10.若有以下定義,則數(shù)值為4的表達(dá)式是(  )
     int w[3][4]={{0,1},{2,4},{5,8}},(* p)[4]= W;
                   ①*w[1]+l          ②p++,*(p+1)           ③w[2][2]                ④p[1][1]
      【解】二維數(shù)組定義有多種賦初值的辦法,問題給出的代碼是按行給數(shù)組的部分元素賦初值。它們分別是w[0][0]=0.w[0][1]=1、w[1][1]=2.w[1][1]=4,w[2][0]=5,w[2][1]=8。根據(jù)約定,未指定初值的元素自動(dòng)置全0值。指針變量p是一個(gè)指向具有四個(gè)int型元素的一維數(shù)組的指針,定義時(shí)的初值使它指向數(shù)組W的第一行。①的代碼,*w[1]+1中的W[l]是指向 w[l][0]的指針,*w[1] 就是w[1][0],其值是2,*w[1]+l的值是3。②的代碼是逗號(hào)表達(dá)式,“p++,*(p+1)”先使p指向數(shù)組w的第二行,*(p+l)中的p+l是指向數(shù)組w的第三行,*(p+1)是指針值,指向數(shù)組w的第三行的第一個(gè)元素,即&w[2][0]. ③的代碼w[2][2]引用數(shù)組W第三行的第三列元素,其值是0。④的代碼p[1][l]引用數(shù)組W第二行的第二列元素w[1][1],其值是 4。所以解答是@。

         11.若有下面的程序片段,則對(duì)數(shù)組元素的錯(cuò)誤弓D用是(  )
        int a[12]={0},*p[3],* *pp,i;
        for( i=0;i<3;i++) p[i]=&a[i+4];
        pp= P;
    ①pp[0][1]            ②a[10]
    ③ p[3][l]           ④*(*(p+2)+2) 
        【解】上述代碼定義變量a是有12個(gè)整型元素的數(shù)組,它的初值全是0。p是有三個(gè)元素的指針數(shù)組,每個(gè)指針能指向整型變量。哪是指針的指針,它能指向一個(gè)指向整型變量的指針, i是一個(gè)整型變量。執(zhí)行代碼for(i=0;i<3;i++) P[i]=&a[i+4] 使指針數(shù)組 p的元素 p[0]指向 a[4] ,p[l]指向a[5] ,p[2]指向 a[6]。代碼pp=p使指針變量pp指向p[0]。①代碼pp[0][l] 用指針表達(dá)可等價(jià)地寫成*(*pp+l)。其中*pp就是 p[0],p[0]的值是&a[4],*pp+1的值是&a[4]+1=&a[5],*(*pp+1)就是a[5]。②代碼a[l0] 當(dāng)然是引用數(shù)組a的元素。③代碼p[3][1]數(shù)組p只有三個(gè)元素,沒有p[3],所以是錯(cuò)誤的。④代碼*(*(p+2)+2)中的(p+2)是 &p[2],*(p+2)是 p[2],其值是&a[6],*(p+2)+2的值是&a[8],*(*(p+2)+2)引用的是a[8]。所以解答是@。

        12.若有如下定義和語句,則輸出結(jié)果是(  )
        int * *pp, *p,a=10,b=20;
       PP=&p; P=&a; P=&b; printf("%d%d\n",*p,* *PP);
    ①10, 20                 ② 10, 10                
    ③ 20, 10                 ④ 20, 20
      【解】上述代碼定義變量pp是指針的指針,它能指向一個(gè)指向整型變量的指針。定義變量p是指針,它能指向一個(gè)整型變量。a是一個(gè)整型變量,它有初值10。b也是一個(gè)整型變量,它有初值20。代碼 pp=&p 使pp指向p,p=&a使p指向a,p=&b又使p指向b,不再指向a。所以。p是引用b,其值為20。* *pp是通過pp間接引用p,再通過p間接引用b,所以也是20。所以解答是④。

    13.若有以下定義和語句,則對(duì)w數(shù)組元素的非法引用是(  )
    int w[2][3],(* pw)[3]; pw= w;
    ① *(w[0]+2)              ②*pw[2]          
    ③pw[0][0]             ④*(pw[l]+2) 
        【解】上述代碼定義2行3列的二維數(shù)組w,定義能指向有3個(gè)整型元素一維數(shù)組的指針pw,并讓pw指向數(shù)組w的第一行。①代碼*(w[0]+2)中的w[0]是&w[0][0],w[0]+2是&w[0][2],所以*(w[0]+2)就是w[0][2]。②代碼*pw[2]中的pw[2]是&w[2][0],該數(shù)組w只有2行,沒有w[2][0],所以代碼*pw[2]是對(duì)數(shù)組W元素的非法引用。③代碼pw[0][0]就是w[0][0]。④代碼*(pw[l]+2)中的pw[1]就是*(pw+l),即&w[l][0],pw[l]+2就是&w[l][2],所以*(pw[1]+2)就是w[1][2]。所以解答是②。 
  
    5.2    填充題 
  
    1.“* ”稱為___________運(yùn)算符,“&”稱為_________運(yùn)算符。
      【解】單目運(yùn)算符“*”稱為取內(nèi)容運(yùn)算符,單目運(yùn)算符“&”稱為取地址運(yùn)算符。

         2.若兩個(gè)指針變量指向同一個(gè)數(shù)組的不同元素,可以進(jìn)行減法運(yùn)算和___________運(yùn)算。
      【解】若兩個(gè)指針變量指向同一個(gè)數(shù)組的不同元素,可以進(jìn)行減法運(yùn)算求它們所指元素相差多少元素。進(jìn)行關(guān)系運(yùn)算,判定它們所指元素的前后,或是否指向同一個(gè)元素等。

           3.設(shè) int a[10] ,*p=a;則對(duì)a[3]的引用可以是p[______________] 和*(p_________)。
     【解】若指針p指向數(shù)組a的首元素,則引用a[3]用指針p可以寫成p[3]和*(p+3)。

           4.若d是已定義的雙精度變量,再定義一個(gè)指向d的指針變量p的代碼是___________。
     【解】若d是一個(gè)雙精度變量,定義能指向它的指針變量p可以用以下代碼double *p=&d。

            5.&后跟變量名,表示該變量的_________;*后跟指針變量名,表示該指針變量_______。&后跟的是指針變量名,表示該指針變量的_____________。
      【解】單目運(yùn)算符&是取地址運(yùn)算符,&后跟變量名,就表示該變量的地址。單目運(yùn)算符*是取內(nèi)容運(yùn)算符,*后跟指針變量名,表示該指針變量所指變量的內(nèi)容。若&后跟的是指針變量名,就表示該指針變量的地址。若知道指針變量的地址,欲通過指針變量的地址引用指針變量所指變量的內(nèi)容,需要連續(xù)兩次取內(nèi)容運(yùn)算。

          6.設(shè)有char *a="ABCD",則printf("%s",a)的輸出是_______;而printf("%c",*a)的輸出是______。
    【解】若給字符指針變量a賦一個(gè)字符串常量"ABCD",實(shí)際上是給a賦指向字符串常量首字符’A’的指針。程序通過它訪問字符串中的各字符。如用代碼printf("%s",a) 輸出這個(gè)字符串常量"ABCD"的字符列ABCD,用代碼printf("%c",*a)輸出a所指的字符 A。

           7.設(shè)有以下定義和語句,則*(*(p+2)+l)的值為__________。
      int a[3][2]={10,20,30,40,50,60},(*p)[2];
      p= a;
    【解】上述代碼定義3行2列的二維數(shù)組a ,定義指向兩個(gè)元素的一維數(shù)組指針p,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+l)中的p+2指向二維數(shù)組a的第2行a[2],*(p+2)指向a[2][o],*(p+2)+l指向a[2][l],*(*(p+2)+l)是引用a[2][l],其值是60。

        8.以下程序的功能是從鍵盤上輸入若干個(gè)字符(以回車符作為結(jié)束)組成一個(gè)字符串存入一個(gè)字符數(shù)組,然后輸出該字符數(shù)組中的字符串。請(qǐng)?zhí)羁铡?
       # include 
       # include 
       main()
      { char str[81],*sptr;
        int i;
        for(i=0;i<80;i++)
      { str[i]=getchar();if(str[i]==’\n’) break;}
        str[i]=____________;
        sptr=str;
        while(* sptr) putchar(* sptr______________);
      }
        【解】從鍵盤輸入字符行,通過循環(huán)逐一輸入字符,當(dāng)發(fā)現(xiàn)輸入字符是換行符時(shí),結(jié)束循環(huán)。為了使輸入的字符列變成字符串,必須在輸入字符列之后,原存儲(chǔ)換行符的元素改為存儲(chǔ)字符串的結(jié)束標(biāo)記符,需用代碼 str[i]=’\0’ ,所以在第一框填入代碼’\0’。當(dāng)要將存于字符數(shù)組str中的字符串通過循環(huán)逐一輸出字符串的字符時(shí),可以用字符指針sptr,讓sptr遍歷整個(gè)字符串,每次循環(huán)時(shí),輸出sptr所指字符,并讓sptr增1,即可用代碼*sptr++實(shí)現(xiàn),所以在第二框填入代碼++。 
  
    5.3  程序分析題 
  
1.閱讀下列程序,寫出程序的輸出結(jié)果。
    main() 
    {char *a[6]={"AB","CD","EF","GH",U","KL"};
     int i;
     for(i=0;i<4;i++) printf("%s", a[i]);
     printf("\n");
   }
      【解】程序定義了有六個(gè)元素的字符指針數(shù)組a ,數(shù)組a 的各元素指向字符率常量。程序的for循環(huán)遍歷了a的前四個(gè)元素,用字符率輸出格式,輸出指針數(shù)組a前四個(gè)元素所指的字符串。所以程序輸出: ABCDEFGH。

        2.閱讀下列程序,寫出程序的主要功能。
    main()
    { int i,a[l0],*p=&a[9] ;
     for(i=0;i<10;i++) scanf("%d",&d[i]);
     for(; p>=a; p--) printf("%d\n",*p) ;
    }
        【解】程序定義了有10個(gè)元素的整型數(shù)組a,另定義指針變量p,并讓它指向a的最后一個(gè)元素a[9]。執(zhí)行代碼的第一個(gè)循環(huán)是順序輸人數(shù)組a的10個(gè)元素。第二個(gè)循環(huán)利用指針p逆序遍歷數(shù)組a,將數(shù)組a的各元素逆序輸出。所以程序的功能是輸入10個(gè)整數(shù),并逆序輸出這10個(gè)整數(shù)。

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

上一頁  1 2 3 4 5 下一頁
文章搜索
軟件水平考試欄目導(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)注明出處。