模拟试题9.docx
《模拟试题9.docx》由会员分享,可在线阅读,更多相关《模拟试题9.docx(32页珍藏版)》请在冰豆网上搜索。
模拟试题9
ACBDDCBCDCCBABABDCDCDDBBACDDDDBDACBABADD
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列对于线性链表的描述中正确的是
A)存储空间不一定是连续的,且各元素的存储顺序是任意的
B)存储空间不一定是连续的,且前件元素一定存储在后件元素的前面
C)存储空间必须连续,且前件元素一定存储在后件元素的前面
D)存储空间必须连续,且各元素的存储顺序是任意的
(2)栈和队列的共同点是
A)都是先进后出
B)都是先进先出
C)只允许在端点处插入和删除元素
D)没有共同点
(3)设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k相等的元素,比较次数分别是s和b,在查找不成功的情况下,s和b的关系是
A)s=bB)s>bC)s=b
(4)下列选项中不符合良好程序设计风格的是
A)源程序要文档化
B)数据说明的次序要规范化
C)避免滥用goto语句
D)模块设计要保证高耦合、高内聚
(5)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是
A)概要设计B)详细设计
C)可行性分析D)需求分析
(6)面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是
A)模拟现实世界中不同事物之间的联系
B)强调模拟现实世界中的算法而不强调概念
C)使用现实世界的概念抽象地思考问题从而自然地解决问题
D)鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
(7)数据库系统的核心是
A)数据模型B)数据库管理系统
C)软件工具D)数据库
(8)在奥运会游泳比赛中,一个游泳运动员可以参加多项比赛,一个游泳比赛项目可以有多个运动员参加,游泳运动员与游泳比赛项目两个实体之间的联系是
A)一对一B)一对多
C)多对多D)多对一
(9)在关系数据库中,用来表示实体之间联系的是
A)树结构B)网结构C)线性表D)二维表
(10)按条件f对关系R进行选择,其关系代数表达式是
A)R|×|R
B)Rf|×|R
C)σf(R)
D)πf(R)
(11)以下叙述中错误的是
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D)赋值表达式末尾加分号就构成赋值语句
(12)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
A)大写字母
B)连接符
C)数字字符
D)下划线
(13)以下不能正确计算代数式
值的C语言表达式是
A)1/3*sin(1/2)*sin(1/2)
B)sin(0.5)*sin(0.5)/3
C)pow(sin(0.5),2)/3
D)1/3.0*pow(sin(1.0/2),2)
(14)以下能正确定义且赋初值的语句是
A)intn1=n2=10;
B)charc=32;
C)floatf=f+1.1;
D)doublex=12.3E2.5;
(15)有定义语句"intx,y;"。
若要通过"scanf("%d,%d",&x,&y);"语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是
A)1112↙
B)11,12↙
C)11,12↙
D)11,↙12↙
(16)以下叙述中正确的是
A)调用printf函数时,必须要有输出项
B)使用putchar函数时,必须在之前包含头文件stdio.h
C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
(17)若x是int型变量,且有下面的程序片段:
for(x=3;x<6;x++)printf((x%2)?
("**%d"):
("##%d\n"),x);
上面程序片段的输出结果是
A)**3
##4
**5
B)##3
**4
##5
C)##3
**4##5
D)**3##4
**5
(18)有以下程序:
main()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是
A)1,1
B)2,2
C)3,3
D)4,4
(19)有以下程序
main()
{intk=5,n=0;
while(k>0)
{switch(k)
{
default:
break;
case1:
n+=k;
case2:
case3:
n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是
A)0B)4C)6D)7
(20)有以下程序
main()
{inta[]={2,4,6,8,10},y=0,x,*p;
p=&a[1];
for(x=1;x<3;x++)y+=p[x];
printf("%d\n",y);
}
程序运行后的输出结果是
A)10B)11C)14D)15
(21)下列选项中正确的语句组是
A)chars[8];s={"Beijing"}
B)char*s;s={"Beijing"}
C)chars[8];s="Beijing"
D)char*s;s="Beijing"
(22)以下不能正确定义二维数组的选项是
A)inta[2][2]={{1},{2}};
B)inta[][2]={1,2,3,4};
C)inta[2][2]={{1},2,3}
D)inta[2][]={{1,2},{3,4}}
(23)以下能正确定义一维数组的选项是
A)intnum[]
B)#defineN100
intnum[N]
C)intnum[0..100]
D)intN=100;
intnum[N]
(24)有以下程序
#include
main()
{charp[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是
A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3
C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符长度为3
D)由于p和q数组中没有字符串结束符,故长度都不能确定
(25)有以下程序
voidsum(inta[])
{a[0]=a[-1]+a[1];}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
程序运行后的输出结果是
A)6B)7C)5D)8
(26)有以下程序
inta=2;
intf(intn)
{staticinta=3;
intt=0;
if(n%2){staticinta=4;t+=a++;}
else{staticinta=5;t+=a++;}
returnt+a++;
}
main()
{ints=a,i;
for(i=0;i<3;i++)s+=f(i);
printf("%d\n",s);
}
程序运行后的输出结果是
A)26B)28C)29D)24
(27)有以下程序
typedefstruct{intb,p;}A;
voidf(Ac)/*注意:
c是结构变量名*/
{intj;
c.b+=1;c.p+=2;
}
main()
{inti;
Aa={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);
}
程序运行后的输出结果是
A)2,3B)2,4C)1,4D)1,2
(28)有以下程序
main(intargc,char*argv[])
{intn=0,i;
for(i=1;iprintf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。
若运行时输入以下命令行
tt12345678
程序运行后的输出结果是
A)12B)12345C)12345678D)136
(29)当用"#defineF37.5f"定义后,下列叙述正确的是
A)F是float型数
B)F是char型数
C)F无类型
D)F是字符串
(30)以下程序的功能是:
给r输入数据后计算半径为r的圆面积s,程序在编译时出错。
main()
/*Beginning*/
{intr;floats;
scanf("%d",&r);
s=*∏*r*r;printf("s=%f\n",s);
}
出错的原因是
A)注释语句书写位置错误
B)存放圆半径的变量r不应该定义为整型
C)输出语句中格式描述符非法
D)计算圆面积的赋值语句中使用了非法变量
(31)有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是
A)3B)6C)9D)2
(32)在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是
A)auto
B)register
C)extern
D)static
(33)设有定义:
intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是
A)*p=*q;
B)p=q;
C)*p=&n1;
D)p=*q;
(34)有以下程序段
typedefstructNODE
{intnum;structNODE*next;
}OLD;
以下叙述中正确的是
A)以上的说明形式非法
B)NODE是一个结构体类型
C)OLD是一个结构体类型
D)OLD是一个结构体变量
(35)有以下程序
structSTU
{charname[10];intnum;floatTotalScore;};
voidf(structSTU*p)
{structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;
++p;++q;*p=*q;
}
main()
{structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
f(s);
printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);
}
程序运行后的输出结果是
A)SunDan20044550
B)Penghua20045537
C)LiSiGuo20042580
D)SunDan20041703
(36)有以下程序
#include
structSTU
{charname[10];
intnum;
};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序运行后的输出结果是
A)SunDan20042
B)SunDan20044
C)LiSiGuo20042
D)YangSan20041
(37)有以下程序
voidf(intb[])
{inti;
for(i=2;i<6;i++)b[i]*=2;
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)1,2,6,8,10,12,7,8,9,10,
C)1,2,3,4,10,12,14,16,9,10,
D)1,2,6,8,10,12,14,16,9,10,
(38)以下程序的功能是进行位运算
main()
{unsignedchara,b;
a=7^3;b=~4&3;
printf("%d%d\n",a,b);
}
程序运行后的输出结果是
A)43
B)73
C)70
D)40
(39)下列关于C语言数据文件的叙述中正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(40)有以下程序
#include
main()
{FILE*fp;intk,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
close(fp);
}
程序运行后的输出结果是
A)12
B)14
C)1234
D)123456
二、填空题
请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。
(1)软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【1】。
(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有【2】个元素。
(3)设有下列二叉树:
对此二叉树中序遍历的结果为【3】。
(4)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【4】的设计方法。
(5)数据结构包括数据的【5】结构和数据的存储结构。
(6)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<回车>,则输出结果是【6】。
#include
main()
{chara,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c%c\n",a,b);
}
(7)以下程序运行后的输出结果是【7】。
main()
{inta=3,b=4,c=5,t=99;
if(bif(aprintf("%d%d%d\n",a,b,c);
}
(8)以下程序运行后输入:
3,abcde↙,则输出结果是【8】。
#include
move(char*str,intn)
{chartemp;inti;
temp=str[n-1];
for(i=n-1;i>0;i--)str[i]=str[i-1];
str[0]=temp;
}
main()
{chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++)move(s,z);
printf("%s\n",s);
}
(9)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。
请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i{x=ar[i][0];
for(j=0;j【9】=x;
}
}
(10)以下程序运行后的输出结果是【10】。
inta=5;
fun(intb)
{staticinta=10;
a+=b++;
printf("%d",a);
}
main()
{intc=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
(11)以下程序运行后的输出结果是【11】。
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
(12)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:
yes!
,否则函数返回字符串:
no!
,并在主函数中输出。
所谓回文即正向与反向的拼写都一样,例如:
adgda。
请填空。
#include
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【12】;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!
=*p2--){t=1;break;}
if(【13】)return("yes!
");
elsereturn("no!
");
}
main()
{charstr[50];
printf("Input:
");scanf("%s",str);
printf("%s\n",【14】);
}
(13)以下程序运行后的输出结果是【15】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!
=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
一、选择题
(1)A
【解析】本题考查的是线性单链表、双向链表与循环链表的结构及其基本运算。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
(2)C
【解析】栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。
二者的区别是:
栈只允许在表的一端进行插入或删除操作,是一种"后进先出"的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种"先进先出"的线性表。
(3)B
【解析】二分法查找只适用于顺序存储的有序表。
在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
设有序线性表的长度为n,被查元素为x,则二分查找的方法如下:
将x与线性表的中间项进行比较,若中间项的值等于x,则说明查到,查找结束;若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若x大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找。
这个过程一直进行到查找成功或子表长度为0(说明线性表中没有这个元素)为止。
顺序查找又称顺序搜索。
顺序查找一般是指在线性表中查找指定的元素,其基本方法如
下:
从线性表的第一个元素开始,依次将线性表中的元素与被查元素进行比较,若相等则表示找到(即查找成功);若线性表中所有的元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。
由此可见,对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
(4)D
【解析】良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此,程序设计风格对保证程序的质量很重要。
主要应注意和考虑下述一些因素:
1.源程序要文档化;2.数据说明的次序要规范化;3.语句的结构应该简单直接,不应该为提高效率而把语句复杂化,避免滥用goto语句;4.模块设计要保证低耦合、高内聚。
故本题答案为D。
(5)D
【解析】通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
软件生命周期的主要活动阶段是:
(1)可行性研究与计划制定。
确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
(2)需求分析。
对待开发软件提出的需求进行分析并给出详细定义。
编写软件规格说明书及初步的用户手册,提交评审。
(3)软件设计。
系统设计人员和程序设计人员应该在反复理解软件需求的基础上给出软件的结构、模块的划分、功能的分配以及处理流程。
(4)软件实现。
把软件设计转换成计算机可以接受的程序代码。
即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。