考研高级程序设计在线题库每日一练(一十九)
以下是希赛网给大家分享考研高级程序设计在线题库每日一练,希望通过刷题可以帮助大家巩固重要知识点,对知识点查漏补缺,祝愿大家能顺利通过考试!
本文提供考研高级程序设计在线题库每日一练,以下为具体内容
1、若有语句int c[4][5],(*p)[5];p=c;,能正确引用数组元素的是( )。
A、p+1
B、*(p+3)
C、*(p+1)+3
D、*(p[0]+2)
2、以下叙述中正确的是( )。
A、局部变量说明为static存储类,其生存期将得到延长;
B、全局变量说明为static存储类,其作用域将被扩大;
C、任何存储类的变量在未赋初值时,其值都是不确定的;
D、形参可以使用的存储类说明符与局部变量完全相同;
3、若有声明void *fun();下列说法正确的是( )。
A、fun函数无返回值;
B、fun函数的返回值可以是任意的数据类型;
C、fun函数的返回值是指向空类型的指针;
D、fun是一个指向函数的指针,该函数无返回值。
4、经过下列的语句int j,a[10],*p;定义以后,下列的语句中合法的是( )。
A、p=p+2
B、p=a[5]
C、p=a[2]+2
D、p=&(j+2)
5、若有char s[]="\123456abc\t",则strlen(s)的返回值是( )。
A、8
B、9
C、10
D、12
1、试题答案:D
试题解析:
【考点】本题考查指针指向一维数组。
【解析】语句int (*p)[5];表示p为指向包含5个元素的一维数组的指针变量。且有p=c,故p指向二维数组c的第一行,则有:
p+1指向二维数组c的第二行(即c[1]的地址);
*(p+3)指向数组c的第四行的第1个元素(即c[3][0]的地址);
*(p+1)+3指向数组c的第二行的第4个元素(即c[1][3]的地址);
p[0]指向数组c的第一行的第1个元素,则*(p[0]+2)表示数组c第一行的第3个元素(即数组元素c[0][2])。
综上本题选D。
2、试题答案:A
试题解析:
【考点】本题考查局部变量与全局变量的存储类别。
【解析】static类型的变量是静态变量,它的值在函数调用结束后不会消失,而是保留原值;它生存期从定义该变量开始直到程序结束。局部变量是在函数内部定义的变量,它只在本函数范围内有效;故局部变量说明为static存储类(即静态局部变量),其生存期将得到延长,故A选项正确。全局变量的作用域从定义该变量开始直到程序结束(允许被其他文件引用),全局变量说明为static存储类,其作用域将缩小(只限本文件引用),故选项B错误。
若定义变量时未赋初值,静态局部变量编译时自动赋初值0,自动变量的值是一个不确定的值;故选项C错误。
局部变量可以使用static,而形参不可以;两者都可以使用auto(自动变量)、register(寄存器变量)类别;故选项D错误。
综上本题选A。
3、试题答案:C
试题解析:
【考点】本题考查函数的类型。
【解析】无返回值的函数应定义为void型,而不是void *型,故选项A错误。函数的返回值类型在定义时需指定;不可以是任意类型,故选项B错误。声明void *fun();表示函数的返回值是void *型(指向空类型的指针);故选项C正确。指向函数的指针应定义为void(*fun)(),故选项D错误。综上本题选C。
4、试题答案:A
试题解析:
【考点】本题考查指针的赋值。
【解析】p定义为指针变量,代表地址。p+2表示指针p所指向的地址的后两个单位的地址,故A正确。a[5]、a[2]+2均为元素值,不能直接赋值给指针变量,故B、C错误。&(j+2)表示j+2的地址,但是不确定其地址值(野地址),故选项D错误。综上本题选A。
5、试题答案:A
试题解析:
【考点】本题考查变量的默认存储类型。
【解析】strlen测字符串长度:注意转义字符遇'\0'就停止统计。字符串s中,'\123'是转义字符(123为八进制,十进制为83,取值范围为0~255),所对应的字符为S;'\t'为转义字符,表示水平制表符。故字符串中的字符依次为'S'、'4'、'5'、'6'、'a'、'b'、'c'、'\t'、'\0',故返回值为8,本题选A。