科大讯飞笔试题目C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009讯飞软件开发笔试题目(C++)A卷
答案请写在答题纸上
第一部分综合基础试题共50分
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=%06d,i/j=%d”,i,j,i/j);
答案:
A)i=43,j=5,f=25.45
(说明:本来应该输出最小3位有效数字,25.5,但是由于限定了2位小数,所以强制有2位小数,有效数字的个数就起不到强制作用了。如果是%3.1,则输出为25.5)
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,字符串数组以\0(空格为结尾,所以str数组空间大小为5+1)
4,
5,strlen函数区的字符指针str的长度,不包括空字符。
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; 则以下选项中,正确的赋值语句是(c)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指针。哪种方法更好一些呢?(如果有的话)为什么?
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)_____________________________________
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”);