计算机类考研谭浩强《C程序设计》考研配套考研真题.doc
计算机类考研谭浩强《C程序设计》考研配套考研真题
第一部分考研真题精选
一、选择题
1以下均是合法变量名的是()。[武汉科技大学2019研]
A.#name??total
B.nodevalue_max
C._varlong
D.stu-code??a+b
【答案】BXXXX
【解析】C语言中变量名只能包含数字,字母和下划线,且只能以字母和下划线开始。A项含非法字符#,错误;C中long为关键字,变量不能以关键字命名;D中含非法字符-和+。
2以下选项中不属于C语言类型的是()。[武汉科技大学2019研]
A.shortint
B.unsignedlongint
C.char
D.bool
【答案】DXXXX
【解析】C语言中没有bool型,只有C++才有boolean型,也称bool。C语言中一般用“0”表示“假”,用“1”表示“真”。
3若有声明语句:intx;chary[20];doublez;则正确的输入语句是()。[武汉科技大学2019研]
A.scanf(%d%c%le\n,x,y,z);
B.scanf(%2d%s%lf,x,y,z);
C.scanf(%d%s%lf,x,y,z);
D.scanf(%x%s%3.2f,x,y,z);
【答案】CXXXX
【解析】y为一维数组名,指向数组首元素的地址,因此不需要再使用取地址运算符,AB错误;D中%3.2f表示长度为3,小数为2位,但是小数点也占一位,因此D错误,答案选C。
4若a、b和t都为int变量,则下面不能交换变量a和b值的是()。[武汉科技大学2019研]
A.t=a;a=b;b=t;
B.a=t;t=b;b=a;
C.t=b;b=a;a=t;
D.a=a+b;b=a-b;a=a-b;
【答案】BXXXX
【解析】B中首先把t的值赋值给了a,则a的值已经被取代了,后面执行b=a,则ab的值都等于t的值。
5若有定义:inta=1,b=2;floatx=3,w;则合法的switch语句是()。[武汉科技大学2019研]
A.
switch(a){??case1:w=a/b;break;??case2:w=a%b;break;}
B.
switch(b){??case1:z=a%b;??case2:z=a/b;break;}
C.
switch(x){??case2:w=a%b;break;??case1:w=a/b;break;}
D.
switch(a+b);{??case3:??case2:w=a%b;break;}
【答案】AXXXX
【解析】B中,变量z未定义;C中x为浮点型,switch后面的表达式不能是浮点型,只能是整型和字符型;D中swith表达式后面不能加分号,答案选A。
6对下述程序段的描述正确的是()。[武汉科技大学2019研]
scanf(%d,%d,a,b);if(ab)??a=b;b=a;else??a++;b++;printf(a=%d,b=%d,a,b);
A.若输入4,5则输出a=5,b=6
B.若输入5,4则输出a=4,b=5
C.若输入5,4则输出a=5,b=5
D.有语法错误,不能通过编译
【答案】DXXXX
【解析】if(表达式)后面如果没有用花括号括起来,那么if的子语句只包括第一条语句,即在程序中只有a=b是属于if语句块的,if和else中间隔了一条语句b=a,编译无法通过。
7以下正确的描述是()。[武汉科技大学2019研]
A.从多层循环嵌套中退出时,只能使用break语句
B.在循环体内使用continue和break语句,作用相同
C.只能在循环体内和switch体内使用break语句
D.continue语句的作用是结束整个循环的执行
【答案】CXXXX
【解析】从多层嵌套中退出不是只能使用break语句,也可以使用return或者程序自己执行完,A错误;在循环体内continue代表不执行该次循环中的剩余未执行语句,break代表直接跳出本层循环,BD错误,答案选C。
8如果有定义:intx=0,s=0;则下面程序段的执行结果是()。[武汉科技大学2019研]
while(!x!=0)??s+=x++;printf(“%d”,s);
A.1
B.0
C.无限循环
D.控制表达式非法,无法编译
【答案】BXXXX
【解析】while后面的表达式中,首先执行!运算符,然后再执行!=运算符,第一次判断中,x=0则!x!=0满足条件,进入循环中,执行s+=x++,x++是先运算,再自加,执行完后s=0,x=1,再回到while的判断条件,判断为false,跳出循环,输出s的值为0,答