2018年C程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2018年C程序设计考研真题答案及解析,供大家参考!
本文提供2018年C程序设计考研真题答案及解析,以下为具体内容
1、设int a=0,b=0,c=2,d=4;则执行(c=a==b) || (d=b==a) ;后变量d的值是( )。
A、4
B、0
C、1
D、2
2、若用数组名A作为函数调用的实参,则实际上传递给形参的是( )。
A、A[0]
B、&A[0]
C、*A[0]
D、&A
3、以下能定义长度为10的一维数组x且能正确初始化的语句是( )。
A、int x[10]=(0,0,0,0,0);
B、int x[10]=[3,2,1];
C、int x[]={0};
D、int x[10]={4*2};
4、设y为整型变量,能判断15<y<20的C语言表达式是( )。
A、15<y<20
B、y==16||y==17||y==18||y==19
C、y>15 AND y<20
D、y>15&y<20
5、若有函数原型int fun(int x,float y);则下列选项中不正确的函数调用是( )。
A、fun(10,2.3);
B、printf("%d",fun(10.2,2));
C、fun('A',2);
D、fun("\0",5);
6、有定义语句:char *p[3];以下选项中与此语句等价的是( )。
A、char p[3];
B、char **p;
C、char *(p[3]);
D、char (*p)[3];
7、当do-while语句构成的循环条件为( )时,结束循环。
A、0
B、1
C、true
D、非0
8、以下程序段的输出结果是( )。int x=3;do{printf("%3d",x-=2);}while(!(--x));
A、 1
B、 3 0
C、 1 -2
D、死循环
9、若有声明:int i,j=7,*p=&i;,则与i=j;等价的语句是( )。
A、i=*p;
B、*p=*&j;
C、i=&j;
D、i=**p;
1、试题答案:A
试题解析:
题中表达式c=a==b可以写成c=(a==b),其中a==b为真(值为1),即c=1;那么逻辑或运算符“||”出现短路评估(现象),右侧的表达式不执行,故d的值未被改变,为4,则本题选A。
如果 &&(||) 运算符左侧的子表达式为 false(true),则不会检查右侧的表达式。因为只要有一个子表达式为 false(true),则整个表达式都为 false(true),所以再检查剩余的表达式会浪费 CPU 时间。这被称为短路评估。
2、试题答案:B
试题解析:
数组名表示数组首元素的地址;那么数组名A作为函数调用的实参,则实际上传递给形参的是数组首元素的地址,即&A[0]。故本题选B。
3、试题答案:D
试题解析:
一维数组初始化的方法:
(1)在定义数组时对全部数组元素赋初值。
(2)只给数组中一部分元素赋值,系统会自动给后面未赋值的元素赋初值为0。
(3)若想使一个数组中全部元素值为0,可以写成int a[5]={0};
(4)对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。如int a[5]={0,1,2,3,4};可以写成int a[]={0,1,2,3,4};。但是,如果数组长度与提供初值的个数不相同,则方括号中的数组长度不能省略。
故选项A、B中语句错误。选项C中数组x的长度为1,不符题意。综上本题选D。
4、试题答案:B
试题解析:
表达同时关系,应选择逻辑运算符,则有(y>15)&&(y<20)。又由y为整型变量,那么y的取值只有16、17、18、19中的一个,则可以写成y==16||y==17||y==18||y==19。故本题选B。
选项A中,15<y<20为数学表达式,不符题意。选项D中,运算符&表示按位运算,不符题意。选项C中,C语言无AND运算符,不符题意。
5、试题答案:D
试题解析:
选项A中的实参10,2.3对应形参类型int ,float,故正确。选项B中的实参10.2,2,float型与int型的数据可以自动转化,故正确。选项C中的实参'A'是整型数据,值为65,故正确。选项D中实参"\0",5,第一个实参为字符串,无法转化为int型,故错误。综上本题选D。
6、试题答案:C
试题解析:
语句char *p[3];中,运算符"[]"优先级高于运算符"*",那么可以写成char *(p[3]);。故本题选C。
7、试题答案:A
试题解析:
while循环语句中,当循环条件为假(值为0)时,循环结束。故本题选A。
8、试题答案:C
试题解析:
循环过程如下表:
故输出结果为 1 -2,本题选C。
9、试题答案:B
试题解析:
由题可知,i,j为int型变量;p为int型指针变量,指向变量i,故*p表示变量a。选项A中i=*p;,即i=i,不符题意。选项B中*p=*&j;,即i=J,符合题意。选项C中i=&j;,语句错误,不能将地址赋值给int型变量。选项D中**p错误,p是一重指针。综上本题选B。
点击查看【完整】试卷>>

