摘要:题目:已知一个正整数N,求比N小(包括N)的所有正整数中包含的1的个数。例如N = 12,则包含5个1,分别为1、10、11、12解答:最直观最简单的想法是,从1到N对每一个数检查,得出每个数中包含的一的个数,事件复杂度大概是O(N)1时间复杂度比较高,不是最优算法。一个比1快的算法是:对N的每一位进行检查,得出比N小的正数某一位包含的1的个数总和。比如1234,千位包含234 + 1个1(1000 ~ 1234),百位包含 2 * 100个1(1100 ~ 1199, 100 ~ 199),十位包含13 * 10个1(1210 ~ 1219,1110 ~ 1119,。。。。。。,10 ~ 1
阅读全文
摘要:一:宏定义面试例题1:如何用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量 ?如:?stuct student { int a; char b[20]; double ccc; }则:FIND(student,a); //等于0FIND(student,b); //等于4Answer: #define FIND(struc, e) (size_t)&(((struc*)0)->e)(struc*)0 //表示将常量0强制转化为struc *型指针所指向的地址&(((struc*)0)->e) /*表示取结构体指针(struc*)0
阅读全文
摘要:C++中有了malloc/free,为什么还需要new/delete?malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够构把造函数和析构函数的任务强加于malloc/free。因此c++语言需要一个能完成内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。n
阅读全文
摘要:面试题里面有这么一个问题: 已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数 strcpy (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?第一问可以这么写:char* str(char* strDest,char* strSrc){ char* strDestCopy=strDest; while((*strDest++=*strSrc...
阅读全文
摘要:三.简答题(64分)1.请简述C、C++、VC、MFC在概念上的区别(4分)2.请写一个函数重载的简单例子(4分)3.用什么函数开启新进程、线程。(4分)4.SendMessage和PostMessage有什么区别(4分)5.WaitForSingleObject有何作用;m_pThrd的类型是CWinThread*时,WaitForSingleObject(m_pThrd->m_hThread, INFINITE);有何作用。(4分)6. __stdcall、__cdecl、__pascal在什么方面有所不同。(4分)7.请把下述代码加上异常处理。(6分)int MyWriteFile
阅读全文
摘要:一.填空题(26分)1.WIN32平台下,sizeof(short) = __2__,sizeof(int) = __4__,sizeof(long) = __4__。(3分)2.请给出如下程序的结果(2分)int a = 3;int b = a << 3;a = __3__,b = __24__。3.请给出如下程序的结果(2分)int aaa = 0x01;htonl(aaa) = _16777216___。//这题运行显示的是16777216,我觉得可能是随机值4.请给出如下程序的结果(2分)#define MAX_NUM 100+200int nTemp = MAX_NUM*
阅读全文