-
简答题 (30)
1. Windows程序的入口是哪里?写出Windows消息循环机制的流程。
2. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
3.内联函数在编译时是否做参数类型检查
4. 头文件中的 ifndef/define/endif 干什么用?
5.C++中为什么用模板类。
6. 函数模板与类模板有什么区别?
7. C++中什么数据分配在栈或堆中,new分配的数据是在堆还是栈中?
8. 一般数据库若出现日志满了,会出现什么情况,是否还能使用?
9. winsock建立连接的主要实现步骤是什么?
10.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
-
写出程序运行结果(24)
1.
int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+c);
}
void main()
{
int I;
int a=2;
for(I=0;I<5;I++)
{
printf(“%d,”, sum(a));
}
}
2、若int占4个字节,char占1个字节,float占4个字节,则定义如下:
struct stu
{ union{
char bj[5];
int bh[2];
}class;
char xm[8];
float cj;
}xc;
则sizeof(xc)的值为?
3.
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
则a[q-p]=?
4. 定义 int **a[3][5], 则变量占有的内存空间为:_____
5.写出下面程序的输出结果
#include <stdio.h>
class A{
public:
void FuncA(){
printf(“FuncA calledn”);
}
virtual void FuncB(){
printf(“FuncB calledn”);
}
};
class B: public A{
public:
void FuncA(){
A::FuncA();
printf(“FuncAB calledn”);
}
virtual void FuncB(){
printf(“FuncBB calledn”);
}
};
void main(void){
B b;
A *pa;
pa=&b;
A *pa2=new A;
b.FuncA();
b.FuncB();
pa->FuncA();
pa->FuncB();
pa2->FuncA();
pa2->FuncB();
delete pa2;
}
6. 下面程序的输出结果是什么?
#define f1(n) (n)*(n)
int i=5;
int k=0;
k=f1(i++);
printf(“%d %d”,i,k);
7.
int i;
int x=0x12345678;
unsigned char *p=(unsigned char *)&x;
for(i=0;i<SIZEOF(X);I++)
printf(“%2x”,*(p+i));
在x86 pc机器上运行结果?
8.
void fun(char *a,char *b)
{ a=b;
(*a)++;
}
void main(){
char s1=’A’,s2=’a’;
char *p1=&s1;
char *p2=&s2;
fun(p1,p2);
printf(“%c%c”,s1,s2);
}
输出结果是:
-
改错(16)
-
#include <stdio.h>
#include <string.h>
class Cbuffer{
char * m_pBuffer;
int m_size;
public:
CBuffer()
{
m_pBuffer=NULL;
}
~CBuffer()
{
Free();
}
void Allocte(int size) {
m_size=size;
m_pBuffer= new char[size];
}
private:
void Free()
{
if(m_pBuffer!=NULL)
{
delete m_pBuffer;
m_pBuffer=NULL;
}
}
public:
void SaveString(const char* pText) const
{
strcpy(m_pBuffer, pText);
}
char* GetBuffer() const
{
return m_pBuffer;
}
};
void main (int argc, char* argv[])
{
CBuffer buffer1;
buffer1.SaveString(“Microsoft”);
printf(buffer1.GetBuffer());
}
2) 下面程序想打印”Welcome MSR Asia”,改正错误
#include <stdio.h>
#include <string.h>
char * GetName (void){
//To return “MSR Asia” String
char name[]=”MSR Asia”;
return name;
}
void main(int argc, char* argv[])
{
char name[32];
//Fill in zeros into name
for(int i=0;i<=32;i++)
{
name[i]=’