版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456
2.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。
A.0B.2C.3D.5
3.串的长度是______。A.A.串中不同字符的个数
B.串中不同字母的个数
C.串中所含字符的个数且字符个数大于零
D.串中所含字符的个数
4.以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循环,不能确定次数
5.
6.串是一种特殊的线性表,其特殊性体现在()。
A.可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符
7.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5B.2和4C.4和2D.5和1
8.以下有4组用户标识符,其中合法的一组是()。
A.FOr-subCase
B.4dDOSize
C.f2_G3IFabc
D.WORDvoiddefine
9.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0
10.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double
11.以下叙述中错误的是()。
A.非零的数值型常量有正值和负值的区分
B.常量是在程序运行过程中值不能被改变的量
C.定义符号常量必须用类型名来设定常量的类型
D.用符号名表示的常量叫符号常量
12.若k是int类型变量,且有以下for语句:for(k=-1;k<O;k++)printf("****\n");下面关于语句执行情况的叙述中正确的是()。、A.循环体执行一次B.循环体执行两次C.循环体一次也不执行D.构成无限循环
13.以下说法正确的是()。
A.C语言只接受十进制的数
B.C语言只接受八进制、十进制、十六进制的数
C.C语言接受除二进制之外任何进制的数
D.C语言接受任何进制的数
14.有以下程序:#include<stdi0.h>#defineS(x)(x)"x"2main(){intk一5,j=2;Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));}程序运行后的输出结果是()。A.98,18B.39,11C.39,18D.98,11
15.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是()。
A.5,5B.5,11C.11,11D.11,5
16.
17.可以判断一个有向图中是否含有回路的方法为()。
A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径
18.以下选项中非法的表达式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
19.
20.
二、2.填空题(20题)21.以下程序运行后的输出结果是【】。
main()
{
intp=30;
printf("%d\n",(p/3>0?p/10:p%3));
}
22.以下程序运行后输入3,abcde<回车>,则输出结果是【】。
#include<string.h>
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);
}
23.在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【】函数。
24.数据结构包括数据的逻辑结构、数据的【】以及列数据的操作运算。
25.若有以下程序:
main()
{inta=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d%d%d\n",a,b,c);
}
执行后的输出结果是【】。
26.有以下程序
intsub(intn){retnrn(n/10+n%10);}
main()
{intx,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若运行时输入:1234<回车>,程序的输出结果是______。
27.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。
28.在C语言中,字符的比较就是对它们的【】码进行比较。
29.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。
30.以下程序的输出结果是【】。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(6,3,a)
printf("%d,a)
}
31.设有以下结构体类型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【】,1,fp);
32.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\",a,b);
elseprintf("%d,%d\n",b,a);}
33.下列程序的输出结果是______。
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5;++)
PRINT(a+i);
printf("\n");
}
34.无论对于顺序存储,还是链接存储的栈和队列来说,进行插入或删除运算的时间复杂性均相同,则为【】。
35.用复合的赋值运算符将变量x中的值增大2的赋值表达式是【】。
36.常用的黑箱测试有等价类划分法、【】和错误推测法3种。
37.以卜函数sstrcat()的功能是实现宁符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符申为efgh,函数调用后s所指字符串为abcdefgh。请填空。
#include<string.h>
voidsstrcat(char*s,char*t)
{intn;
n=strlen(s);
while(*(s+n)=){s++;t++;}
}
38.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。
39.一棵二叉树中共有80个叶子结点与10个度为1的结点,则该二叉树中的总结点数为【】。
40.下面程序的功能是两个整数进行交换,请填空。
sub(int*x,int*y)
{【】
z=*x;*x=*y;*y=z;
return;}
main()
{intm,n,*t1,*t2;
scanf("%d,%d",&m,&n);
t1=&m;t2=&n;
【】
printf("%d,%d\n",m,n);}
三、1.选择题(20题)41.下列关于栈的叙述正确的是()
A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈具有后进先出的特征
42.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
43.有以下程序:matin(){char*s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[o]);}执行后的输出结果是______。
A.n,twoB.t,oneC.w,oneD.o,two
44.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
45.下列4项中说法不正确的是______。A.A.数据库减少了数据冗余
B.数据库中的数据可以共享
C.数据库避免了一切数据的重复
D.数据库具有较高的数据独立性
46.有以下程序
#include<stdlib.h>
structNODE
{intnum;structNODE*next;}
main()
{structNODE*P,*q,*r;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(struetNODE));
r=(structNODE*)malloc(sizeof(structNODE)):
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num):
}
程序运行后的输出结果是()
A.10B.20C.30D.40
47.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
48.设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则T中的叶子结点数为()。
A.5B.6C.7D.8
49.已知p为指针变量,a为数组名,i为整型变量,下列语句中,不正确的是______。
A.p=&i;B.p=a;C.p=&a[i];D.p=10;
50.下列叙述错误的是()。
A.函数名是属于用户标识符,需符合C语言对标识符的规定
B.形参只能是变最
C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名
D.函数中定义的变量可以与其他函数中的变量同名
51.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
52.有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-′a′+′A′;
s++;}}
main()
{charstr1[100]="abcddfefdbd",c=′d′;
ss(str1,c);printf("%s\n",str1);}
程序运行后的输出结果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
53.下列叙述中错误的是()。
A.一种数据的逻辑结构可以有多种存储结构
B.数据的存储结构与数据的处理效率无关
C.数据的存储结构与数据的处理效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
54.字符串"\\\"ABCDEF\"\\"的长度是()。
A.15B.10C.7D.8
55.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}
A.11B.12C.13D.15
56.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后输出结果是
A.550550B.680680C.580550D.580680
57.视图设计一般有3种设计次序,下列不属于视图设计的是______。
A.自顶向下B.由外向内C.由内向外D.自底向上
58.有定义语句:“inta=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x的值不为3的是()。
A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
59.已知inta=1,b=3则a^b的值为
A.3B.1C.2D.4
60.以下程序的输出结果是
#include<stdio.h>
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
四、选择题(20题)61.有以下程序:
程序运行后的输出结果是()。
A.0304B.2050C.3344D.3040
62.有以下程序:
程序运行后的输出结果是()。
A.500B.401C.503D.1404
63.
64.有以下程序:
程序运行后的输出结果是()。
A.LoB.30C.0D.64
65.(54)在下列几种排序方法中,要求内存量最大的是______。
A.插入排序
B.选择排序
C.快速排序
D.归并排序
66.以下不能正确定义二维数组的选项是()。
A.
B.
C.
D.
67.有以下程序程序运行后的输出结果是()。
A.3,3,3B.2,2,3C.1,2,3D.1,1,3
68.
69.
70.以下叙述中错误的是()。
A.算法正确的程序可以有零个输入
B.算法正确的程序最终一定会结束
C.算法正确的程序可以有零个输出
D.算法正确的程序对于相同的输入一定有相同的结果
71.面下程序段的运行结果是
charstr[]="ABC",*p=str;
printf("%d\n",*(p+3));
A.67B.0C.字符’C’的地址D.字符’C’
72.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序只看做是
A.路径的集合B.循环的集合C.目标的集合D.地址的集合
73.以下叙述中错误的是()。
A.getehar函数用于从磁盘文件读入字符
B.gets匿数用于从终端读入字符串
C.取ns函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
74.有以下程序程序运行后的输出结果是()。
A.abc28B.28cC.abcD.因类型不一致而出错
75.下列叙述中正确的是()。
A.数据库系统是一个独立的系统,不需要操作系统的支持
B.数据库技术的根本目标是要解决数据的共享问题
C.数据库管理系统就是数据库系统
D.以上三种说法都不对
76.已定义以下函数
fun(char*p2,char*p1)
{
while((*p2=*p1)!=’\0’){p1++;p2++;}
}
函数的功能是
A.将p1所指字符串复制到p2所指内存空间B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较D.检查p1和p2两个指针所指字符串中是否有’\0’
77.在黑盒测试方法中,设计测试用例的主要根据是()。
A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图
78.结构化程序设计的基本原则不包括A.多态性B.自顶向下C.模块化D.逐步求精
79.有以下程序:
#include<stdio.h>
main()
{chars[]="012xy\O8s34f4w2‘;
inti;n=0;,
for(i=0;s[i]!=0;i++)
if(s[i]>=0s[i]<=9)n++;
printf("%d\n",n);
}
程序运行后的输出结果是()。
A.0B.3C.7D.8
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入8,该项的斐波拉契级数值为21。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.
参考答案
1.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。
2.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。
3.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。
4.D解析:break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体.而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句.因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。所以,4个选项中D为所选。
5.C
6.B
7.B
8.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。
9.B变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。
10.D在表达式a*b+d-c中,double的类型最高,C语言中,由低类型自动向高类型转换,所以最后的结果一定是double型。
11.C在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。
12.A本题考查简单的for语句,程序中当k<0时循环才执行,所以答案选择A。
13.BC语言可以使用格式控制符“%d”“%u”等接受十进制的数,使用“%o”接受八进制的数,使用“%x”接受十六进制的数。本题答案为B选项。
14.BS(k+j)=(k+j)*k+j*2=(5+2)*5+2*2=39,同理S(k-1)=(k+j)*k+j*2=\r\n(5-2)*5-2*2=11,所以答案选择B。
15.B解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。
16.C
17.C
18.D解析:选项A)在C语言中是一个合法的关系表达式,但它并不代表数学式o<=x<100。计算0<=x<100时,从左到右结合,先计算0<=x,其结果只能是0或1,然后再比较0<100或1<100。根据运算符的优先级,选项B)先判断j==0是否成立,其结果只能是0或1,然后再将0或1赋给i。选项C)中,(char)(65+3)为类型强制转换,将整数型数据转换为字符型。选项D)是将一个数据赋给一个表达式,等号左边不合要求,所以错误。
19.A
20.C
21.33解析:条件表达式的一般形式为;表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。
22.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。
23.rewind()或fseek()rewind()或fseek()
24.存储结构存储结构解析:数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。
25.503503解析:本题考查的是C语言中if语句的语句体。第一个if语句的语句体为t=a,第二个if语句的语句体为t=a。执行第一个if语句时,条件a<b不成立,所以不执行t=a,直接执行语句a=b和b=t得a=3、b=0,然后判断第二个if语句的条件a<c是否成立,即判断3<5是否成立,显然条件成立,执行语句t=a得t=3,接着执行a=c;c=t得a=5、c=3,所以a=5、c=3、b=0。
26.1010解析:本题程序中定义了一个函数sub(),用来计算一个整数整除10的商和余数的和。在主函数中,首先用scanf()函数读入一个十进制整数1234,然后对1234三次嵌套调用函数svb()。首先看最里层的调用,应该返回的值是123+4=127;然后中间一层调用应该返回的是12+7=19;所以最外层调用返回1+9=10。故最后输出10。
27.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。
28.ASCⅡ
29.关系关系
30.3131解析:在函数调用时,形参值和改变,不会改变实参的值。
31.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。
32.101,0解析:与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。
33.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2;第3次循环,i=3时,调用PRINT(3),P(3)输出3;第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。
34.O(2)
35.x+=2
36.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。
37.*t*t解析:函数中首先让n=stxlen(s)所以while循环的循环条件表达式中*(s+n)指向字符串s的结束标志'0',处,而该处应该等于字符串t的第1个字符,另外循环体中让s和t指向下一个字符,即s+n和t同时被移动到下一个位置,所以该处应该填*t,即t所指内容.当t指向字符串结束标志'\\0'的时候,整个循环条件表达式的值也为0(“假”)了,循环结束.正好满足将t所指字符串复制到s所指的字符串的尾部。
38.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。
39.179179解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中的二叉树有80个叶子结点,因此,该二叉树有80-1=79个度为2的结点;又知本题中的二叉树有10个度为1的结点。因此,本题中的二叉树总结点数为:叶子结点数+度为1的结点数+度为2的结点数=80+10+79=179
40.intz;sub(t1t2);
41.D解析:栈是一种对操作的位置加以限制的线性表,它采用了顺序存储方式,属于线性结构。与队列不同,栈只允许在表的一端进行插入或删除操作,具有后进先出的特征。
42.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
43.C解析:程序定义了一个指针数组s和一个字符型指针变量p。s有3个元素,其中s[0]指向字符串'one,s[1]指向字符串'two',s[2]指向字符串'three',执行p=s[1]后p指向字符串'two',所以*(p+1)=w。
44.A解析:主函数中首先定义了4个字符变量a、b、cd,然后通过scanf()函数输入a、b、c、d输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。在看下面的printf()函数中,要求a、b、c、d都按字符输出,故a和b原样输出为6、5,c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为6,5,A,B。所以,4个选项中选项A符合愿意。
45.C解析:数据库的特点包括:数据结构化,共享性好,独立性好,管理统一度高,数据的冗余小,数据重复性低等。故只有选项C的说法不正确。数据库只能降低数据的重复性,但并不能避免一切重复性。
46.D
47.B解析:所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
48.D解析:根据给定的条件,在树中,各结点的分支总数为:4×1+2×2+1×3+4×1=15:树中的总结点数为:15(各结点的分支总数)+1(根结点)=16:非叶子结点总数为:4+2+1+1=8。因此,叶子结点数为16(总结点数)-8(非叶子结点总数)=8。因此,本题的正确答案为D。
49.D解析:不能把一个整数赋给指针变量,只能将变量已分配的地址赋给指针变量。
50.C解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。
51.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。
52.B解析:在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。
53.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。
54.B解析:本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。
55.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。
56.C解析:本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量num和Score组成。在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的p[1]->Score的值为550,而数组s[1].Score的值为580。
57.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内
向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以
单独使用也可混合使用。
注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后
对局部视图进行集成得到概念模式。
58.C解析:选项A首先判断if语句条件中表达式的值“3<1”为假,然后执行最近的else后面的语句,该else后面又为if-else语句,在这个if-else语句中首先判断该if语句条件中表达式的值“2<1”为假,程序执行其最近的else后面的语句,将3赋值给x。
选项B中首先判断if语句条件中表达式的值“1<3”为真,然后执行最近的else后面的语句“x=3”,后面的else不再执行,最后x的值为3。
选项C中,首先选执行第一条if语句,由于“1<3”为真,执行此if后面的语句“x=3”,接着执行第二条if语句,由于“1<2”为真,执行此if后面的语句“x=2”,接着执行第三条if语句,由于“1<1”为假,后面的语句不执行,所以最后的x值为2不为3。
选项D中,首先选执行第一条if语句,由于“a<b”为真,执行此if后面的语句“x=b”;接着执行第二条if语句,由于“b<c”,为真,执行此if后面的语句“x=c”,接着执行第三条if语句,由于“c<a”为假,后面的语句不执行,所以最后的x值为c即为3。所以,4个选项中选项C符合题意。
59.C解析:^是按位异或运算,如果对应位不同则结果为1,相同则为0。
60.B解析:考查指针作为参数的函数调用。尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。另外,应注意表达式\ue008*(z++)\ue009的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。
61.D第一次循环i为0,i%2为o,执行switch(a[O]%2)中的ca∞0语句后内容即a[0]++,a[0]的值变成3;第二次循环i的值为l,i%2为1,执行ca∞1:a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的ca∞1语句后的内容a[2]一一,8[2]的值变成4;第四次循环i的值为3,i%2为1,执行casel:a[i]=0;所以a[3]的值变成0。
62.C本题重点考察函数的定义和调用,第一次循环,a=0,i=0,返回值a=0*0+1+0=1;第二次循环,a=1,i=10,返回值a=10*10+1+1=102;第三次循环,a=102,i-20,返回值a=20*20+1十102=503;第四次循环,a=503,i=30;不符合i<30,跳出循环,最后结果输出a=503。
63.A
64.D本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2,第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以S的值为64.
65.D
66.D本题的考查点是二维数组的定义和初始化。
选项A)定义的数组中各元素实际上是这样的:
1,0
2.O
选项B)定义的数组中各元素实际上是这样的:
1,2
3.4
选项c)定义的数组中各元素实际上是这样的:
1,0
2.3
选项D)错在省略了第2维的长度。C中在对数组进行初始化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
67.Amalloc函数动态分配一个整型的内存空间,然后把函数返回的地址用(ints)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,h,’c都指向刚申请的内存空间。因此只有最后一个赋值语句*c=3的值保留在了该空间内,因为a,b,c三个指针变量均指向该空间,所以打印该空间内的数值均为3,选项A)正确。
68.A
69.D
70.C算法的特征:①有穷性。一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。②确定性。算法中的每一步都有确切的含义。③可行性。算法中的操作能够用已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。⑤输出:一个算法有一个或者多个输出,以反映出数据加工的结果。所以c选项错误。
71.B本题主要考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志’\\0’的地址,因而*(p+3)的值为0。
72.A本题考查软件的测试方法。
测试任何产品都有两种方法:如果已经知道
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春季工厂设备防火安全培训
- 农业电商发展应用:策略、实践与未来趋势
- 2025 高中信息技术数据与计算之数据仓库的 ETL 数据转换规则优化课件
- 2026年第三代半导体碳化硅八英寸衬底国产化突破路径
- 2026年长江经济带多式联运中心建设与水运长三角提升方案
- 2026年液流电池人才需求与培养体系构建
- 2026年数据经纪人试点示范项目申报
- 2026年数据资产评估国际比较研究
- 病情告知规范与技巧课件
- 2026年突发事件应急预案编制导则第1部分通则GB T 46793.1解读
- 幕墙技术标(暗标)
- 管理会计学 第10版 课件 第6章 存货决策
- 高等代数试卷
- 三方协议解约函电子
- 三对三篮球赛记录表
- 电气自动化社会实践报告
- 【关于某公司销售人员招聘情况的调查报告】
- 拉肚子的故事知乎拉黄稀水
- JJF 1083-2002光学倾斜仪校准规范
- GB/T 2504-1989船用铸钢法兰(四进位)
- 全国优秀中医临床人才研修项目考试大纲
评论
0/150
提交评论