• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            life02

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks
            一.  單選題(每題4分,15題,共60分)

              1.考慮函數原型void hello(int a,int b=7,char* pszC="*"),下面的函數調用鐘,屬于不合法調用的是:

              A hello(5)     B.hello(5,8)     C.hello(6,"#")     D.hello(0,0,"#")

              2.下面有關重載函數的說法中正確的是:

              A.重載函數必須具有不同的返回值類型   B.重載函數形參個數必須不同

              C.重載函數必須有不同的形參列表       D.重載函數名可以不同

              3.分析一下程序的運行結果:

              #include<iostream.h>

              class CBase

              {

              public:

              CBase(){cout<<”constructing CBase class”<<endl;}

              ~CBase(){cout<<”destructing CBase class”<<endl;}

              };

              class CSub : public CBase

              {

              public:

              CSub(){cout<<”constructing CSub class”<<endl;}

              ~CSub(){cout<<”destructing CSub class”<<endl;}

              };

              void main()

              {

              CSub obj;

              }

              A. constructing CSub class           B. constructing CBase class

              constructing CBase class             constructing CSub class

              destructing CSub class               destructing CBase class

              destructing CBase class              destructing CSub class

              C. constructing CBase class

              constructing CSub class

              destructing CSub class

              destructing CBase class

              D. constructing CSub class

              constructing CBase class

              destructing CBase class

              destructing CSub class

              4.在一個cpp文件里面,定義了一個static類型的全局變量,下面一個正確的描述是:

              A.只能在該cpp所在的編譯模塊中使用該變量

              B.該變量的值是不可改變的

              C.該變量不能在類的成員函數中引用

              D.這種變量只能是基本類型(如int,char)不能是C++類型

              5.觀察下面一段代碼:

              class ClassA

              {

              public:

              virtual ~ ClassA(){};

              virtual void FunctionA(){};

              };

              class ClassB

              {

              public:

              virtual void FunctionB(){};

              };

              class ClassC : public ClassA,public ClassB

              {

              public:

              };

              ClassC aObject;

              ClassA* pA=&aObject;

              ClassB* pB=&aObject;

              ClassC* pC=&aObject;

              關于pA,pB,pC的取值,下面的描述中正確的是:

              A.pA,pB,pC的取值相同.               B.pC=pA+pB

              C.pA和pB不相同                      D.pC不等于pA也不等于pB

              6.參照1.5的代碼,假設定義了ClassA* pA2,下面正確的代碼是:

              A.pA2=static_cast<ClassA*>(pB);

              B.void* pVoid=static_cast<void*>(pB);

              pA2=static_cast<ClassA*>(pVoid);

              C.pA2=pB;

              D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));

              7.參照1.5的代碼,下面那一個語句是不安全的:

              A.delete pA   B.delete pB   C.delete pC

              8.下列程序的運行結果為:

              #include<iostream.h>

              void main()

              {

              int a=2;

              int b=++a;

              cout<<a/6<<endl;

              }

              A.0.5   B.0   C0.7   D.0.6666666-

              9.有如下一段代碼:

              #define ADD(x,y) x+y

              int m=3;

              m+=m*ADD(m,m);

              則m的值為:

              A.15   B.12   C.18   D.58

              10.如下是一個帶權的圖,圖中結點A到結點D的關鍵路徑的長度是:

              A.13       B.15       C.28       D.58

              11.下面的模板聲明中,正確的是:

              A.template<typename T1,T2>

              B.template<class T1,T2>

              C.template<class T1,class T2>

              D.template<typename T1;typename T2>

              12.在Windows編程中下面的說法正確的是:

              A.兩個窗口,他們的窗口句柄可以是相同的     B.兩個窗口,他們的處理函數可以是相同的

              C.兩個窗口,他們的窗口句柄和窗口處理函數都不可以相同.

              13.下面哪種情況下,B不能隱式轉換為A?

              A.class B:public A{}                 B.class A:public B{}
            C.class B{operator A();}             D.class A{A(const B&);}

              14.某公司使用包過濾防火墻控制進出公司局域網的數據,在不考慮使用代理服務器的情況下,下面描述錯誤的是”該防火墻能夠(   )”.

              A.使公司員工只能訪問Internet上與其業務聯系的公司的IP地址.

              B.僅允許HTTP協議通過,不允許其他協議通過,例如TCP/UDP.

              C.使員工不能直接訪問FTP服務器端口號為21的FTP地址.

              D.僅允許公司中具有某些特定IP地址的計算機可以訪問外部網絡

              15.數字字符0的ASCII值為48,若有以下程序:

              main()

              {

              char a=’1’,b=’2’;

              printf(“%c,”,b++);

              printf(“%d\n”,b-a);

              }

              程序運行之后的輸出結果是:

              A.3,2      B.50,2       C.2,2     D.2,50

              二.  填空題(共40分)

              本程序從正文文件text.in讀入一篇英文短文,統計該短文中不同單詞和它的出現次數,并按詞典編輯順序將單詞及它的出現次數輸出到正文文件word.out中.

              程序用一棵有序二叉樹存儲這些單詞及其出現的次數,一邊讀入一邊建立.然后中序遍歷該二叉樹,將遍歷經過的二叉樹上的節點的內容輸出.
            程序中的外部函數

              int getword(FILE* pFile,char* pszWordBuffer,int nBufferLen);

              從與pFile所對應的文件中讀取單詞置入pszWordBuffer,并返回1;若單詞遇文件尾,已無單詞可讀時,則返回0.

              #include <stdio.h>

              #include <malloc.h>

              #include <ctype.h>

              #include <string.h>

              #define SOURCE_FILE "text.in"

              #define OUTPUT_FILE "word.out"

              #define MAX_WORD_LEN 128

              typedef struct treenode

              {

              char szWord[MAX_WORD_LEN];

              int nCount;

              struct treenode* pLeft;

              struct treenode* pRight;

              }BNODE;

              int getword(FILE* pFile,char* pasWordBuffer,int nBufferLen);

              void binary_tree(BNODE** ppNode,char* pszWord)

              {

              if(ppNode != NULL && pszWord != NULL)

              {

              BNODE* pCurrentNode = NULL;

              BNODE* pMemoNode = NULL;

              int nStrCmpRes=0;

              ____(1)_____;pCurrentNode=*ppNode

              while(pCurrentNode)

              {

              /*尋找插入位置*/

              nStrCmpRes = strcmp(pszWord, ___(2)___ );pCurrentNode->nCount

              if(!nStrCmpRes)

              {

              ___(3)___; pCurrentNode->nCount++

              return;

              }

              else

              {

              ___(4)___; pMemoNode=pCurrentNode

              pCurrentNode = nStrCmpRes>0? pCurrentNode->pRight : pCurrentNode->pLeft;

              }

              }

              }

              pCurrent=new BNODE;

              if(pCurrentNode != NULL)

              {

              memset(pCurrentNode,0,sizeof(BNODE));

              strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);

              pCurrentNode->nCount=1;

              }

              if(pMemoNode==NULL)

              {

              ___(5)___; *ppNode= pCurrentNode

              }

              else if(nStrCmpRes>0)

              {

              pMemoNode->pRight=pCurrentNode;

              }

              else

              {

              pMemoNode->pLeft=pCurrentNode;

              }

              }

              void midorder(FILE* pFile,BNODE* pNode)

              {

              if(___(6)___) return;!pNode||!pFile

              midorder(pFile,pNode->pLeft);

              fprintf(pFile,"%s %d\n",pNode->szWord,pNode->nCount);

              midorder(pFile,pNode->pRight);

              }

              void main()

              {

              FILE* pFile=NULL;

              BNODE* pRootNode=NULL;

              char szWord[MAX_WORD_LEN]={0};

              pFile=fopen(SOURCE_FILE,"r");

              if(pFile==NULL)

              {

              printf("Can't open file %s\n",SOURCE_FILE);

              return;

              }

              while(getword(pFile,szWord,MAX_WORD_LEN)==1)

              {

              binary_tree(___(7)___);// pRootNode,szWord

              }

              fclose(pFile);

              pFile=fopen(OUTPUT_FILE,"w");

              midorder(pFile,pRootNode);

              fclose(pFile);

              }

              三.  附加題(每題30分,2題,共60分)

              1.      從程序健壯性進行分析,下面的FillUserInfo函數和Main函數分別存在什么問題?

              #include <iostream>

              #include <string>

              #define MAX_NAME_LEN 20

              struct USERINFO

              {

              int nAge;

              char szName[MAX_NAME_LEN];

              };

              void FillUserInfo(USERINFO* parUserInfo)

              {

              stu::cout<<"請輸入用戶的個數:";

              int nCount=0;

              std::cin>>nCount;

              for(int i=0;i<nCount;i++)

              {

              std::cout<<"請輸入年齡:";

              std::cin>>parUserInfo[i]->nAge;

              std::string strName;
            std::cout<<"請輸入姓名:";

              std::cin>>strName;

              strcpy(parUserInfo[i].szName,strName.c_str());

              }

              }

              int main(int argc,char* argv[])

              {

              USERINFO arUserInfos[100]={0};

              FillUserInfo(arUserInfos);

              printf("The first name is:");

              printf(arUserInfos[0].szName);

              printf("\n");

              return 0;

              }

              2.      假設你在編寫一個使用多線程技術的程序,當程序中止運行時,需要怎樣一個機制來安全有效的中止所有的線程?請描述其具體流程.


            posted on 2009-09-23 20:50 life02 閱讀(546) 評論(0)  編輯 收藏 引用 所屬分類: 筆試
            97久久久精品综合88久久| 人妻精品久久久久中文字幕69 | 久久精品国产男包| 久久久中文字幕| 色综合久久最新中文字幕| 久久精品无码一区二区三区免费 | 99久久精品免费看国产| 国产午夜福利精品久久| 色综合久久中文综合网| 狠狠精品久久久无码中文字幕 | 一级做a爱片久久毛片| 久久久久久毛片免费看| 久久久www免费人成精品| 老色鬼久久亚洲AV综合| 国产精品久久久久久久久鸭| 无码任你躁久久久久久| 久久91精品国产91久久小草| 波多野结衣久久一区二区| aaa级精品久久久国产片| 一本久道久久综合狠狠躁AV| 久久99热狠狠色精品一区| 奇米影视7777久久精品人人爽| 国产精品欧美久久久天天影视| 三级韩国一区久久二区综合 | 久久99久久99精品免视看动漫 | 久久久91人妻无码精品蜜桃HD| 欧美精品久久久久久久自慰| 国产一久久香蕉国产线看观看| 亚洲国产成人久久综合一区77| 久久超碰97人人做人人爱| 一级女性全黄久久生活片免费 | 97久久国产亚洲精品超碰热| 99久久精品免费看国产一区二区三区| 精品国产青草久久久久福利| 国产精品美女久久久久久2018| 囯产精品久久久久久久久蜜桃 | 亚洲精品乱码久久久久久按摩 | 亚洲精品视频久久久| 久久成人永久免费播放| 91精品婷婷国产综合久久| 91精品国产乱码久久久久久|