软件开发考测验考试模拟题答案文档格式.docx
《软件开发考测验考试模拟题答案文档格式.docx》由会员分享,可在线阅读,更多相关《软件开发考测验考试模拟题答案文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
1.软件工程研究的内容包括:
()技术和软件工程管理:
D
A.软件测试B.数据分析C.动态测试D.软件开发
2.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;
一个double型数据在内存中所占的字节数为:
C
A.32B.6C.8D.16
3.下列描述正确的是:
A
A.C语言程序中各函数之间既允许直接递归调用也允许间接递归调用
B.C语言程序中不允许直接递归调用也不允许间接递归调用
C.C语言程序中允许直接递归调用不允许间接递归调用
D.C语言程序中不允许直接递归调用允许间接递归调用
4.下面关于完全二叉树的叙述中,错误的是:
B
A.除了最后一层外,每一层上的结点数均达到最大值
B.可能缺少若干个左右叶子结点
C.完全二叉树一般不是满二叉树
D.具有结点的完全二叉树的深度为[log2n]+1
5.在软件生命周期中,能准确完成程序的编码的阶段是:
A.概要设计B.详细设计C.软件实现D.需求分析
6.下面程序的输出结果是:
#include<
stdio.h>
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);
A.5,2,3B.–5,–12,–7C.–5,–12,–17D.5,–2,–7
7.程序流程图(PFD)中的箭头代表的是:
A.数据流B.控制流C.调用关系D.组成关系
8.下面程序的输出是:
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"
AA"
"
BB"
CC"
DD"
};
%s%s%s\n"
aa[em1],aa[em2],aa[em3]);
A.DCBBCDB.BBDDCCC.DDBBCCD.DBDBCC
9.符合C语言语法的赋值语句的是:
D
A.a=7+b+c=a+7B.a=a+7
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
10.若运行时给变量x输入12,则以下程序的运行结果是:
intx,y;
scanf(“%d”,&
x);
y=x>
12?
x+10:
x–12;
printf(“%d\n”,y);
A.2B.0C.8D.10
11.在C语言中,要求运算数必须是整型的运算符是:
A.%B./C.<
D.!
12.以下程序语句中
y=–1;
if(x!
=0)
if(x>
0)y=1;
elsey=0;
所表示的数学函数关系是:
–1(x<
0)1(x<
0)
A.y=0(x=0)
B.y=–1(x=0)
1(x>
0)0(x>
0(x<
0)–1(x<
C.y=–1(x=0)
D.y=1(x=0)
13.若有以下函数定义:
myfun(doublea,intn)
{……}
则myfun函数值的类型是
A.void
B.double
C.int
D.char
14.软件需求分析应确定用户对软件的:
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求
15.C语言中main函数参数的非法表示形式是:
A.main(char*argv[],intargc)
B.main(inta,char**b)
C.main(inty,char*x[])
D.main(intargv,char*argc[])
16.以下的for循环:
for(x=0,y=0;
(y!
=123)&
&
(x<
4);
x++)
A.是无限循环
B.循环次数不定
C.执行4次
D.执行3次
17.C语言规定,函数返回值的类型由:
A.在定义时所指定的函数类型所决定
B.调用该函数时的主调函数类型所决定
C.return语句中的表达式类型所决定
D.调用该函数时系统临时决定
18.下面描述中,不符合结构化程序设计风格的是:
A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B.自顶向下
C.注重提高程序的执行效率
D.限制使用goto语句
19.以下程序中
main()
{intx=3,y=0,z=0;
if(x=y+z)printf("
****"
);
elseprintf("
####"
A.有语法错误不能通过编译
B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
20.执行下面程序片段的结果是:
intx=123;
do
{printf("
=\n"
x--);
while(!
A.打印出321
B.打印出123
C.不打印任何内容
D.陷入死循环
21.下述对C语言字符数组的描述中错误的是:
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
22.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是:
D
A.acbed
B.decab
C.deabc
D.cedba
23.C语言提供的合法的数据类型关键字是:
A.DoubleB.floatC.integerD.Char
24.以下程序的输出结果正确的是:
sub(int*s,inty)
{staticintt=3;
y=s[t];
t––;
{inta[]={1,2,3,4},i,x=0;
for(i=0;
i<
4;
i++){
sub(a,x);
%d"
x);
}
\n"
A.1234B.0000C.4321D.4444
25.C程序中的语句:
char*func(intx,inty);
它是:
A.对函数func的定义
B.对函数func的调用
C.对函数func的原型说明
D.不合法的
26.下列程序的运行结果是:
{unionEXAMPLE
{struct
{intx;
inty;
}in;
inta;
intb;
}e;
e.a=1;
e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
%d,%d\n"
e.in.x,e.in.y);
A.4,8B.2,6C.8,16D.12,16
27.下列选项中可用于C语言用户标识符的是:
B
A.voiddefineword
B.a3_b3_123Car
C.For-abcIFCase
D.2aDOsizeof
28.对下述程序,描述正确的是:
main()
{inta,b;
scanf("
%d,%d"
&
a,&
if(a>
b)a=b;
b=a;
elsea++;
b++;
a,b);
B.若输入4,5则输出5,6
C.若输入5,4则输出4,5
D.若输入5,4则输出5,5
29.下面程序的输出是:
{intarr[10],i,k=0;
10;
i++)
arr[i]=i;
for(i=1;
k+=arr[i]+i;
%d\n"
k);
A.8B.6C.4D.12
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]D.p[5%]
二.多项选择题(每题2分,共计20分)
1.下列有关函数的说法中正确的是:
ABC
A.C语言中的函数只具有static和extern两种类型
B.C语言中允许函数的递归调用
C.调用函数时,C语言要求实参与形参的个数,类型完全一致
D.C语言函数的缺省数据类型是空类型(void型)
2.下面的变量说明中()是错误的:
ABD
A.char:
a,b,c;
B.chara;
b;
c;
C.chara,b,c;
D.chara,b,c
3.假如有以下调用语句,则正确的fun函数的首部是:
ABC
main()
{…
inta[50],n;
…
fun(n,&
a[9]);
}
A.voidfun(intm,intx[])
B.voidfun(ints,inth[41])
C.voidfun(intp,int*s)
D.voidfun(intn,inta)
4.下列常量中哪些是合法的:
BCD
A.2e32.6
B.0.2e-5
C.“basic”
D.0x4b00
5.关于if后一对圆括号中的表达式,以下叙述中错误的是:
A.只能用逻辑表达式
B.只能用关系表达式
C.既可用逻辑表达式也可用关系表达式
D.可用任意表达式
6.下列叙述中错误的是:
A.线性表是线性结构B.栈与队列是非线性结构
C.线性链表是非线性结构D.二叉树是线性结构
7.若有以下程序
#include
voidf(intn);
{voidf(intn);
f(5);
voidf(intn)
%d\n"
n);
}
则以下叙述中正确的是:
ABD
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:
提示对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无返回值型
8.根据C语言的语法规则,下列()是合法标识符:
A.doB.NameC.R5D._exam
9.下列关于复合语句和空语句的说法正确的是:
A.复合语句是由“{”开头,由“}”结尾的
B.复合语句在语法上视为一条语句
C.复合语句内,可以有执行语句,不可以有定义语句部分
D.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=1.0;
for(n=10;
n>
1;
n--)
s=s+1/n;
printf(“%6.1f\n”,s);
s=s+1.0/n
3.main()
{intsum,k;
sum=0;
k=1;
while(k<
=100)
sum=sum+k;
k++;
printf(“sum=%d\n”,sum);
{sum=sum+k;
4.main()
{intk,a(8);
for(k=0;
k<
10;
k++)
scanf(“%d”,&
a(k));
......}
intk,a[8];
a[k]);
5.main()
{inta;
scanf(“%d”,a);
if(a=1)printf(“One\n”);
%d,"
if(a==1)
四.编程题(共计10分)
编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
如,输入如下整数:
234345753134436458100321135760 则输出结果为6,100。
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<
conio.h>
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]);
答案
{inti;
*k=0;
/*k所指的数是数组的下标值*/
for(i=0;
t;
if(s[*k]>
s[i])
*k=i;
/*找到数组的最小元素,把该元素的下标赋给k所指的数*/
returns[*k];
/*返回数组的最小元素*/}
模拟题:
一.单项选择题(每题2分,共计60分)
1.根据C语言的语法规则,下列()个是不合法标识符:
A.While
B.Name
C.Rern5
D._exam
2.属于C语言的数据类型是:
A.复数型B.逻辑型C.双精度型D.集合型
3.假设变量a,i已正确定义,且i已正确赋值,合法的语句是:
A.a==1
B.++i;
C.a=a++=5;
D.a=int(i);
4.设有以下定义和语句,则*(*(p+2)+1)的值为:
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
A.16B.32C.64D.60
5.inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为6的表达式是:
A.*p+6B.*(p+6)C.*p+=5D.p+5
6.有以下程序
{FILE*fp;
inti=20,j=30,k,n;
fp=fopen("
d1.dat"
w"
);
fprintf(fp,"
i);
j);
fclose(fp);
r"
fscanf(fp,"
%d%d"
,&
k,&
n);
printf("
%d%d\n"
k,n);
程序运行后的输出结果是:
A
A.2030
B.2050
C.3050
D.3020
7.以下说法中正确的是:
A.C语言程序总是从main()函数开始执行
B.在C语言程序中,要调用函数必须在main()函数中定义
C.C语言程序总是从第一个函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
8.Break语句的正确的用法是:
A.无论在任何情况下,都中断程序的执行,退出到系统下一层
B.在多重循环中,只能退出最靠近的那一层循环语句
C.跳出多重循环
D.只能修改控制变量
9.在下列程序中,没有构成死循环的是:
A.inti=100;
while
(1)
{i=i0+1;
if(i>
100)break;
B.for(;
;
C.intk=10000;
do{k++;
}while(k>
10000);
D.ints=36;
while(s)--s;
10.设有定义:
longx=-123456L;
则以下能够正确输出变量x值的语句是:
A.printf(“x=%d\n”,x)
B.printf(“x=%ld\n”,x)
C.printf(“x=?
l\n”,x)
D.printf(“x=%D\n”,x);
11.C语言中各种基本数据类型的存储空间长度排列为:
A.char≤long≤int≤float≤double
B.double≤float≤long≤int≤char
C.char≤int≤long≤float≤double
D.float≤int≤long≤char≤double
12.以下选项中,定义s为合法的结构体变量的是:
A.typedefstructabc
{doublea;
charb[10];
}s;
B.struct
C.structABC
ABCs;
D.typedefABC
13.下面程序的运行结果是:
#include“stdio.h”
{inta[]={8,2,9,4,1},*p;
*(p+2)+=2;
printf(“%d,%d”,*p,*(p+2));
A.8,11B.9,16C.2,11D.8,10
14.字符串指针变量中存入的是:
A.字符串的首地址。
B.字符串
C.第一个字符
D.字符串变量。
15.C语言中以只读方式打开一个文件应选择()参数:
A.“r”
B.“w”
C.“rb”
D.“a”
16.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是:
A.(x>
=-5)||(x<
=-1)&
=5)&
(x>
=1)
B.!
=-5||x<
=-1&
x<
=5||x>
C.x<
-5&
x>
-1||x<
1&
D.(x<
-5)||(x>
-1&
1)||(x>
5)
17.设有数组定义:
chararray[]=”China”;
则数组所占的存贮空间为:
A.4个字节
B.5个字节
C.6个字节
D.7个字节
18.已知函数的调用形式:
fread(buf,size,count,fp),参数buf的含义是:
C
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
19.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:
C程序中的else总是与()组成配对关系:
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
20.在C语言中,int,char和short三种类型数据在内存中所占用的字节数:
A.由用户自己定义
B.均为2个字节
C.是任意的
D.由所用机器的机器字长决定
21.能正确表示a和b同时为正或同时为负的逻辑表达式是:
A.a>
=0||b>
=0)&
(a<
0||b<
B.(a>
=0&
b>
0&
b<
C.(a+b>
0)&
(a+b<
D.a*b>
22.假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为:
A.17
B.16
C.15
D.14
23.设整型变量a为5,使b不为2的表达式是:
c
A.b=a/2
B.b=6-(--a)
C.b=a%2
D.b=a>
3?
2:
24.表达式“1?
(0?
3:
2):
(10?
1:
0)”的值为:
A.3
B.2
C.1
D.0
25.定义一个数组a是一个具有3个元素的指针数组,它的定义语句格式是:
c
A.<
类型标识符>
(*a)[3]
B.<
*a[2]
C.<
*a[3]
D.以上写法都不对。
26.表达式y=(13>
15:
6>
7?
8:
9)的值为:
A.9
B.8
D.1
27.以下定义中,标识符prtint(*prt)[3]:
A.定义不含法
B.是一个指针数组名,每个元素都是一个指向整数变量的指针
C.是一个指针,它指向一个具有三个元素的一维数组
D.是一个指向整型变量的指针
28.若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(fp)的返