好文档 - 专业文书写作范文服务资料分享网站

最新(全)近几年科大讯飞软件笔试题目资料

天下 分享 时间: 加入收藏 我要投稿 点赞

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=25.45181;

a) printf(“i=%d,j=%d,f=%3.2f”,i,j,f); b) printf(“i=%x,j=d,i/j=%d”,i,j,i/j); 答案:

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

(%x显示的是一个无符号的0x 16进制的整数,d输出的是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()

{printf(“B deconstructed.\\n”);} Virtual void Fn()

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

};

Class C:public B { Public: C() {printf(“C constructed.\\n”);} Virtual ~C() {printf(“C deconstructed.\\n”);} Virtual void Fn() {printf(“C fn called.\\n”);} };

Void main(int argc,char* grgv[]) { A *pA=new B; If(pA!=NULL) pA->fn(); B *pB=static_cast(pA);

If(pB!=NULL) pB->fn();

C * pC=static_cast(pA); If(pC!=NULL) pC->fn(); delete pA; }

A constructed. B constructed B fn called. B fn called. B fn called.

B deconstructed. A deconstructed.

10.(2分)以下说法错误的是:(b)

A)指针和引用作为函数参数都可以改变实参 B)指针和引用都可以在定义后任意的改变指向 C)引用必须在创建的时候初始化,而指针则不需要 D)不能空引用,但是可以有空指针 11、(2分) 下列关于多态的描述,错误的是(c)

A)C++语言的多态性分为编译时的多态和运行时的多态性 B)编译时的多态性可以通过函数重载来实现 C)运行时的多态性可以通过模板和虚函数来实现

D)实现运行时多态性的机制称动态绑定 12、(2分) 运算符的重载形式有两种,重载为_类的成员函数_和_类的友元函数_ 13、(2分) main主函数执行完毕后,是否可能会再执行一段代码?请说明理由? 答:可以,可以用_onexit()注册一个函数,在main结束之后调用f1,f2,f3,f4。 14、(2分)C++中的空类,默认产生那些类成员函数? 答:默认构造函数、析构函数、默认拷贝函数和赋值操作符 15、(4分)简述STL库的功能,并给出遍历一个包含一组整型数的vector的代码。

答:标准模板库是一个基于模板的容器类库,包括链表、列表、队列和堆栈。标准模板库还包含许多常用的算法,包括排序和查找。标准模板库的目的是提供对常用需求重新开发的一种替代方法。标准模板库已经经过测试和调试,具有很高的性能并且是免费的。最重要的是,标准模板库是可重用的,当你知道如何使用一个标准模板库的容器后,就可以在所有的程序中使用它而不需要重新开发了。

容器是包容其他对象的对象。标准C++库提供了一系列的容器类,它们都是强有力的工具,可以帮助C++开发人员处理一些常见的编程任务。标准模板库容器类有两种类型,分别为顺序和关联。顺序容器可以提供对其成员的顺序访问和随机访问,关联容器则经过优化类的键值访问它们的元素。标准模板库在不同操作系统是可移植的。 #include #include using namespace std; int sum(vector vec) { int result=0; vector::iterator p=vec.begin(); while(p!=vec.end()) { cout<<*p<<\ result+=*p++; } return result; }

int main() { vector v1(100); cout<

最新(全)近几年科大讯飞软件笔试题目资料

2009讯飞软件开发笔试题目(C++)A卷1、(4分)用变量a给出下面的定义a)一个整型数;b)一个指向整型数的指针;c)一个指向指针的指针,它指向的指针是指向一个整型数;d)一个有10个整型的数组;e)一个有10个指针的数组,该指针是指向一个整型数;f)一个指向有10个整型数数组的指针;g)一个指向函数
推荐度:
点击下载文档文档为doc格式
5rydo3cilr00kc5204u903ypi6bk1500j46
领取福利

微信扫码领取福利

微信扫码分享