近几年科大讯飞软件笔试题目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2009讯飞软件开发笔试题目(C++)A卷

1、(4分)用变量a给出下面的定义

a) 一个整型数;

b)一个指向整型数的指针;

c)一个指向指针的指针,它指向的指针是指向一个整型数;

d)一个有10个整型的数组;

e)一个有10个指针的数组,该指针是指向一个整型数;

f)一个指向有10个整型数数组的指针;

g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;

h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数

答案:a)int a b)int *a; c)int **a; d)int a[10]; e)int *a [10];

f) int a[10], *p=a; g)int (*a)(int) h) int( *a[10])(int)

2、(4分)请写出以下语句的输出结果:

Int i=43;

Int j=5;

Double f=;

a)printf(“i=%d,j=%d,f=%3.2f”,i,j,f);

b)printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);

答案:

A)i=43,j=5,f= B)i=2b ,j=00005,i/j=8

(%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)

3、(2分)请完成以下宏定义:

a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题)

b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个

答案:

a)#define seconds 365*24*60*60

b) #define MIN(a,b) ((a)<(b)(a):(b))

扩展:MAX宏#define MAX ((a)>(b)(a):(b))

ABS宏#define ABS (((x)>0)(x):(-(x)))

4、(6分)以下为32为windows下的c++程序,请计算:

a)char str[]=”hello”;

char *p=str;

请计算:

sizeof(str)= sizeof(p)= strlen(p)=

答案:6,4,5

b)void func(char str[100])

{

Void *p=malloc(100);

}

请计算:

sizeof(str)=101

sizeof (p)=4

c)int a[3]={1,2,3};

int b=sizeof(a)/sizeof(a[0]);

请计算:

b=3

5、(2分)设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是(d)

a)p=1; b)*q=2; c)q=p; d)*p=5;

6、(2分)const关键字的用途(至少说明两种)

答案:(1)可以定义const 常量(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

7、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:

#define dps struct s*

Typedef struct s *tps;

以上两种情况的意图都是要定义dps和tps作为一个指向结构s指针。哪种方法更好一些呢(如果有的话)为什么

Typedef更好一些,因为define只是简单的替换,比如声明dps a,b等价于struct *a,b;所以这样声明是错误的,而Typedef却不会这样。

8、(8分)以下是一组有关内存知识的问题,请仔细看题,回答:

Void GetMemory(char *p)

{

P=(char *)malloc(100);

}

Void Test(void)

{

Char *str=Null;

GetMemory(str);

Strcpy(str,”hello world”);

Printf(str);

}

请问运行Test函数会有什么样的结果

a)_会出错,不能传递动态分配的内存,str一直为空

char *GetMemory(void)

{

Char p[]=”hello world”);

Return p;

}

Void Test(void)

{

Char *str=NULL;

Str=GetMemory();

Printf(str);

}

请问运行Test函数会有什么结果

b)_会产生错误,不能返回子函数的局部变量值,因为在函数退出时,局部变量的值也清空。void GetMemory2(char **p,int num)

{

*p=(char *)malloc(num);

}

Void Test(void)

{

Char *str=NULL;

GetMemory(&str,100);

Strcpy(str,”hello”);

Printf(str);

}

请问运行Test函数会有什么结果

c)_hello。

void Test(void)

{

Char *str=(char *)malloc(100);

Strcpy(str,”hello”);

Free(str);

If(str!=NULL)

{

Strcpy(str,”world”);

Printf(str);

}

}

请问运行test函数会有什么样的结果

虽然能拷贝成功,但是这样使用很不安全,free(str)后,str成为悬浮指针。

9、(6分)请写出以下程序的输出结果:

Class A

{

Public:

A()

{ Printf(“A constructed.\n”);}

Virtual ~A()

{printf(“A deconstructed.\n”);}

Virtual void Fn()

{printf(“A fn called.\n”);}

};

Class B:public A

{

Public:

B()

{printf(“B constructed.\n”);}

Virtual ~B()

相关文档
最新文档