2016年高级程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2016年高级程序设计考研真题答案及解析,供大家参考!
本文提供2016年高级程序设计考研真题答案及解析,以下为具体内容
1、下面的变量声明中,正确的是()。
A、char ch="A";
B、int i=j+1;
C、int a[5]={3};
D、char *p=1024;
2、若有int a[2][3],*p1=a[1],(*p2)[3]=a;以下能正确引用数组元素的是()。
A、**(p1+2);
B、*(p1+2);
C、**(p2+2);
D、*(p2+2);
3、若有union{char a[16];long b;double c;}data;则sizeof(data)的值为()。
A、32
B、16
C、8
D、4
4、若有#define S(x) x*x 执行语句printf("%d",S(2+3));的结果为()。
A、11
B、13
C、17
D、25
5、想从二进制文件"file1.dat"中读出数据,正确的文件打开方式是()。
A、fopen("file1.dat",'r');
B、fopen("file1.dat","r");
C、fopen("file1.dat",'rb');
D、fopen("file1.dat","rb");
6、若x=-1,执行语句do{x=x*x;}while(x--);下列说法正确的是()。
A、循环体执行一次
B、循环体执行两次
C、循环体执行无限次
D、语法错误,无法执行
7、若有char s[]="\123456abc\t",则strlen(s)的返回值是()。
A、8
B、9
C、10
D、12
8、以下只有在使用时才为该类型变量分配存储空间的存储类说明是()。
A、auto和static;
B、register和static;
C、auto和register;
D、extern和register;
9、若有typedef int *POINTER[3];想定义了一个含有3个指向int型指针的一维指针数组的正确形式是()。
A、POINTER *P;
B、POINTER *P[3];
C、POINTER P[3];
D、POINTER P;
10、若有int *p=(int *)malloc(sizeof(int));以下正确的数据输入语句是()。
A、scanf("%d",p);
B、scanf("%d",&p);
C、scanf("%d",*p);
D、scanf("%d",**p);
1、试题答案:C
试题解析:
【考点】本题考查变量的初始化。
【解析】选项A,其中"A"使用双撇号表示A是一个字符串,将其赋值给字符变量ch错误,类型不匹配。选项B中,j是一个变量,未对其初始化,不能将j+1赋值给i,故错误。选项C中,只对数组a中的第一个元素赋值为3,则系统会将其他元素默认赋值为0,故正确。选项D中,p是指针变量,不能将整数1024直接赋值给指针变量,故错误。综上本题选C。
2、试题答案:B
试题解析:
【考点】本题考查指针指向数组。
【解析】由题中定义,指针变量p1指向int变量(数组元素a[1][0]),p2指向含有3个int型元素的一维数组(即数组a第首行a[0])。故选项A错误,应为*(p1+2);指向数组元素a[1][2];故选项B正确。选项C、D中p2+2表示数组的第三行a[2],但是超出数组长度,数组元素溢出,故错误。综上本题选B。
3、试题答案:B
试题解析:
【考点】本题考查共用体类型的存储。
【解析】由题data被定义为共用体变量,故data的长度应是成员变量中最长的成员的长度。那么sizeof(DATE)的值应为1*16=16,故本题选B。
各数据类型所占字节数如下表:
4、试题答案:A
试题解析:
【考点】本题考查符号常量。
【解析】由题,S(x)被定义为符号常量,则S(2+3)就是2+3*2+3,即2+6+3=11,故本题选A。
符号常量使用#define定义,它是预编译指令,它只是用符号常量代表一个字符串,在预编译后,符号常量就不存在了,全置换成字符串,对符号变量的名字是不分配存储单元的。替换文本时只是将其看作一个字符串,并不会有任何的计算发生。
简单的宏定义:#define<宏名> <字符串>例:#define PI 3.1415926
带参数的宏定义:#define<宏名> (<参数表>)<宏体>
5、试题答案:D
试题解析:
【考点】本题考查文件的输入输出。
【解析】由下表可知,对于二进制文件的数据读出,文件打开方式应为"rb",故选项A、B、C错误。故本题选D。
fopen(文件名,文件使用方式);。文件使用方式如下表:
6、试题答案:B
试题解析:
【考点】本题考查循环结构的执行。
【解析】do{ }while循环中循环体至少执行一次。故循环第一次x=-1*-1=1,x--(先用x的值1,再令其值-1为0);第二次x=0*0=0,x--(先用x的值0,再令其值-1为-1),此时while(0)退出循环。故循环体执行两次,本题选B。
7、试题答案:A
试题解析:
【考点】本题考查变量的默认存储类型。
【解析】strlen测字符串长度:注意转义字符遇'\0'就停止统计。字符串s中,'\123'是转义字符(123为八进制,十进制为83,取值范围为0~255),所对应的字符为S;'\t'为转义字符,表示水平制表符。故字符串中的字符依次为'S'、'4'、'5'、'6'、'a'、'b'、'c'、'\t'、'\0',故返回值为8,本题选A。
8、试题答案:C
试题解析:
【考点】本题考查数据的存储。
【解析】由题在使用时才为该类型变量分配存储空间的存储类别应存储在动态存储区域CPU的寄存器中,由下表可知,选项C符合题意,故本题选C。
auto(自动变量)、register(寄存器变量)、static(静态变量)、extern(外部变量,可被其他文件引用)
9、试题答案:D
试题解析:
【考点】本题考查关键字typedef。
【解析】关键字typedef用以给数据类型取别名。题中定义中,用别名POINTER取代int *[3],故想要达到题中要求,定义应为POINTER P;。故本题选D。
用typedef声明新类型名,例:
typedef int Integer; //指定用Integer为类型名,作用与int相同
typedef struct //声明一个新类型名Data,代表上面的一个结构体类型
{ int data;
int num;
}Data;
typedef int Num[100]; //声明Num为整数数组类型名10、试题答案:A
试题解析:
【考点】本题考查内存动态分配。
【解析】由题,定义p为指向int的指针变量,并为其开辟一个长度为sizeof(int)的存储空间。故数据输入语句应为:scanf("%d",p);,故本题选A。
malloc函数的原型为:void *malloc(unsigned int size);。其作用是在内存的动态存储区中分配一个长度为size的连续空间。
scanf函数的一般形式:scanf(格式控制,地址表列)。

