2020年C语言程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2020年C语言程序设计考研真题答案及解析,供大家参考!
本文提供2020年C语言程序设计考研真题答案及解析,以下为具体内容
1、以下( )是错误的整型常量。
A、-0xabcdef
B、018
C、0x29
D、011
2、为了判断两个字符串s1和s2是否相等,应当使用( )。
A、if(s1==s2)
B、if(s1=s2)
C、if(strcmp(s1,s2==1)
D、if(strcmp(s1,s2)==0)
3、以下scanf函数调用语句中错误的是( )。
A、scanf("%d", p->age);
B、scanf("%s", pup[1].name);
C、scanf("%d", &(p->age));
D、scanf("%s", p->name);
4、以下程序运行结果( )。
A、15
B、10
C、6
D、9
5、下面程序段的运行结果是( )。
A、4 5 6 5 4
B、3 4 5 4 3
C、4 5 5 5 4
D、4 5 5 4 3
6、以下程序的输出结果是( )。
A、2
B、18
C、10
D、不确定
7、以下程序段的运行结果是( )。
A、11
B、12
C、8
D、9
8、要把一个函数计算结果的两个整型数据返回给主调函数,在下面的方法中不正确的是( )。
A、用两个return语句
B、形参用数组,该数组包含两个整型数据
C、形参用两个整型的指针
D、用两个整型全局变量
9、若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a, i=3;,则对a数组元素不正确的引用是( )。
A、a[p-a]
B、p[i]
C、*(&a[i])
D、a[p+a]
1、试题答案:B
试题解析:
以0开头的是8进制整数,后面不能出现8及以上数字。故本题选B。
整型常量的书写形式:
十进制:通常整数的写法。例如:12、17、21等。
八进制:通常是在八进制整数前面加一个数字0。例如:012、017、021。
十六进制:通常是在十六进制整数前加0x。例如0x12、0x17、0x21。注意十六进制与十进制的对应关系是:0-9对应0-9;A-F对应10-15。
二进制:通常是在二进制整数前加0b。例如0b1100,对应十进制数为12。
【考点】本题考查整型常量的书写形式。
2、试题答案:D
试题解析:
两个字符串比较不能简单的用“==”符号,需要使用函数strcmp,比较的结果由函数值带回。若s1=s2,则函数值为0;若s1>s2,则函数值为一个正整数;若s1<s2,则函数值为一个负整数。故本题选D。
字符串比较函数strcmp一般形式为strcmp(字符串1,字符串2)。比较的规则是:将两个字符串自左至右逐个字符相比(按ASCII码值大小比较,注意小写字母大于大写字母),直到出现不同的字符或遇到‘\0’为止。若全部字符相同,则认为两个字符串相等;若出现不同的字符,则以第一对不相同的字符的比较结果为准。
【考点】本题考查字符串处理函数---strcmp。
3、试题答案:A
试题解析:
p->age是变量名,而不是变量地址,故此语句错误。故本题选A。
scanf函数的一般形式:scanf(格式控制,地址表列)。使用该函数应该注意的事项:
(1)地址表列里面应当是变量地址,而不是变量名。例如,如a是整型变量应写成“scanf("%d",&a);”。
(2)如果在格式控制里除了格式声明还有其他字符,则在输入数据时在对应的位置输入对应相同的字符。
(3)在用“%c”格式声明输入字符时,空格字符和“转义字符”中的字符都作为有效字符输入。
(4)在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。
【考点】本题考查数据的输入输出---scanf函数。
4、试题答案:B
试题解析:
题中while语句结束循环的途径共有两条,一是循环条件表达式“item<5”的值为假(以0表示)时;二是语句“break;”生效时,直接跳出此循环。当循环到第4次时,item的值经历了0、1、2、3、4,此时sum的值为0+1+2+3+4=10,表达式sum>=8为真,执行语句“break;”。直接结束本循环。故本题选B。
while语句的一般形式为:while(表达式)语句。它的特点是先判断条件表达式,再执行循环体语句。while语句可以简单的记为:只要当循环条件表达式为真时(即给定的条件成立),就执行循环语句。
改变循环执行的状态的语句:
break语句,直接终止整个循环过程,不再判断执行循环的条件是否成立。
continue语句,结束本次循环,即跳过循环体下面未执行的语句,转到循环体结束点之前。不终止整个循环的执行。
【考点】本题考查循环结构---while语句。
5、试题答案:D
试题解析:
由题,循环体“a[i]++;”的作用是使得a[i]的值自增1;当循环条件表达式“a[++i]<5”为假时,循环终止。执行此循环语句,对于数组a,只有前两个元素值自增1,其他元素不变,循环结束后元素值分别为4 5 5 4 3。故本题选D。
do…while语句的一般形式为:do 语句(循环体) while(表达式);
特点是:先无条件地执行循环体,然后判断循环条件是否成立。对于do…while循环语句来说,至少要执行一次循环体。
【考点】本题考查循环结构---do…while语句。
6、试题答案:C
试题解析:
由题,i的值分别为0 1 2 3 4时,表达式*(p+i) == *(q-i)的值都为真,所以对于变量x的值,只需要看最后一次循环,当i=4时,*(p+i)*2的值为10,即x=10。故本题选C。
当指针p指向数组元素时,p+1指向同一数组中的下一个元素,p-1指向同一数组中的上一个元素。*(p+i)就是p+i所指向的数组元素,即a[i]。可以通过改变指针变量的值指向不同的元素,所以要注意指针变量的当前值。
【考点】本题考查通过指针引用数组。
7、试题答案:B
试题解析:
指针数组中的指针变量p[i]指向由3个元素组成的一维数组。将数组a分割成1 2 3 、4 5 6、7 8 9 、10 11 12。故p[3][2]的值为12,本题选B。
int *p[4]的含义是定义指针数组p,它由4个指向整型数据的指针元素组成,而在题中整型数据是有3个元素组成的一维数组。p[3][2]就是指针数组p中,下标为3的指针所指向的一维数组中下标为2的数据,即12。
【考点】本题考查指向多维数组的指针变量。
8、试题答案:A
试题解析:
通常希望通过调用一个函数是主函数得到一个确定的值,就是函数的值(函数的返回值),函数的返回值若是有,只会有一个,当函数中有多个return时,以第一个return语句为准,所以不能用两个return语句返回两个数据。故本题选A。选项B和C都是通过地址传递,将整型数据的地址作为实参,通过函数计算使得相应的值发生变化,主函数可以获得函数计算后的数据。选项D,全局变量的作用域为从定义变量的位置开始到本源文件结束,所以函数计算后,可以被主函数获取。
【考点】本题考查函数的调用。
9、试题答案:D
试题解析:
选项A中,p-a所得到的结果为它们所指元素(都指向首元素)的相对距离,因此p-a=0。选项B,p[i]等价于a[i]。选项C,*(&a[i])等价于a[i]。选项D中的p+a,两个地址不能相加,无实际意义。故本题选D。
当指针变量指向数组元素时,可以进行一下运算:加一个整数(用+或+=),如p1+1;减一个整数(用-或-=),如p1-1;
自加运算,如p++,++p;
自减运算,如p--,--p;
两个指针相减,如p1-p2(只有p1和p2都指向同一数组的元素时才有意义)。
注意:两个地址不能相加,如p1+p2是无实际意义的。
【考点】本题考查指针与数组。
点击查看【完整】试卷>>

