2018年C语言程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2018年C语言程序设计考研真题答案及解析,供大家参考!
本文提供2018年C语言程序设计考研真题答案及解析,以下为具体内容
1、在C语言中,字符串"\\TOP\t\65\""的长度是( )。
A、5
B、7
C、8
D、12
2、下面描述中,错误的是( )。
A、调用函数时,实参可以是表达式
B、调用函数时,将为形参分配内存单元
C、调用函数时,实参与形参可以共用存储单元
D、调用函数时,实参与形参的类型必须一致
3、以下程序段( )。
A、是死循环
B、循环执行1次
C、循环执行2次
D、有语法错误
4、若定义数组int a[10],以下语句哪一个不成立( )。
A、a数组在内存中占有一段连续的存储
B、*(a+1)与a[1]代表的数组元素相同
C、a代表a数组在内存中占有的存储区的首地址
D、a是一个变量
5、设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是( )。
A、int m=max(22,max(59,70));
B、int m=max(max(22,59),70);
C、int m=max(22,59,70);
D、int m=max(59,max(22,70);
6、以下说法中正确的是( )。
A、C语言程序是由一个或多个函数组成,其中至少有一个主函数
B、一个C语言文件至少应有一个主函数
C、所有C语言函数都有返回值
D、C程序中,main函数必须放在其他函数之后
7、已知有如下结构体定义,对data中的成员a的正确引用是( )。
A、p.data.a
B、(*p).data
C、p->data.a
D、(*p).a
8、下面合法的C语言字符常量是( )。
A、'\t'
B、"A"
C、65
D、A
9、下面数组定义正确的是( )。
A、char a[3]="are";
B、int a[]={1,2,3};
C、int a[2][]={{1,2},{3,4}}
D、int a[][]={{1,2},{3,4}}
10、若有以下定义和语句: char str1[]="string",str2[5];则复制字符串的正确方法是( )。
A、strcpy(str2,"Hello");
B、str2=str1;
C、strcpy(str1, "Hello");
D、str1="Hello";
1、试题答案:C
试题解析:
【考点】本题考查数据类型---转义字符。
【解析】字符串"\\TOP\t\65\""中'\\'是转义字符,值为反斜线'\';'\t'是转义字符,值为水平制表符;'\65'是转义字符,值为八进制65(即十进制53)对应的ASCII字符'5';'\"'是转义字符,值为双撇号'"'。综上,字符串的实际长度为7,还有系统自动加的'\0',字符串长度为8。故本题选C。
常见转义字符如下表:

2、试题答案:C
试题解析:
【考点】本题考查函数---数据传递。
【解析】实参和形参是两个不同的存储单元。形参在未出现函数调用时,并不占内存中的存储单元,在函数调用时,形参被临时分别内存单元。故本题选C。
3、试题答案:B
试题解析:
【考点】本题考查循环结构---do while。
【解析】x值为-1,直接执行一次循环体,x=-1*-1=1,此时!x=0,结束循环。故本题选B。
do…while语句的一般形式为:do 语句(循环体) while(表达式);
特点是:先无条件地执行循环体,然后判断循环条件是否成立。对于do…while循环语句来说,至少要执行一次循环体。
4、试题答案:D
试题解析:
【考点】本题考查数组的定义。
【解析】数组名a代表数组首元素的地址,是一个常量地址不是变量。故本题选D。
5、试题答案:C
试题解析:
【考点】本题考查函数---形参与实参。
【解析】函数调用时,实参的类型和数量必须与形参的类型和数量一致。故本题选C。
6、试题答案:A
试题解析:
【考点】本题考查C语言程序结构的特点。
【解析】一个C语言源程序可以由一个或多个源文件组成。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。有不带回值的函数,使用“void 类型”(或称空类型)定义函数。C程序中,对函数的先后顺序没有要求;若是main函数放在前面,在其后面定义的函数需要在main函数中进行声明。综上本题选A。
7、试题答案:D
试题解析:
【考点】本题考查自定义数据类型---结构体指针。
【解析】由题,p是data的地址值,那么*p就是data。故本题选D。
8、试题答案:A
试题解析:
【考点】本题考查数据类型---字符常量。
【解析】'\t'是水平制表符,是一个转义字符。"A"用双撇号表示是一个字符串。65表示一个整型常量。A是一个标识符。故本题选A。
9、试题答案:B
试题解析:
【考点】本题考查数组的初始化。
【解析】选项A,用字符串"are"对数组a进行初始化,而字符串实际为"are\0"占四个字符,超出数组长度。选项B,int a[]={1,2,3};可以写成int a[3]={1,2,3};。选项C和D,定义数组时,第1维的长度可以不指定,但第2维的长度不能省。故本题选B。
10、试题答案:C
试题解析:
【考点】本题考查数组---字符数组的赋值。
【解析】选项A,数组str2的长度为5,"Hello"的实际长度为6(系统自动加'\0'),故错误。选项B和D,不能直接将字符数组或字符串赋值给字符数组。选项C,str1的长度为7,"Hello"的长度为6,可以赋值成功。故本题选C。
字符串复制函数strcpy函数的一般形式为:strcpy(字符数组1,字符串2)。其作用是将字符串2复制到字符数组1中去。说明:
字符数组1的长度不应小于字符串2的长度。
“字符数组1”必须写成数组名形式,“字符串2”可以是字符数组名,也可以是一个字符串常量。
如果在复制前未对字符数组1初始化赋值,则字符数组1各字节的内容是无法预知的,复制时将字符串2中的字符串和其后的’\0’一起复制到字符数组1中,取代字符数组1中原有的值,再往后的值是字符数组1原有的内容。
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如str1=“China”是不合法的。

