2021年C程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2021年C程序设计考研真题答案及解析,供大家参考!
本文提供2021年C程序设计考研真题答案及解析,以下为具体内容
1、下列数据中,为字符常量的是( )。
A、"house"
B、How do you do.
C、$abe
D、'A'
2、下列说法中正确的是( )。
A、函数调用不占运行时间,只占编译时间
B、宏替换不占运行时间,只占编译时间
C、有参数的宏定义就是函数
D、在定义宏时,宏名与带参数的括弧之间可以加空格
3、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是( )。
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
4、设有如下定义: char* aa[2]={"abcd", "ABCD"}; 则以下说法中正确的是( )。
A、aa数组元素的值分别是"abed"和"ABCD"
B、aa是指针变量,它指向含有两个数组元素的字符型一维数组
C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D、aa数组的两个元素中各自存放了字符'a'和'A'的地址
5、设有枚举类型定义: enum language{CPP=3, Swift, Java=100, CShape, Python};,则枚举量Python的值为( )。
A、5
B、7
C、101
D、102
6、设int a=0,b=0,c=2,d=4;则执行(c=a==b) || (d=b==a) ;后变量d的值是( )。
A、4
B、0
C、1
D、2
7、可在C程序中用作用户标识符的一组标识符是( )。
A、void define WORD
B、as_b3 123 If
C、For Gabc case
D、_2c DO SIG
8、设有枚举类型定义: enum country( America=2, China, Korea=8, Japan,Swsiss};则枚举量Swsiss的值为( )。
A、10
B、5
C、6
D、14
9、有以下程序#include <stdio.h>int main(){ int a; scanf("%d",&a); if(a++<9) printf("%d\n",a); else printf("%d\n",a--);}程序运行时从键盘输入9-回车>,则输出结果是( )。
A、11
B、10
C、9
D、8
1、试题答案:A
试题解析:
字符串常量使用双撇号("")包括,故本题选A。
2、试题答案:B
试题解析:
函数调用属于程序执行,占用运行时间,故A选项错误。宏替换是在程序编译过程中进行的,不占用运行时间,故B选项正确。宏定义与函数有本质的区别,宏定义只是替换字符,不占用存储空间,而函数有存储空间,故C选项错误。在定义宏时,宏名与带参数的括弧之间不可以加空格,故D选项错误。综上本题选B。
3、试题答案:C
试题解析:
将c的值赋给变量a、b,那么c应该在赋值运算符的右侧,故选项A、D错误。由于c的值不为0,则表达式a=c为真,故(a=c)||(b=c);出现短路评估(现象),不执行表达式(b=c),故不符题意,选项B错误。综上本题选C。
如果 &&(||) 运算符左侧的子表达式为 false(true),则不会检查右侧的表达式。因为只要有一个子表达式为 false(true),则整个表达式都为 false(true),所以再检查剩余的表达式会浪费 CPU 时间。这被称为短路评估。
4、试题答案:C
试题解析:
由下表可知,aa是指针数组,由2个指向char型数据的指针元素组成,故分别指向一维字符数组{"abcd", "ABCD"的首地址,故本题选C。
5、试题答案:D
试题解析:
枚举类型中的每一个枚举元素,C语言编译时按定义时的顺序默认它们的值为0,1,2,3,...。若人为的指定枚举元素的值,则其后的元素值顺序加1。故题中枚举量CPP, Swift, Java, CShape, Python的值分别为3,4,100,101,102,则枚举量Python的值为102,本题选D。
6、试题答案:A
试题解析:
题中表达式c=a==b可以写成c=(a==b),其中a==b为真(值为1),即c=1;那么逻辑或运算符“||”出现短路评估(现象),右侧的表达式不执行,故d的值未被改变,为4,则本题选A。
如果 &&(||) 运算符左侧的子表达式为 false(true),则不会检查右侧的表达式。因为只要有一个子表达式为 false(true),则整个表达式都为 false(true),所以再检查剩余的表达式会浪费 CPU 时间。这被称为短路评估。
7、试题答案:D
试题解析:
选项A中,void是关键字:声明函数无返回值或无参数,声明无类型指针,不是合法的标识符,故不符题意。选项B中,123的第一个字符为数字,不是合法的标识符,故不符题意。选项C中,case是关键字:开关语句分支,不是合法的标识符,故不符题意。选项D中,符合标识符命名规则,符合题意。综上本题选D。
8、试题答案:A
试题解析:
枚举类型中的每一个枚举元素,C语言编译时按定义时的顺序默认它们的值为0,1,2,3,...。若人为的指定枚举元素的值,则其后的元素值顺序加1。故题中枚举量 America, China, Korea, Japan Swsiss的值分别为2,3,8,9,10,则枚举量Swsiss 的值为10,本题选A。
9、试题答案:B
试题解析:
键盘输入9,将9赋值给变量a。则执行if(a++<9),其中a++<9:先使用a的值,9<9为假;再令a的值加1,即a=10。随后执行else子句,输出a--的值:先输入a的值10;再令a的值减1。故输出结果为10,本题选B。
自增和自减运算符,他们的作用是使变量的值增1或减1,如:
++i(在使用i之前使i的值加1,如果i的原值为3,则执行j=++i,i的值先自增为4,然后将i的值赋值给j,j的值为4)。i++(在使用i之后使i的值加1,如果i的原值为3,则执行j=i++,先将i的值赋值给j,j的值为3,然后i的值自增为4)
++i和i++的作用相当于i=i+1,但他们不同之处在于++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。
--i和i--的运算规则同上。