资源描述:
《(全)近几年科大讯飞软件笔试题目.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2009讯飞软件开发笔试题目(C++)A卷1、(4分)用变量a给出下面的定义a)一个整型数;b)一个指向整型数的指针;c)一个指向指针的指针,它指向的指针是指向一个整型数;d)一个有10个整型的数组;e)一个有10个指针的数组,该指针是指向一个整型数;f)一个指向有10个整型数数组的指针;g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)intab)int*a;c)int**a;d)inta[10];e)int*a[10];f)inta[10],*p=a;g)int(*a)(int
2、)h)int(*a[10])(int)2、(4分)请写出以下语句的输出结果:Inti=43;Intj=5;Doublef=25.45181;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=25.45B)i=2b,j=00005,i/j=8(%x显示的是一个无符号的0x16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a)用预处理指令#define声明一个常数,用以表明1年中有多
3、少个秒(忽略闰年问题)b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个答案:a)#defineseconds365*24*60*60b)#defineMIN(a,b)((a)<(b)?(a):(b))扩展:MAX宏#defineMAX((a)>(b)(a):(b))ABS宏#defineABS(((x)>0)?(x):(-(x)))4、(6分)以下为32为windows下的c++程序,请计算:a)charstr[]=”hello”;char*p=str;请计算:sizeof(str)=sizeof(p)=strlen(p)=答案:6,4,5b)voidfunc(chars
4、tr[100]){Void*p=malloc(100);}请计算:sizeof(str)=101sizeof(p)=4a)inta[3]={1,2,3};intb=sizeof(a)/sizeof(a[0]);请计算:b=35、(2分)设有定义:intn=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修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的
5、健壮性。7、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:#definedpsstructs*Typedefstructs*tps;以上两种情况的意图都是要定义dps和tps作为一个指向结构s指针。哪种方法更好一些呢?(如果有的话)为什么?Typedef更好一些,因为define只是简单的替换,比如声明dpsa,b等价于struct*a,b;所以这样声明是错误的,而Typedef却不会这样。8、(8分)以下是一组有关内存知识的问题,请仔细看题,回答:VoidGetMemory(char*p){P=(char*)mall
6、oc(100);}VoidTest(void){Char*str=Null;GetMemory(str);Strcpy(str,”helloworld”);Printf(str);}请问运行Test函数会有什么样的结果?a)_会出错,不能传递动态分配的内存,str一直为空char*GetMemory(void){Charp[]=”helloworld”);Returnp;}VoidTest(void){Char*str=NULL;Str=GetMemory();Printf(str);}请问运行Test函数会有什么结果?b)_会产生错误,不能返回子函数的局部变量值,因为在函数退出时,局
7、部变量的值也清空。voidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}VoidTest(void){Char*str=NULL;GetMemory(&str,100);Strcpy(str,”hello”);Printf(str);}请问运行Test函数会有什么结果?c)_hello。voidTest(void){Char*str=(char*)malloc(100);Strcpy(str