未来教育题库第6套试题及答案详解文档格式.docx
- 文档编号:16317879
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:18
- 大小:37.56KB
未来教育题库第6套试题及答案详解文档格式.docx
《未来教育题库第6套试题及答案详解文档格式.docx》由会员分享,可在线阅读,更多相关《未来教育题库第6套试题及答案详解文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
A)在需求分析阶段建立数据字典
B)在概念设计阶段建立数据字典
C)在逻辑设计阶段建立数据字典
D)在物理设计阶段建立数据字典
【解析】数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
数据库系统的三级模式不包括( )。
A)概念模式
B)内模式
C)外模式
D)数据模式
【解析】数据库系统的三级模式是概念模式、外模式和内模式,所以选择D)。
有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
A)自然连接
B)并
C)交
D)差
【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可以判断R和S做的是自然连接操作。
下列选项中属于面向对象设计方法主要特征的是( )。
A)继承
B)自顶向下
C)模块化
D)逐步求精
【解析】面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择A)。
以下叙述中正确的是( )。
A)C语言程序将从源程序中第一个函数开始执行
B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束
D)main作为用户标识符,用以命名任意一个函数作为主函数
【解析】一个C语言源程序至少包含一个main函数。
无论main函数在程序中的位置如何,它都是C语言程序的主函数,是程序执行的入口和出口。
下列是用户自定义标识符的是( )。
A) w1
B)3 xy
C)int
D)LINE-3
【解析】C语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项B),D)是错的;
此外,C语言不允许用户将关键字作为标识符,而选项C)选项项中的int是C语言的关键字。
执行以下程序时输入1234567<
CR>
,则输出结果是( )。
#include<
stdio.h>
main(){inta=1,b;
scanf("
%3d%2d"
,&
a,&
b);
printf("
%d%d\n"
,a,b);
}
A)12367
B)12346
C)12312
D)12345
【解析】scanf函数中的格式控制说明为"
,分别选中输入中的三位和两位,因此a=123,b=45。
因此正确答案为D)选项。
以下选项中,不能作为合法常量的是( )。
A)1.234e05
B)1.234e+5
C)1.234e0.5
D)1.234e0
【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项C)中,e(E)后面的指数是小数,所以不合法。
有以下程序,其中%u表示按无符号整数输出
main(){unsignedintx=0xFFFF;
/*x的初值为十六进制数*/
%u\n"
,x);
}
程序运行后的输出结果是( )。
A)-1
B)65535
C)32767
D)0xFFFF
【解析】本题考查的是整型无符号数的输出。
%u的作用是按无符号的十进制形式输出整型数,整型无符号数的取值范围在0~65535之间,无符号数不能表示成小于0的负数,十六进制数0xFFFF转换为二进制位其值为16个1,代表的整数就是65535。
当用户要求输入的字符串中含有空格时,应使用的输入函数是( )。
A)scanf()
B)getchar()
C)gets()
D)getc()
【解析】本题综合考查了输入函数的使用。
scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。
通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。
若执行下面的程序时,从键盘输入6和2,则输出结果是( )。
main()
{inta,b,k;
%d,%d"
k=a;
if(a<
b)k=a%b;
elsek=b%a;
%d\n"
,k);
A)5
B)3
C)2
D)0
【解析】本题考查简单的if…else语句。
先执行条件if(a<
b),显然不成立,然后执行else语句。
有以下程序:
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
{ printf("
,fun(7));
执行后的输出结果是( )。
【解析】因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为"
fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun
(1)))=7-(5-(3-3))=7-5=2"
,所以最后的输出结果为2。
已有定义:
charc;
,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是( )。
A)isupper(c)
B)'
A'
<
=c<
='
Z'
C)'
=c&
&
c<
D)c<
=('
z'
'
-32)&
('
a'
-32)<
=c
【解析】在本题中,选项B)实际是先计算关系表达式"
'
=c"
的值是0还是1,再比较该值与字符Z之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。
设有定义inta;
floatb;
,执行scanf("
%2d%f"
语句时,若从键盘输入876<
空格>
854.0<
回车>
,a和b的值分别是( )。
A)876和543.000000
B)87和6.000000
C)87和543.000000
D)76和543.000000
【解析】scanf()函数用空格区分不同字符串的输入,因此876和543.0被看作两段输入。
%2d只选取了第一个输入中的前两位,%f选取随后的数字作为浮点数,因此输出结果为87和6.000000。
有以下定义:
inta;
longb;
doublex,y;
则以下选项中正确的表达式是( )。
A)a%(int)(x-y)
B)a=x!
=y;
C)(a*y)%b
D)y=x+y=x
【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。
C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。
D)选项表达式本身就错误,不能给表达式赋值。
所以,本题答案为B)。
运行下面程序时,从键盘输入字母H,则输出结果是( )。
{ charch;
ch=getchar();
switch(ch)
{caseH:
Hello!
\n"
);
caseG:
Goodmorning!
default:
Bye Bye!
A)Hello!
B)Hello!
GoodMoring!
C)Hello!
D)Hello!
【解析】本题主要对switch语句进行了考查。
switch语句的执行过程为:
进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。
本题中ch为字符H,所以caseH条件中的语句将被执行,由于没有break语句,所以caseG后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。
{
chars[]="
012x4y\08s34f4w2"
;
inti,n=0;
for(i=0;
s[i]!
=0;
i++)
if(s[i]>
0'
&
s[i]<
9'
)n++;
,n);
A)0
C)4
D)7
【解析】本题的程序是要统计字符串s中数字的个数,其中前6个字符中有4个满足选择条件,此时n为4,然后遇到字符\0,这个转义字符表示值为0的空字符NULL,此时循环条件不满足,因此循环结束。
{
inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
else
d=3;
%d,%d,%d,%d\n"
,a,b,c,d);
程序输出结果是( )。
A)0,1,2,0
B)0,0,0,3
C)1,1,2,0
D)编译有错
【解析】if中的语句组包含两条语句,但是没有花括号,所以编译有错。
如果这个时候没有else,就理解成语句组只有一条语句,编译将是正确的。
定义如下变量和数组:
inti;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。
i<
3;
i++)
%d"
,x[2-i][i]);
A)951
B)741
C)753
D)963
【解析】考查二维数组元素的引用方法。
题中通过二维数组的行、列下标来定位元素的位置,从而实现元素的引用。
在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。
A)auto和register
B)extern和register
C)auto和static
D)static和register
【解析】本题的考查点是变量的存储类型。
extern、register、static、auto分别是定义自动变量、寄存器变量、静态变量、外部变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;
而静态变量和外部变量属于静态存储,在整个程序运行时间都存在
#include<
intfun(inta,intb){
if(b==0)returna;
elsereturn(fun(--a,--b));
main(){
,fun(4,2));
程序的运行结果是( )。
A)1
B)2
D)4
【解析】该题目考查函数参数传递以及if条件语句。
当变量b为0时,将a的值返回给主调函数,因此a进行两次自减1后,将其值返回并输出。
point(char*p){p+=3;
main(){chara[4]={'
1'
,'
2'
3'
4'
},*p=a;
point(p);
%c\n"
,*p);
【解析】在函数point函数调用时,系统自动为函数的形参p分配内存空间,并赋值为实参p的值。
当执行语句p+=3;
时,系统操作的是形参p的内存空间,更改形参p的内容,而实参指针变量p的值未受影响,即指针变量作为函数参数时,不能更改实参指针变量的指向。
故在printf("
语句中,p仍然指向字符数组的首元素。
阅读下列程序段,程序的输出结果为( )。
#include"
stdio.h"
#defineM(X,Y)(X)*(Y)
#defineN(X,Y)(X)/(Y)
{ inta=5,b=6,c=8,k;
k=N(M(a,b),c);
A)3
B)5
C)6
D)8
【解析】带参数的宏定义命令行形式如下:
#define宏名(形参表)替换文本。
首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。
设有以下函数:
voidfun(intn,char*s){……}
则下面对函数指针的定义和赋值均正确的是( )。
A)void(*pf)();
pf=fun;
B)void*pf();
C)void*pf();
*pf=fun;
D)void(*pf)(int,char);
pf=&
fun;
【解析】函数指针的定义形式是:
数据类型标识符(*指针变量名)()。
void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。
所以给pf赋值时,只把函数名fun赋给pf即可。
所以正确答案为选项A)。
voidfun(int*s,intn1,intn2){
inti,j,t;
i=n1;
j=n2;
while(i<
j){t=s[i];
s[i]=s[j];
s[j]=t;
i++;
j--;
inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);
fun(a,4,9);
fun(a,0,9);
for(k=0;
k<
10;
k++)printf("
%d"
,a[k]);
printf("
A)0987654321
B)4321098765
C)5678901234
D)0987651234
【解析】函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。
所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};
再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};
再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
所以正确答案为C)。
下面结构体的定义语句中,错误的是( )。
A)structord{intx;
inty;
intz;
};
structorda;
B)structord{intx;
}structorda;
C)structord{intx;
}a;
D)struct{intx;
【解析】定义结构体变量有三种方式:
①先声明结构体类型,再定义变量名,如选项A)所示;
②在声明类型的同时定义变量,如选项C)所示;
③直接定义结构体类型变量,如选项D)所示。
voidf(int*q){inti=0;
for(;
i<
5;
i++)(*q)++;
main(){inta[5]={1,2,3,4,5},i;
f(a);
i++)printf("
%d,"
,a[i]);
A)2,2,3,4,5,
B)6,2,3,4,5,
C)1,2,3,4,5,
D)2,3,4,5,6,
【解析】本题考查的是指针作为函数的参数和函数的调用。
题目中定义了一个指针变量作为函数f()的形参。
主函数main()中调用f()函数,当i=0时,执行语句(*q)++,此处*q代表的就是数组元素a[0]的值,即将1进行加1操作;
当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q作任何变动,也即*q仍代表了数组元素a[0]的值,所以此次(*q)++即2+1,所以a[0]的值变为3;
……直到i=4时,执行(*q)++(即5+1)后a[0]的值变为6。
所以最后的输出结果为:
6,2,3,4,5,。
voidfun(char*a,char*b){while(*a=='
*'
)a++;
while(*b=*a){b++;
a++;
char*s="
*****a*b****"
,t[80];
fun(s,t);
puts(t);
A)*****a*b
B)a*b
C)a*b****
D)ab
【解析】在函数fun(char*a,char*b)中,while(*a==*)a++的功能是:
如果*a的内容为*,则a指针向后移动,直到遇到非*字符为止,退出循环进入下一个while循环,在while(*b=*a){b++;
}中,把字符数组a中的字符逐个赋给字符数组b。
所以在主函数中,执行fun(s,t)语句后,字符数组t中的内容为"
a*b****"
。
所以选项C)为正确答案。
structst
{intx,y;
}data[2]={1,10,2,20};
main(){structst*p=data;
,p->
y);
,(++p)->
x);
A)10,1
B)20,1
C)10,2
D)20,2
【解析】数组名的值即为数组首地址,所以p->
y可得第一个元素的y值,(++p)->
x可得第二个元素的x值。
intfun(intx[],intn)
{staticintsum=0,i;
n;
i++)sum+=x[i];
returnsum;
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
,s);
程序执行后的输出结果是( )。
A)45
B)50
C)60
D)55
【解析】内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。
Fun(a,5)的值是15,再次调用后sum=15,所以Fun(b,4)=45,s=45+15=60。
intadd(inta,intb){return(a+b);
{intk,(*f)(),a=5,b=10;
f=add;
…
则以下函数调用语句错误的是( )。
A)k=(*f)(a,b);
B)k=add(a,b);
C)k=*f(a,b);
D)k=f(a,b);
【解析】在语句"
k=*f(a,b)"
中,由于"
()"
的优先级高于"
*"
,所以"
*f(a,b);
"
表示其返回类型为指针的带有两个整型参数的函数。
有以下程序段:
{intx;
int*y;
}*pt;
inta[]={1,2},b[]={3,4};
structstc[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是( )。
A)*pt->
y
B)pt->
x
C)++pt->
D)(pt++)->
【解析】:
->
的运算优先级比++高,此时,pt->
x=10,执行自加运算后为11。
有以下程序(strcat函数用以连接两个字符串):
string.h>
main(){chara[20]="
ABCD\0EFG\0"
,b[]="
IJK"
strcat(a,b);
%s\n"
,a);
A)ABCDE\0FG\0IJK
B)ABCDIJK
C)JK
D)EFGIJK
【解析】char*strcat(char*dest,char*src)的功能是:
把src所指字符串添加到dest结尾处(覆盖dest结尾处的\0)并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 未来 教育 题库 试题 答案 详解