工具程序试题

来源:互联网 发布:单片机入门的编程语言 编辑:程序博客网 时间:2024/06/01 23:21

1. WIN32平台下,sizeof(short)= ____,sizeof(int) =____,sizeof(long)= ____。

 

2.请给出如下程序的结果

 

int a = 3;

 

int b = a << 3;

 

a = ____,b = ____。

 

3.请给出如下程序的结果

 

int aaa = 0x01;

 

htonl(aaa) = ____。

 

4.请给出如下程序的结果

 

#define MAX_NUM 100+200

 

int nTemp = MAX_NUM*10;

 

则Temp = ____。

 

5.请给出如下程序的结果

 

char szTemp[1000] = "";

 

int nLen1 = sizeof(szTemp);

 

int nLen2 = strlen(szTemp);

 

strcpy(szTemp, "abc");

 

int nLen3 = sizeof(szTemp);

 

int nLen4 = strlen(szTemp);

 

int nTemp[100];

 

int *pTemp = nTemp;

 

int nLen5 = sizeof(pTemp);

 

char szResult[200] = "";

 

sprintf(szResult,"%d,%d,%d,%d,%02d.", nLen1, nLen2, nLen3, nLen4, nLen5);

 

则szResult = ____。

 

6.MFC中,大部分类是从哪个类继承而来(CCmdTarget、CObject、CWinApp、CWnd)?____

 

7.内存是进程范围or线程范围;____

 

CPU调度时,针对进程or线程;____

 

函数调用堆栈,针对进程or线程。____

 

8.调用函数bbb后,输出是什么

 

void ccc(int x)

 

{

 

      char szTemp[10] = "";

 

      

 

      x = 2;

 

       sprintf(szTemp, "%d,", x);

 

       afxDump <<szTemp;

 

      

 

      if(x = 3)

 

      {

 

              int x = 4;

 

              sprintf(szTemp, "%d,",x);

 

             afxDump << szTemp;

 

      }

 

      

 

      sprintf(szTemp, "%d,", x);

 

      afxDump << szTemp;

 

}

 

 

 

void bbb()

 

{

 

      char szTemp[10] = "";

 

 

 

      int x = 7;

 

      

 

       ccc(x);

 

      

 

       sprintf(szTemp, "%d,", x);

 

       afxDump << szTemp;

 

}

 

 

 

改错题

1.下面代码有何错误

 

void func1()

 

{

 

      int *pa = NULL;

 

      func2(pa);

 

      delete pa;

 

}

 

void func2(int *pb)

 

{

 

      pb = new int(5);

 

}

 

2.下面代码有何错误

 

void func2(int *value)

 

{

 

      *value = 2;

 

}

 

void func1()

 

{

 

      int *p = 0;

 

      func2(p);

 

}

 

3.

 

int func1(int& b)

 

{

 

      return 0;

 

}

 

void func2()

 

{

 

      int bbb = 3;

 

      func1(&bbb);

 

      func1(bbb);

 

}

 

func2中有何错误,func1的参数b的类型是什么。

 

 

简答题

1.请简述C、C++、VC、MFC在概念上的区别

 

2.请写一个函数重载的简单例子

 

3.用什么函数开启新进程、线程。

 

4.SendMessage和PostMessage有什么区别

 

5.WaitForSingleObject有何作用;m_pThrd的类型是CWinThread*时,WaitForSingleObject(m_pThrd->m_hThread,INFINITE);有何作用。

 

6. __stdcall、__cdecl、__pascal在什么方面有所不同。

 

7.请把下述代码加上异常处理。

 

int MyWriteFile(CString strFileName,CString strText)

 

{

 

      int nRet = 0;

 

      

 

      CFile myFile;

 

      myFile.Open(strFileName,CFile::modeWrite|CFile::shareExclusive|CFile::modeCreate, NULL);

 

      

 

      int nLen = strText.GetLength();

 

      myFile.Write((char*)(LPCSTR)strText, nLen);

 

      

 

      myFile.Close();

 

 

 

      return nRet;

 

}

 

8.请解释“func”为何种类型,这种类型的作用什么,变量ttt 的值是多少?

 

typedef int (*func)(int, int*);

 

int xxx(int a, int *p)

 

{

 

      return a + *p;

 

}

 

int dowork(func aaa, int bbb, int *ccc)

 

{

 

      return aaa(bbb, ccc);

 

}

 

int sss = 4;

 

int ttt = dowork(&xxx, 3, &sss);

 

9.请问下述代码中: int operator+(…)起什么作用?this是什么?ccc 的值最终为多少?

 

class Fruit

 

{

 

public:

 

      Fruit()

 

      {

 

              weight = 2;

 

      }

 

      Fruit(int w)

 

      {

 

              weight = w;

 

      }

 

      int operator+(Fruit f)

 

      {

 

             return this->weight *f.weight;

 

      }

 

private:

 

      int weight;

 

};

 

      Fruit aaa;

 

      Fruit bbb(4);

 

      int ccc = aaa + bbb;

 

10.请解释下面代码采用了何种C++特性(C语言不具备),作用是什么?

 

template<typename T>

 

T sum(T a, T b)

 

{

 

      return (a + b);

 

}

 

 

 

11.请解释aaa.h中下面代码的功能

 

#if!defined(AFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_)

 

#defineAFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_

 

... ...

 

#endif

 

 

 

 

 

12.CMemoryState主要功能是什么

 

13.请阅读下述代码,写出程序执行的结果

 

#include <iostream>

 

using namespace std;

 

 

 

class CBase 

 

{

 

public:

 

 virtual void print()

 

  {

 

   cout<< "base" << endl;

 

  }

 

 void DoPrint()

 

  {

 

   print();

 

  }

 

};

 

 

 

class CChild1: public CBase

 

{

 

public:

 

 virtual void print()

 

  {

 

   cout<< "child1" << endl;

 

  }

 

};

 

 

 

class CChild2: public CBase

 

{

 

public:

 

 virtual void print()

 

  {

 

   cout<< "child2" << endl;

 

  }

 

};

 

 

 

void DoPrint(CBase *base)

 

{

 

 base->DoPrint();

 

}

 

 

 

void main()

 

{

 

 CBase* base = new CBase();

 

 CChild1* child1 = new CChild1();

 

 CChild2* child2 = new CChild2();

 

 DoPrint(child1);

 

 DoPrint(child2);

 

 DoPrint(base);

 

 

 

 delete base;

 

 base = child1;

 

 base->print();

 

 delete child1;

 

 delete child2;

0 0