2022年安徽大学835软件工程专业基础考研真题及辅导资料(2022年安徽大学理科录取分数线)
点击查看:2022年安徽大学835软件工程专业基础考研真题及辅导资料-【书乐学堂】
??资料列表
· 全国名校软件工程考研真题汇编
· 谭浩强《c程序设计》(第5版)笔记和课后习题详解
· 谭浩强《c程序设计》(第5版)配套题库【考研真题精选+章节题库】
??真题目录(部分)
封面
内容简介
目录
1.北京邮电大学软件工程专业综合历年考研真题
2013年北京邮电大学807软件工程专业综合考研真题
2012年北京邮电大学807软件工程专业综合考研真题
2011年北京邮电大学807软件工程专业综合考研真题
2.中国传媒大学软件工程历年考研真题
2014年中国传媒大学822软件工程考研真题
2013年中国传媒大学822软件工程考研真题
2012年中国传媒大学822软件工程考研真题
3.河北工业大学软件工程及应用[专业硕士]历年考研真题
2012年河北工业大学804软件工程及应用[专业硕士]考研真题
2011年河北工业大学804软件工程及应用[专业硕士]考研真题
4.浙江工业大学软件工程[专业硕士]历年考研真题
2014年浙江工业大学959软件工程[专业硕士]考研真题
2013年浙江工业大学959软件工程[专业硕士]考研真题
2012年浙江工业大学959软件工程[专业硕士]考研真题
2011年浙江工业大学959软件工程[专业硕士]考研真题
5.聊城大学程序设计基础与软件工程历年考研真题
2014年聊城大学820程序设计基础与软件工程考研真题
2013年聊城大学820程序设计基础与软件工程考研真题
2012年聊城大学820程序设计基础与软件工程考研真题
6.江西师范大学软件工程导论历年考研真题
2014年江西师范大学864软件工程导论考研真题
2013年江西师范大学864软件工程导论考研真题
2012年江西师范大学836软件工程导论考研真题
说明:精选了18套名校软件工程历年考研真题。
??教辅试读
第一部分 考研真题精选
一、选择题
1以下均是合法变量名的是( )。[武汉科技大学2019研]
a.#name? ?total
b.node value_max
c._var long
d.stu-code? ?a+b
【答案】b查看答案
【解析】c语言中变量名只能包含数字,字母和下划线,且只能以字母和下划线开始。a项含非法字符#,错误;c中long为关键字,变量不能以关键字命名;d中含非法字符-和+。
2以下选项中不属于c语言类型的是( )。[武汉科技大学2019研]
a.short int
b.unsigned long int
c.char
d.bool
【答案】d查看答案
【解析】c语言中没有bool型,只有c++才有boolean型,也称bool。c语言中一般用“0”表示“假”,用“1”表示“真”。
3若有声明语句:int x; char y[20];
double z; 则正确的输入语句是( )。[武汉科技大学2019研]
a.scanf(
b.scanf(
c.scanf(
d.scanf(
【答案】c查看答案
【解析】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;
【答案】b查看答案
【解析】b中首先把t的值赋值给了a,则a的值已经被取代了,后面执行b=a,则ab的值都等于t的值。
5若有定义:int a=1,b=2; float x=3,w; 则合法的switch语句是( )。[武汉科技大学2019研]
a.
switch(a){??case 1:w=a/b; break;??case 2: w=a%b; break;}
b.
switch(b){??case 1:z=a%b;??case 2: z=a/b; break;}
c.
switch(x){??case 2:w=a%b; break;??case 1:w=a/b; break;}
d.
switch(a+b);{??case 3:??case 2:w=a%b; break;}
【答案】a查看答案
【解析】b中,变量z未定义;c中x为浮点型,switch后面的表达式不能是浮点型,只能是整型和字符型;d中swith表达式后面不能加分号,答案选a。
6对下述程序段的描述正确的是( )。[武汉科技大学2019研]
scanf(if(a>b)??a=b;b=a;else??a++; b++;printf(
a.若输入4,5则输出a=5,b=6
b.若输入5,4则输出a=4,b=5
c.若输入5,4则输出a=5,b=5
d.有语法错误,不能通过编译
【答案】d查看答案
【解析】if(表达式)后面如果没有用花括号括起来,那么if的子语句只包括第一条语句,即在程序中只有a=b是属于if语句块的,if和else中间隔了一条语句b=a,编译无法通过。
7以下正确的描述是( )。[武汉科技大学2019研]
a.从多层循环嵌套中退出时,只能使用break语句
b.在循环体内使用continue和break语句,作用相同
c.只能在循环体内和switch体内使用break语句
d.continue语句的作用是结束整个循环的执行
【答案】c查看答案
【解析】从多层嵌套中退出不是只能使用break语句,也可以使用return或者程序自己执行完,a错误;在循环体内continue代表不执行该次循环中的剩余未执行语句,break代表直接跳出本层循环,bd错误,答案选c。
8如果有定义:int x=0,s=0; 则下面程序段的执行结果是( )。[武汉科技大学2019研]
while(!x!= 0)??s+=x++;printf(“%d”,s);
a.1
b.0
c.无限循环
d.控制表达式非法,无法编译
【答案】b查看答案
【解析】while后面的表达式中,首先执行!运算符,然后再执行!=运算符,第一次判断中,x=0则!x!=0满足条件,进入循环中,执行s+=x++,x++是先运算,再自加,执行完后s=0,x=1,再回到while的判断条件,判断为false,跳出循环,输出s的值为0,答案选b。
9下面各语句中,能正确进行字符串操作的语句是( )。[武汉科技大学2019研]
a.char
a[10]={
b.char a[10];?
a=
c.char *p;? *p=
d.char *s; scanf(
【答案】a查看答案
【解析】b项中,字符数组的数组名指向数组的首元素地址,初始化后不可再被更改;cd两项中的字符指针在定义时均没有进行初始化,对其赋值是非法的,答案选a。
10以下能对数组value进行正确初始化的语句是( )。[武汉科技大学2019研]
a.int value[2][]={{1,1},{2,2}};
b.int value[][3]={{1,,3},{4,5,6}};
c.int value[2][3]={1,2,3,4,5,6};
d.int value[][3]={{1},{4,6,}};
【答案】c查看答案
【解析】二维数组的定义必须指定列数,可以不用指定行数,a错误;数组value为int型数组,不能给数组里面的元素赋空值,bd错误,答案选c。
11函数fun和实参数组的声明形式为:void fun(char
ch,float x[]); float a[5];
以下对函数的调用语句中,正确的是( )。[武汉科技大学2019研]
a.fun(
b.t=fun(
c.fun(
d.fun(32,a[5]);
【答案】b查看答案
【解析】调用函数fun需要传入两个实参,第一个实参的类型是char字符型,第二个实参的类型是float数组型,只有选项b满足条件。其中c项本身有语法错误,d项在传递数组时只需要数组名即可。
12设有定义int a[3][3];和函数调用语句sort(a,3); 则正确的函数声明是( )。[武汉科技大学2019研]
a.void sort(int a,n);
b.void sort(int a[][],int n);
c.void sort(int a[][3],int n);
d.void sort(int a[][3],n);
【答案】c查看答案
【解析】根据函数调用语句可以知道sort函数有两个参数,第一个参数的类型是一个二维int型数组,第二个参数是一个int型数据,所以a错误;b中因为二维数组一定要指定列数,b错误;d中形参n没有指定数据类型,错误;答案选c。
13有函数定义:int func(int *p),x和y是int型变量,则正确的调用是( )。[武汉科技大学2019研]
a.y=func(x);
b.func(x);
c.func()=x;
d.y=func(&x);
【答案】d查看答案
【解析】根据func函数的定义可以知道调用func函数需要传入一个指针,且该指针的指向类型是int型,只有d传入的是指向int型数据的指针,答案选d。
14已知书籍结构定义如下,则对结构变量bk的正确赋值是( )。[武汉科技大学2019研]
struct book{??struct??{????int year,month,day;??}publish;}bk;
a.bk.year=1998;?
bk.month=11;? bk.day=11;
b.publish.year=1998;? publish.month=11;
?publish.day=11;
c.year=1998;?
month=11;? day=11;
d.bk.publish.year=1998;?
bk.publish.month=11;? bk.publish.day=11;
【答案】d查看答案
【解析】变量bk是结构体book的一个结构体变量,该变量含有一个成员变量publish,publish也是一个结构体变量,该结构变量含三个成员变量,分别是year、month、day,结构体变量中的成员变量不可直接访问,必须以结构体变量名.成员变量名形式访问,所以只能通过bk.publish.year形式访问到最内层的变量并为其赋值,答案选d。
15对于以下定义,能打印出字母h的语句是( )。[武汉科技大学2019研]
struct person{
char title[20];? int code;};
struct person
book[5]={
a.printf(
b.printf(
c.printf(
d.printf(
【答案】a查看答案
【解析】person是一个自定义结构体类型,该结构体含有两个成员变量,分别是一个字符数组和一个int数据,bc选项打印出来的是;d选项打印出来的是y,只有a打印出来的是h,答案选a。
16与十进制1100等值的十六进制数是( )。[华南理工大学2018研]
a.44a
b.44c
c.54a
d.54c
【答案】b查看答案
【解析】1100转换成二进制为0100 0100 1100,因此转换为十六进制为44c。
17设int a=3;,下列哪一个表达式的值等于0( )。[华南理工大学2018研]
a.a&&(a>0)
b.!a||a
c.a%=a
d.a>=a
【答案】c查看答案
【解析】a中a!=0且a>0所以表达式的值为1;b中||表示或,所以值也为1;d中表达式值也为1;答案选c。
18在c语言中,当函数的返回值缺省时,表示该函数返回值的类型是( )。[华南理工大学2018研]
a.char
b.float
c.long
d.int
【答案】d查看答案
【解析】在c语言中,当函数的返回值缺省时,函数返回值的类型默认为int型。
19十六进制形式输出整数的格式说明符是( )。[华南理工大学2018研]
a.%u
b.%ld
c.%x
d.%o
【答案】c查看答案
【解析】a表示输出的是无符号整型;b表示输出的是有符号长整型;d表示输出的是八进制。
20若有说明:int *p,m=5,n;,以下正确的程序段是( )。[华南理工大学2018研]
a.
p=&n;??scanf(
b.
p=&n;??scanf(
c.
scanf(??p=n
d.
p=&n;??*p=n;
【答案】d查看答案
【解析】scanf语句中第二个参数应该是变量的地址,ab错误;c中p为指针变量,不可以直接把一个int型变量赋值给指针型,c错误;答案选d。
21两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是( )。[华南理工大学2018研]
void main(void){??int x;??scanf(“%d”,&x);??if(x++>5) printf(“%d”,x);??else printf(“%d\n”,x–);}
a.7和5
b.6和3
c.7和4
d.6和4
【答案】a查看答案
【解析】当输入6时,判断x++>5为真,进入if语句块,此时x=7,输出7;当输入4时,进入else语句块,此时x=5,然后因为–是先运算后自减,所以先输出5,后x的值为4,答案选a。
22以下叙述中不正确的是( )。[华南理工大学2018研]
a.在不同的函数中可以使用相同名字的变量
b.函数中的形式参数是局部变量
c.在一个函数内定义的变量只能在本函数范围内有效
d.在一个函数的复合语句中定义的变量在本函数范围内有效
【答案】d查看答案
【解析】在一个函数的复合语句中定义的变量只在该复合语句中有效。
23设有下列程序
ff( ){??int c=9;??static int a=1, b=4;??if (b == 4)????{a+=c; b++;}??else????{a+= c; b– ;}??printf (“a=%d,b=%d\n”, a, b);}main ( ){ ff( ); ff( ); }
则该程序执行后,显示的结果为( )。[华南理工大学2018研]
a.a=10,b=5
a=19,b=5
b.a=10,b=4
a=19,b=5
c.a=10,b=4
a=19,b=4
d.a=10,b=5
a=19,b=4
【答案】d查看答案
【解析】第一次调用ff()时,c=9,a=1,b=4,程序进入if语句块,执行完后a=10,b=5;第二次调用ff(),因为a、b是静态变量,所以a、b的值不会重新初始化,所以进入else语句块,执行完后a=19,b=4,答案选d。
24以下数组定义中不正确的是( )。[华南理工大学2018研]
a.int a[2][3];
b.int b[][3] = {0};
c.int c[100][100] = {0};
d.int d[3][] = {{1}, {1, 2,
3},{1}};
【答案】d查看答案
【解析】定义二维数组时一定要指定数组的列数,可以不指定数组的行数,d错误。
25若有定义:int *p,*s,c;,且各变量已正确赋值,则非法的赋值表达式是( )。[华南理工大学2018研]
a.p = s
b.c = *s
c.*s = &p
d.p = &c
【答案】c查看答案
【解析】c中p为指针变量,则&p表示的是指针的地址,若要赋值,则左边变量应该是一个二级指针,而*s代表的是s所指向地址的变量值,这个变量是一个int型,显然不正确。
26若有以下说明:
int
w[3][4]={{0,1},{2,4},{5,8}};
int (*p)[4]=w;
则数值为4的表达式是( )。[华南理工大学2018研]
a.*w[1]+1
b.p++,*(p+1)
c.w[2][2]
d.p[1][1]
【答案】d查看答案
【解析】a中*w[1]表示的的是数值2,则表达式的值为3,错误;b中p+1表示指向二位数组第二行的首元素地址,而*(p+1)代表的是第三行首元素值,b错误;c中表示的是数值0,答案选d。
27下列函数的功能是( )。[华南理工大学2018研]
int fun1(char *x){??char *y=x;??while(* y++);??return (y-x-1);}
a.求字符串的长度
b.比较两个字符串的大小
c.将字符串x复制到字符串y
d.将字符串x连接到字符串y后
【答案】a查看答案
【解析】while后面的表达式是指针依次遍历直到碰到\0,此时y指向字符串最后一个元素的后一个位置,但是由于y++,因此y会继续后移一位,而x指向字符串的头部,后面的y-x-1显然是用于计算字符串的长度。
28feof函数用来判断文件是否结束,如果文件没有结束,则返回值是( )。[华南理工大学2018研]
a.-1
b.0
c.1
d.eof
【答案】b查看答案
【解析】此题考查feof函数的定义与作用。
29设有说明:file *fp; char *filename =
对于fp=fopen(filename,语句,下面说法正确的是( )。[华南理工大学2018研]
a.打开名为filename的文件读写
b.打开名为paper的文件读写
c.打开名为filename的文件只读
d.打开名为paper的文件只读
【答案】b查看答案
【解析】filename只是一个字符指针变量的名字,不是文件的名字ac错误;rb+表示打开二进制文件,且该文件可以读写,答案选b。
30若变量a,b,c的取值分别是1,2,3,则表达式“!((b+c)>(a+4))”的值是( )。[北京航空航天大学2018研]
a.0
b.1
c.2
d.3
【答案】b查看答案
【解析】首先b+c等于5,a+4也等于5,因此(b+c)>(a+4)为“假”,即0,对0取非结果为1,因此答案为b。
31以下关于循环语句的叙述中,正确的是( )。[北京航空航天大学2018研]
a.for循环语句的三个部分必须都要有表达式
b.while循环语句的循环体内至少要有一条语句
c.do…while循环语句的循环体至少会被执行一次
d.continue语句可以退出包含它的整个循环体
【答案】c查看答案
【解析】for循环的三个表达式都可以省略,但是之间的分号不能省略,同时要有退出循环的机制,因此a项错误;while循环语句的循环体内可以为空,并不违反相应语法,只不过循环什么也不执行,因此b项错误;continue语句只是不执行本次循环的剩余语句,而并非退出整个循环,因此d项错误,答案选c。
32对于下列代码:
switch(option){??case ??case ??case ??break;}
若option的取值为,则该代码段的输出结果是( )。[北京航空航天大学2018研]
a.welcome
b.welcome bye
c.hello welcome bye
d.以上结果都不对
【答案】b查看答案
【解析】由于option为,所以首先应该输出welcome,但是由于该语句后面没有break语句来终止选择语句switch,因此会继续执行下面的语句,直到遇上break,所以最后输出welcome bye,答案为b。
33若有以下变量的声明语句:
int
i=1,a[]={0,2,4},*b;
b=&i;
则下列选项中,其结果与表达式“*(a+1)”相等的是( )。[北京航空航天大学2018研]
a.a[0]
b.*a+i
c.*(a+b)
d.*(a+*b)
【答案】d查看答案
【解析】a指向数组的首元素,因此*(a+1)表示取数组第二个元素的值,为2。a项,a[0]=0,不相等;b项,*a为数组第一个元素的值为0,再加上i=1,因此结果为1,不相等;c项,a和b都是指针,相加没有意义,错误;d项,*b的值i的值,即1,*(a+1)表示取数组第二个元素的值为2,相等,因此答案选d。
34若已知有如下宏定义
#define?
canberra(x,y)? ((x-y)/(x+y))
则以下表达式中,返回结果值最大的是( )。[北京航空航天大学2018研]
a.canberra(3.0,2.0);
b.canberra(4.0,1.0);
c.canberra(1.0+2.0,0.0+2.0);
d.canberra(1.0+2.0,1.0+1.0);
【答案】c查看答案
【解析】a项中为1.0/5.0,结果为0.2;b项中为3.0/5.0,结果为0.6;c项中的宏替换后为(1.0+2.0-0.0+2.0)/(1.0+2.0+0+2.0)=1.0;d项中宏替换后为(1.0+2.0-1.0+1.0)/(1.0+2.0+1.0+1.0)=0.6,因此最后答案为c。
35对于以下c程序,其正确的是( )。[北京航空航天大学2018研]
#include<stdio.h>int main(){??char str1[]=??char str2[]=??if(str1==str2)????printf(??else????printf(??return 0;}
a.unequal
b.equal
c.该程序无法通过编译
d.该程序运行时出错
【答案】a查看答案
【解析】首先该程序符合语法规则,因此不会编译时产生错误,其次字符数组str1和str2都为指针常量,将他们直接用关系运算符进行比较肯定是不相等的,但是它们所指的字符串是相等的,因此最后输出unequal。
36已知有以下sample.c程序的定义:
/*sample.c*/#include<stdio.h>int main(int argc,char *argv[]){??printf(??return 0;}
将该程序编译成可执行文件sample后,若在命令行下输入如下命令:
sample? january?
february? march
则该命令正确的输出是( )。[北京航空航天大学2018研]
a.j
b.a
c.f
d.e
【答案】d查看答案
【解析】根据命令行的输入可知,四个字符串赋给相应的指针数组,所以argv[2]表示第三个字符串february,再进行++操作,指针指向字符串的第二个字符e,最后进行取值操作,结果为e,答案为d。
37以下程序运行后的输出结果是( )。[中央财经大学2018研]
int main(){??double d;??float f;??long l;??int i;??i=f=l=d=20/3;??printf(??return 0;}
a.6 6 6.0 6.0
b.6 6 6.7 6.7
c.6 6 6.0 6.7
d.6 6 6.7 6.0
【答案】c查看答案
【解析】赋值运算符是自右向左结合的,所以首先执行d=20/3=6,同时i、l、f也全为6,在进行输出时,f和d要保留一位小数,所以答案选c。
38若有定义和语句:char
s[10];s=,则结果是( )。[中央财经大学2018研]
a.输出abcd@#$
b.输出a
c.输出abcd
d.编译不通过
【答案】d查看答案
【解析】在定义一维字符数组时,s为数组名,指向数组首元素的地址,为地址常量,不可更改,因此语句s=是非法的,编译不会通过。
39以下叙述错误的是( )。[中央财经大学2018研]
a.在程序中凡是以“#”开始的语句行都是预处理命令行
b.预处理命令行的最后不能以分号表示结束
c.#include max是合法的宏定义命令行
d.c程序对预处理命令行的处理是在程序执行的过程中进行的
【答案】d查看答案
【解析】在c语言中,凡是以“#”开头的行都称为编译预处理命令行,为了区别c语句,后面是不加分号的。编译预处理是在编译程序对c源程序进行编译前执行的,而不是在程序执行过程中进行的。
40若有如下宏定义:
#define?
n? 2
#define?
y(n)? ((n+1)*n)
则执行下列语句:z=4*(n+y(5));后的结果是( )。[中央财经大学2018研]
a.语句有错误
b.z值为68
c.z值为60
d.z值为180
【答案】b查看答案
【解析】y(5)=15,z=4*(n+y(5))=4*17=68,答案选b。
41有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是( )。[中央财经大学2018研]
a.*p+9
b.*(p+8)
c.*p+=9
d.p+8
【答案】b查看答案
【解析】a中*p=1,*p+9=10,a错误。c中*p得到的是一个常量,常量不可以被赋值,c错误。d中p是地址,p+8仍然表示一个地址。因此b项正确,p+8指向元素9,进行取值得9。
42若有以下说明和语句:
struct worker{??int no;??char *name;}work,*p=&work;
则以下引用方式不正确的是( )。[中央财经大学2018研]
a.work.no
b.(*p).no
c.p->no
d.work->no
【答案】d查看答案
【解析】结构体变量访问成员变量的引用方式采用“.”,而结构体指针采用“->”,因此ac是正确的,b项中*p表示结构体变量,因此可以用“.”,所以答案选择d。
43以下不合法的用户标识符是( )。[四川大学2017研]
a.j2_key
b.double
c.4d
d._8_
【答案】c查看答案
【解析】标识符只能包含数字,字母,下划线,且不能以数字开头,选项c错误。
44算法具有五个特性,以下选项中不属于算法特征性的是( )。[四川大学2017研]
a.有穷性
b.简洁性
c.可行性
d.确定性
【答案】b查看答案
【解析】一个算法应该具有五个重要特征:①有穷性;②确切性;③输入性;④输出性;⑤可行性。因此简洁性并不属于算法特征。
45已定义如下函数:
fun(int *p)
{return *p;}
该函数的返回值是( )。[四川大学2017研]
a.不确定的值
b.形参p中存放的值
c.形参p所指存储单元中的值
d.形参p的地址值
【答案】c查看答案
【解析】p是一个指向int型的指针变量,*p表示的是p所指向内存存放的变量,是一个int型,所以return *p表示返回p所指存储单元中的值,答案选c。
46在c语言中,形参的缺省存储类型是( )。[四川大学2017研]
a.auto
b.register
c.static
d.extern
【答案】a查看答案
【解析】形参是局部变量,缺省类型为auto型。
47语句:printf(的输出结果是( )。[四川大学2017研]
a.无输出
b.结果不确定
c.-1
d.1
【答案】d查看答案
【解析】a=2为真,b=-2也为真,所以输出1,答案选d。
——资料来源:【书乐学堂】
发表评论