2021年C语言程序设计考研真题答案及解析(一)
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2021年C语言程序设计考研真题答案及解析,供大家参考!
本文提供2021年C语言程序设计考研真题答案及解析,以下为具体内容
1、若变量已正确定义并赋值,符合C语言语法的表达式是( )。
A、a=20++
B、a=5,6,7
C、a=a+2=3
D、a=12.5%4
2、若有“int a=1,b=1;”,则循环语句“while(a<20) b++; a++;”的循环执行( )。
A、20次
B、21次
C、无限次
D、19次
3、在程序中可以用来作为变量名的合法标识符是( )。
A、switch
B、stu_a
C、2a1
D、buy?
4、有以下代码,当输入数据的形式为10,20,30回车,正确的输出结果为( )。
A、60
B、10
C、30
D、不确定值
5、C语言中函数返回值的类型是由( )决定的。
A、return语句中的表达式类型
B、调用该函数的主调函数的类型
C、调用函数时临时决定
D、定义函数时所指定的函数类型
6、以下说法正确的是( )。
A、char *a= "123456"; 等价于 char *a; *a= "123456";
B、char str[10]={ "123456"}; 等价于 char str[10]; str[ ]={ "123456"};
C、char *s= "123456"; 等价于 char *s; s= "123456";
D、char c[7]= "123456", d[7]= "123456"; 等价于 char c[7]=d[7]= "123456";
7、以下程序的输出结果是( )。
A、10,20,30
B、10,20,60
C、1,2,3
D、1,2,6
8、以下程序的输出结果是( )。
A、t,two
B、h,one
C、r,two
D、o,three
9、若有以下定义,则*(p+6)表示( )。int a[10],*p=a;
A、元素a[7]的地址
B、元素a[7]的值
C、元素a[6]的地址
D、元素a[6]的值
10、以下程序的输出结果是( )。
A、v1=2,v2=0,v3=1,v4=1
B、v1=2,v2=3,v3=3,v4=4
C、v1=1,v2=3,v3=1,v4=4
D、v1=4,v2=2,v3=3,v4=1
1、试题答案:B
试题解析:
A选项,20++错误,常量不能使用自增符号。B选项,“5,6,7”是逗号表达式,表达式结果为7。C选项,赋值运算符左边不能为表达式。D选项,求余运算符‘%’要求参加运算的运算对象为整数。故本题选B。
需要注意的是逗号运算符。用于逗号表达式的顺序运算符一般形式为:表达式1,表达式2,...,表达式n。表达式的值:表达式n的值
【考点】本题考查表达式。
2、试题答案:C
试题解析:
语句“while(a<20) b++; a++;”中,while循环的循环体是b++;不包括a++;。因此在循环中a的值不变,表达式a<20恒成立,无限循环。故本题选C。
【考点】本题考查while循环结构。
3、试题答案:B
试题解析:
A选项,switch是关键字,所以不能做合法标识符。C选项第一个字符为数字,错误。D选项,含有字符'?',错误。故本题选B。
C语言规定标识符只能由字母、数字、下划线3种字符组成,且第一个字符必须为字母或下划线。
【考点】本题考查标识符。
4、试题答案:D
试题解析:
格式控制为“%d%d%d”,输入形式为10,20,30;系统会把输入的数据和scanf函数中的格式字符逐个对照检查,两者格式不同,导致无法准确对应位置,x,y,z的值无法确定。故本题选D。
scanf函数在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。
【考点】本题考查数据的输入输出---scanf函数。
5、试题答案:D
试题解析:
A选项错误,return语句中的表达式类型应与定义函数时所指定的函数类型,即返回值类型保持一致。B选项错误,两者类型没有必然联系。C选项错误,返回值类型应该在定义函数时确定。故本题选D。
定义函数应包括以下的几个内容:
(1)指定函数的名字,以便以后按名调用。
(2)指定函数的类型,即函数返回值类型。
(3)指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这一项。当形参为数组时,数组的长度必须是确定的值或者省略,不可使用变量。
(4)指定函数应当完成什么操作,即函数的功能。
【考点】本题考查函数的基本概念。
6、试题答案:C
试题解析:
选项A,语句*a= "123456";是把字符串"123456"的值赋给s所指向的变量,而此时s指向一个字符串变量,存放不了字符串,故错误。选项B,不能用赋值语句将一个字符串常量直接赋给一个字符数组。选项C,语句char *s; s= "123456";把字符串"123456"第一个字符的地址赋给指针变量s,与语句char *s= "123456";等价。选项D,不能用赋值语句将一个字符数组直接赋给另一个字符数组。综上本题选C。
【考点】本题考查字符串的存储。
7、试题答案:B
试题解析:
调用函数fun后,并不改变主函数中变量x,y,z的值,故输出结果为10,20,60,本题选B。
函数调用中发生的数据传递(值传递)是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。
【考点】本题考查函数的调用。
8、试题答案:B
试题解析:
语句char *s[]={"one","two","three"}等同于chars[][]={"one","two","three"},s是一个二维的字符数组。输出语句printf("%c,%s",*(p+1),s[0]);表示输出的是*(p+1)所指向的一个字符和s[0]所指向的字符串。而对于*p=s[2];也就是将s[2][0]的地址赋值给指针向量p,故*(p+1)=h,即输出字符‘h’。s[0]就是第一个字符串"one"。故本题选B。
【考点】本题考查指针指向数组。
9、试题答案:D
试题解析:
p+6表示p+6所指向的数组元素的地址,即a[6]的地址。*(p+6)代表p+6所指向的数组元素,即a[6]。故本题选D。
【考点】本题考查指针指向数组。
10、试题答案:B
试题解析:
分析表格如下:

故v1=2,v2=3,v3=3,v4=4,本题选B。
switch语句中case标号只起标记的作用,如果各case语句后面没有break语句,在执行完一个case标号后面的语句后,将一直执行下去。
【考点】本题考查switch多分支选择语句。
点击查看【完整】试卷>>

