软件开发考测验考试模拟题答案.docx
《软件开发考测验考试模拟题答案.docx》由会员分享,可在线阅读,更多相关《软件开发考测验考试模拟题答案.docx(25页珍藏版)》请在冰豆网上搜索。
软件开发考测验考试模拟题答案
软件开发
考试试卷
(机密)
考试声明
本人已经认真阅读考试注意事项,承诺遵守考试纪律,自己不作弊、不协助他人作弊;考试后不向其他人泄漏考题内容,维护考试的机密性。
特此声明。
考生签名:
年月日
答题纸
考生信息
姓名
性别
学历
考试专业
单位
身份证号码
一、单选题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
二、多选题
1
2
3
4
5
6
7
8
9
10
三、改错题
1.
2.
3.
4.
5.
四.编程题
注:
选择题请将答案填写在答题纸上,填写在其它位置无效。
软件开发考核试卷
考试说明:
1、本次考试类型为笔试,请考生用蓝色圆珠笔或钢笔答题,不得用铅笔,用铅笔者本试卷作废;
2、本次考试时间为60分钟,共计100分;
3、试卷表面必须保持清洁,不得在试卷上作记号,一经发现取消该考生卷面成绩;
4、请将答案写在答题纸上,填写在其他位置无效。
一.单项选择题(每题2分,共计60分)
1.软件工程研究的内容包括:
()技术和软件工程管理:
D
A.软件测试B.数据分析C.动态测试D.软件开发
2.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为:
C
B.6
3.下列描述正确的是:
A
A.C语言程序中各函数之间既允许直接递归调用也允许间接递归调用
B.C语言程序中不允许直接递归调用也不允许间接递归调用
C.C语言程序中允许直接递归调用不允许间接递归调用
D.C语言程序中不允许直接递归调用允许间接递归调用
4.下面关于完全二叉树的叙述中,错误的是:
B
A.除了最后一层外,每一层上的结点数均达到最大值
B.可能缺少若干个左右叶子结点
C.完全二叉树一般不是满二叉树
D.具有结点的完全二叉树的深度为[log2n]+1
5.在软件生命周期中,能准确完成程序的编码的阶段是:
C
A.概要设计B.详细设计C.软件实现D.需求分析
6.下面程序的输出结果是:
B
#include<>
sub(x,y,z)
intx,y,*z;
{*z=y–x;}
main(){
inta,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
2,3B.–5,–12,–7C.–5,–12,–17,–2,–7
7.程序流程图(PFD)中的箭头代表的是:
B
A.数据流B.控制流C.调用关系D.组成关系
8.下面程序的输出是:
C
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
9.符合C语言语法的赋值语句的是:
D
=7+b+c=a+7=a+7
=7+b,b++,a+7;=7+b,c=a+7;
10.若运行时给变量x输入12,则以下程序的运行结果是:
B
main(){
intx,y;
scanf(“%d”,&x);
y=x>12?
x+10:
x–12;
printf(“%d\n”,y);
}
B.0
11.在C语言中,要求运算数必须是整型的运算符是:
A
A.%B./C.12.以下程序语句中
y=–1;
if(x!
=0)
if(x>0)y=1;elsey=0;
所表示的数学函数关系是:
C
–1(x<0)1(x<0)
A.y=0(x=0)
B.y=–1(x=0)
1(x>0)0(x>0)
0(x<0)–1(x<0)
C.y=–1(x=0)
D.y=1(x=0)
1(x>0)0(x>0)
13.若有以下函数定义:
C
myfun(doublea,intn)
{……}
则myfun函数值的类型是
A.void
B.double
C.int
D.char
14.软件需求分析应确定用户对软件的:
D
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求
15.C语言中main函数参数的非法表示形式是:
D
(char*argv[],intargc)
(inta,char**b)
(inty,char*x[])
(intargv,char*argc[])
16.以下的for循环:
C
for(x=0,y=0;(y!
=123)&&(x<4);x++)
A.是无限循环
B.循环次数不定
C.执行4次
D.执行3次
17.C语言规定,函数返回值的类型由:
A
A.在定义时所指定的函数类型所决定
B.调用该函数时的主调函数类型所决定
语句中的表达式类型所决定
D.调用该函数时系统临时决定
18.下面描述中,不符合结构化程序设计风格的是:
C
A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B.自顶向下
C.注重提高程序的执行效率
D.限制使用goto语句
19.以下程序中
main()
{intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
}
D
A.有语法错误不能通过编译
B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
20.执行下面程序片段的结果是:
B
intx=123;
do
{printf("=\n",x--);}
while(!
x);
A.打印出321
B.打印出123
C.不打印任何内容
D.陷入死循环
21.下述对C语言字符数组的描述中错误的是:
C
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
22.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是:
D
23.C语言提供的合法的数据类型关键字是:
B
24.以下程序的输出结果正确的是:
B
#include<>
sub(int*s,inty)
{staticintt=3;
y=s[t];t––;
}
main()
{inta[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);}
printf("\n");
}
.0000C
25.C程序中的语句:
char*func(intx,inty);它是:
C
A.对函数func的定义
B.对函数func的调用
C.对函数func的原型说明
D.不合法的
26.下列程序的运行结果是:
A
main()
{unionEXAMPLE
{struct
{intx;inty;}in;
inta;
intb;
}e;
=1;=2;
}
A.4,8,6,16,16
27.下列选项中可用于C语言用户标识符的是:
B
28.对下述程序,描述正确的是:
A
main()
{inta,b;
scanf("%d,%d",&a,&b);
if(a>b)a=b;b=a;
elsea++;b++;
printf("%d,%d",a,b);}
A.有语法错误不能通过编译
B.若输入4,5则输出5,6
C.若输入5,4则输出4,5
D.若输入5,4则输出5,5
29.下面程序的输出是:
B
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
A.8B.6C.4
30.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是:
BD
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
A.(p+5)*B.*(p+5)C.p%[5][5%]
二.多项选择题(每题2分,共计20分)
1.下列有关函数的说法中正确的是:
ABC
A.C语言中的函数只具有static和extern两种类型
B.C语言中允许函数的递归调用
C.调用函数时,C语言要求实参与形参的个数,类型完全一致
D.C语言函数的缺省数据类型是空类型(void型)
2.下面的变量说明中()是错误的:
ABD
:
a,b,c;
a;b;c;
a,b,c;
a,b,c
3.假如有以下调用语句,则正确的fun函数的首部是:
ABC
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
fun(intm,intx[])
fun(ints,inth[41])
fun(intp,int*s)
fun(intn,inta)
4.下列常量中哪些是合法的:
BCD
A.
B.
C.“basic”
D.0x4b00
5.关于if后一对圆括号中的表达式,以下叙述中错误的是:
ABC
A.只能用逻辑表达式
B.只能用关系表达式
C.既可用逻辑表达式也可用关系表达式
D.可用任意表达式
6.下列叙述中错误的是:
BCD
A.线性表是线性结构B.栈与队列是非线性结构
C.线性链表是非线性结构D.二叉树是线性结构
7.若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中正确的是:
ABD
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:
提示对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无返回值型
8.根据C语言的语法规则,下列()是合法标识符:
BCD
B.NameC.R5D._exam
9.下列关于复合语句和空语句的说法正确的是:
ABD
A.复合语句是由“{”开头,由“}”结尾的
B.复合语句在语法上视为一条语句
C.复合语句内,可以有执行语句,不可以有定义语句部分
程序中的所有语句都必须由一个分号作为结束
10.下列说法中错误的是:
ACD
A.全局变量的作用域一定比局部变量的作用域大
B.静态(static)类型变量的生存期贯穿于整个程序的运行期间
C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
三.改错题(每题2分,共计10分)
将下列程序中不正确的语句改正。
1.main()
{intk;
k=35555;
printf(“%d“,k);}
答案:
longintk;printf(“%ld“,k);}
2.main()
{intn;
floats=;
for(n=10;n>1;n--)
s=s+1/n;
printf(“%6.1f\n”,s);}
答案:
s=s+n
3.main()
{intsum,k;
sum=0;
k=1;
while(k<=100)
sum=sum+k;
k++;
printf(“sum=%d\n”,sum);}
答案:
while(k<=100)
{sum=sum+k;
k++;}
4.main()
{intk,a(8);
for(k=0;k<10;k++)
scanf(“%d”,&a(k));
......}
答案:
intk,a[8];
scanf(“%d”,&a[k]);
5.main()
{inta;
scanf(“%d”,a);
if(a=1)printf(“One\n”);}
答案:
printf("%d,",&a);if(a==1)
四.编程题(共计10分)
编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
如,输入如下整数:
234345753134436458100321135760 则输出结果为6,100。
注:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<>
#include<>
intfun(int*s,intt,int*k)
{
}
main()
{inta[10]={234,345,753,134,436,458,100,321,135,760},k;
clrscr();
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
答案
intfun(int*s,intt,int*k)
{inti;
*k=0;/*k所指的数是数组的下标值*/
for(i=0;i if(s[*k]>s[i])
*k=i;/*找到数组的最小元素,把该元素的下标赋给k所指的数*/
returns[*k];/*返回数组的最小元素*/}
模拟题:
一.单项选择题(每题2分,共计60分)
1.根据C语言的语法规则,下列()个是不合法标识符:
A
B.Name
C.Rern5
D._exam
2.属于C语言的数据类型是:
C
A.复数型B.逻辑型C.双精度型D.集合型
3.假设变量a,i已正确定义,且i已正确赋值,合法的语句是:
B
==1
B.++i;
=a++=5;
=int(i);
4.设有以下定义和语句,则*(*(p+2)+1)的值为:
D
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
B.32
5.inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为6的表达式是:
C
A.*p+6B.*(p+6)C.*p+=5+5
6.有以下程序
#include
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是:
A
30
50
50
20
7.以下说法中正确的是:
A
A.C语言程序总是从main()函数开始执行
B.在C语言程序中,要调用函数必须在main()函数中定义
C.C语言程序总是从第一个函数开始执行
语言程序中的main()函数必须放在程序的开始部分
8.Break语句的正确的用法是:
B
A.无论在任何情况下,都中断程序的执行,退出到系统下一层
B.在多重循环中,只能退出最靠近的那一层循环语句
C.跳出多重循环
D.只能修改控制变量
9.在下列程序中,没有构成死循环的是:
D
i=100;
while
(1)
{i=i0+1;
if(i>100)break;
}
(;;);
k=10000;
do{k++;}while(k>10000);
s=36;
while(s)--s;
10.设有定义:
longx=-123456L;则以下能够正确输出变量x值的语句是:
B
(“x=%d\n”,x)
(“x=%ld\n”,x)
(“x=?
l\n”,x)
(“x=%D\n”,x);
11.C语言中各种基本数据类型的存储空间长度排列为:
C
≤long≤int≤float≤double
≤float≤long≤int≤char
≤int≤long≤float≤double
≤int≤long≤char≤double
12.以下选项中,定义s为合法的结构体变量的是:
B
A.typedefstructabc
{doublea;
charb[10];
}s;
B.struct
{doublea;
charb[10];
}s;
C.structABC
{doublea;
charb[10];
}
ABCs;
D.typedefABC
{doublea;
charb[10];
}
ABCs;
13.下面程序的运行结果是:
A
#include“”
main()
{inta[]={8,2,9,4,1},*p;
p=a;
*(p+2)+=2;
printf(“%d,%d”,*p,*(p+2));}
11,16C.2,11,10
14.字符串指针变量中存入的是:
A
A.字符串的首地址。
B.字符串
C.第一个字符
D.字符串变量。
15.C语言中以只读方式打开一个文件应选择()参数:
A
A.“r”
B.“w”
C.“rb”
D.“a”
16.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是:
A
A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)
B.!
(x>=-5||x<=-1&&x<=5||x>=1)
<-5&&x>-1||x<1&&x>5
D.(x<-5)||(x>-1&&x<1)||(x>5)
17.设有数组定义:
chararray[]=”China”;则数组所占的存贮空间为:
C
个字节
B.5个字节
C.6个字节
D.7个字节
18.已知函数的调用形式:
fread(buf,size,count,fp),参数buf的含义是:
C
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
19.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:
C程序中的else总是与()组成配对关系:
C
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
20.在C语言中,int,char和short三种类型数据在内存中所占用的字节数:
D
A.由用户自己定义
B.均为2个字节
C.是任意的
D.由所用机器的机器字长决定
21.能正确表示a和b同时为正或同时为负的逻辑表达式是:
D
>=0||b>=0)&&(a<0||b<0)
B.(a>=0&&b>=0)&&(a<0&&b<0)
C.(a+b>0)&&(a+b<=0)
D.a*b>0
22.假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为:
C
23.设整型变量a为5,使b不为2的表达式是:
c
A.b=a/2
B.b=6-(--a)
C.b=a%2
=a>3?
2:
1
24.表达式“1?
(0?
3:
2):
(10?
1:
0)”的值为:
B
B.2
C.1
D.0
25.定义一个数组a是一个具有3个元素的指针数组,它的定义语句格式是:
c
A.<类型标识符>(*a)[3]
B.<类型标识符>*a[2]
C.<类型标识符>*a[3]
D.以上写法都不对。
26.表达式y=(13>12?
15:
6>7?
8:
9)的值为:
C
D.1
27.以下定义中,标识符prtint(*prt)[3]:
D
A.定义不含法
B.是一个指针数组名,每个元素都是一个指向整数变量的指针
C.是一个指针,它指向一个具有三个元素的一维数组
D.是一个指向整型变量的指针
28.若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值是:
C
B.0C.非零值
29.c语言中int型数-8在内存中的存储形式为:
a
C.0000000000001000
30.表示关系x≥y≥z,应使用C语言表达式:
A
A.(x>=y)&&(y>=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=z)&(y>=z)
二.多项选择题(每题2分,共计20分)
1.下面叙述错误的是:
ACD
A.函数调用不可以出现在表达式中
B.函数调用可以作为一个函数的实参
C.函数调用可以作为一个函数的形参
D.函数不可以直接调用其本身
2.假设以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述正确的是:
ABD
是结构体类型的关键字
stu是用户定义的结构体类型
是用户定义的结构体类型名
和b都是结构体成员名
3.下列关于字符串的说法中正确的是:
ACD
A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B.′\0′作为标志占用存储空间,计入串的实际长度
C.在表示字符串常量的时候不需要人为在其末尾加入′\0′
D.在C语言中,字符串常量隐含处理成以′\0′结尾
4.下列对数组操作正确的语句是:
abc
A.inta[5];
b[]={‘h’,’e’,’l’,’l’,’o’};
C.inta[]={2,3,4