版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年甘肃省武威市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中正确的是()A.当对文件的读(写操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.语言中的文件是流式文件,因此只能顺序存取数据
2.有以下程序段#include<stdio.h>main(){...while(getchar()!=\n);...}以下叙述中正确的是()。A.此while语句将无限循环
B.getchar()不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
3.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表
4.有以下程序:
A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,
5.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}
A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL
6.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能确定
7.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
8.下列特征中不是面向对象方法的主要特征的是()。
A.多态性B.继承C.封装性D.模块化
9.若变量已正确定义,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。
A.a<>b+cB.ch=getchar()C.a==b+cD.a++
10.有以下程序:
程序执行后的输出结果是()。
A.357B.753C.369D.751
11.两个或两个以上模块之间联系的紧密程度称为()。
A.耦合性B.内聚性C.复杂性D.数据传输特性
12.以下叙述中正确的是()。
A.C语言的源程序不必通过编译就可以直接运行
B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C.C源程序经编译形成的二进制代码可以直接运行
D.C语言中的函数不可以单独进行编译
13.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19
14.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf(“%3.0f\n”,a);}doublef(doublex)}returnx*x+1;}程序的运行结果是()。
A.500B.401C.503D.1404
15.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是
A.data的每个成员起始地址都相同
B.变量data所占内存字节数与成员c所占字节数相等
C.程序段:data.a=5;printf(“%I'm”,data.C);输出结果为5.000000
D.data可以作为函数的实参
16.设串s1='ABCDEFG',s2='PQRST',函数StrCat(x,y)返回x和y串的连接串,StrSub(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,StrLen(s)返回串s长度,则StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的结果串()。
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
17.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序运行时输入5并按〈Enter〉键,则程序输出结果为()。
A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,
18.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
19.设有定义语句:doublex=123.456;则语句printf(“%6.2f,%3.0f\n”,x,x);的输出结果是()。
A.123.46,123.0B.123.45,123C.123.46,123D.123.45,123.
20.静态链表中指针表示的是()。
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
二、2.填空题(20题)21.一个模块直接调用的其他模块的模块个数称为______。
22.以下程序运行后的输出结果是()。
#include<stdio.h>
main()
{intx=20;
printf("%d",0<x<20);
printf("%d\n",0<x&&x<20);
}
23.表达式10+'a'+1.5-0.5*'B'的结果是【】。
24.以下程序调用随机函数得到N个20以内的整数放在s数组中。函数fun的功能是找出s数组中的最大数(不止一个)所在下标传回主函数进行输出,并把最大值作为函数值返回,请填空。
#defineN30
man()
{ints[N],d[N],i,k,m;
for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}
m=fun(【】);
printf("m=%d\n",m);
printf(”Theindex;\n");
for(i=0;i<k;i++)printf("%4d",d[i]);
printf("\n\n");
}
fun(int*w,int*d,int*k)
{inti,j,m=0,v;
for(i=0;i<N;i++)
if(w[i]>w[m])【】;
v=w[m];
for(i=0,j=0;i<N;i++)
if(w[i]==v)【】;
*k=【】;
return【】;
}
25.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
26.下列程序输出的结果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
27.有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
执行后输出结果是______。
28.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
29.以上程序运行后的输出结果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
30.以下程序的输出结果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}
31.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
32.以下程序运行后的输出结果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
33.以下程序运行后的输出结果是【】。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
printf("%d\n",x);
}
34.下列程序段的运行结果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
35.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
36.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。
37.数据库系统中实现各种数据管理功能的核心软件称为【】。
38.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
39.在深度为7的满二叉树中,度为2的节点个数为()。
40.若有定义floatb[15],*p=b;,且数组b的首地址为200H,则p+13所指向的数组元素的地址为______。
三、1.选择题(20题)41.若k是int型变量,且有下面程序片段:k=-3;if(k<=0)printf("####")elseprintf("&&&&")上面程序片段的输出结果是()
A.####
B.&&&&
C.###&&&&
D.有语法错误,无输出结果
42.关于return语句,正确的说法是______。
A.在主函数和其他函数中均可出现
B.必须在每个函数中出现
C.可以在同一个函数中出现多次
D.只能在除主函数之外的函数中出现一次
43.以下程序的输出结果是()。#include<stdio.h>#include<string.h>mam(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}
A.8B.3C.1D.7
44.设有以下语句:typedefstreetS{intg;charh;}T;则下面叙述中正确的是()。
A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量
45.有如下程序
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
该程序的输出结果是
A.69825B.63825C.6385D.693825
46.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。
A.赋初值的字符串有错B.6,7C.5,6D.6,6
47.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
48.以下能正确定义整型变量a,b和c,并为其赋初值1的语句是______。
A.inta=b=c=1;B.inta,b,c=1;C.a=b=c=1;D.inta=1,b=1,c=1;
49.下面程序段的输出结果是()。#include<stdio.h>main(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}
A.1.237000B.输出格式说明与输出项不匹配,输出无定值C.1.236000D.1.24
50.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A.EOFB.-1C.1D.NULL
51.源程序的文档化不包括()。
A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
52.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}
A.非法B.a[4]的地址C.5D.3
53.以下选项中不能作为合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0
54.下列对于软件测试的描述中正确的是______。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能地多发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
55.若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
56.以下能正确定义且赋初值的语句是______。
A.iht=n1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5
57.按照“先进先出”组织数据的数据结构是()。
A.队列B.栈C.双向链表D.二叉树
58.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;)printf("%f\n%f\n%f\n",a,b,c);}
A.1
B.1.002.003.003.002.00
C.1
D.3.00000032.00000021.000000
59.下列程序的输出结果是()。
main
{
doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
60.下面程序段中,输出*的个数是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");
A.9B.5C.6D.7
四、选择题(20题)61.有以下程序:
fun(inta[],intm,intn)
{inti;
for(i=m;i<n;i++)
a[i+1]=a[i]+3;
returna[i+1];
}
voidmain()
{
inti,a[6]={2,4,6,8,10,12};
fun(a,2,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
程序运行后输出的结果是()。
A.24691315B.24691215C.249121518D.249121415
62.有以下程序
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])
____;
return(p);
}
在下画线处应填入的是
A.i=pB.a[p]=a[i]
C.p=jD.p=i
63.以下程序运行后的输出结果是()。
A.zB.0C.元素Ch[5]地址D.字符y的地址
64.
65.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。
A.笛卡儿积B.交C.并D.自然连接
66.
有以下程序:
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
67.
68.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划
69.有以下程序:
从第一列开始输入以下数据(<CR>代表一个回车符.:
2743<CR>
程序的输出结果是()。
A.66877B.668966C.6677877D.6688766
70.下列处理中与队列有关的是()。
A.操作系统中的作业调度B.执行程序中的过程调用C.执行程序中的循环控制D.——-X树的遍历
71.若有定义“doublea;”,则正确的输入语句是()。
A.seaM("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
72.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。
A.赋初值的字符串有错B.6,7C.5,6D.6,6
73.若有以下说明和语句:
sturctst
{intn;char*ch;};
structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;
则值为6的表达式是()。
A)p++->nB)p->n++
C)(*p).n++D)++p->n
74.阅读下列程序段,程序的输出结果为()。
A.3B.5C.6D.8
75.有以下程序:
程序的运行结果是()。
A.*****a*bB.a*bC.a*b****D.ab
76.下列叙述中正确的是()。A.栈是“先进先出”的线性表
B.队列是“先进后出”的线性表
C.循环队列是非线性结构的线性表
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
77.有以下程序:
程序运行后的输出结果是()。
A.0,0B.1,0C.3,2D.1,2
78.
79.
80.定义下列结构体(联合)数组:
structst
{charname[15];
intage;
}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);
执行语句printf("%d,%C",a[2].age,*(a[3].name+2))的输出结果为()。A.A.15,AB.16,HC.16,AD.17,H五、程序改错题(1题)81.下列给定的程序中,函数proc的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。例如,排序前的数据为:1132-5214则排序后的数据为:-52111432请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;//****found****for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[[i]<a[p])p=i;t=a[p];a[p]=aEj3;//****found****a[p]=t;}}voidmain{intarr[M]={11,32,-5,2,14},i,m=5;printf("排序前的数据:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");proc(arr,m);printf("排序后的顺序:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");}六、程序设计题(1题)82.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineM3#defineN4voidproc(intttrM3rN]。intpp[N]){ }voidmain{intstr[M][N]={{34,56,84,78},{23,84,93,12),{28,38,39,93}};intp[N],i,j,k;system("CLS");printf("Theriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d",str[i][j]);printf("\n");}proc(str,p);printf("\nTheresultis:\n");for(k=0:k<M;k++)printf("%4d",p[k]);printf("n");}
参考答案
1.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。
2.C主要是考查while和getchar函数,getchar函数是输入字符函数,while是循环语句,所以当输入的字符为换行符时将执行。
3.D
4.C即输出x[0][2]x[l][1]x[2][0]分别为357。
5.D当k=1时,引用的是二维数组元素w[1][1],值为字符串“FGH”;当k=2时,引用的是数组元素w[2][2],即字符串“KL”;当k=3时,结束程序的执行。注意:字符串数组的定义。
6.A由于a==l和a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。
7.D在C语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项A错误;选项B不管大于还是小于都执行S,不符合题意;选项C正好相反,当s2大于s1时,执行语句S,可知选项D正确。
8.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。
9.A选项A是非法的表达式,C语言中没有“<>”运算符。故本题答案为A选项。
10.A本题考查的是for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第l行的第1个元素起,直到第l行满,接着代表第2行、第3行……的每一个元素。程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循环中输出的数分别是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后输出的结果为357。故应该选择A)。
11.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。
12.B解析:本题考核的知识点是C程序从编写到生成可执行文件的步骤。C语言采用编译方式将源程序转换为二进制的目标代码,编写好一个C程序到完成运行一般经过以下几个步骤:编辑;编译,就是将已经编辑好的源程序翻译成二进制的目标代码,经编译后的得到的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块连接后才能运行;连接,将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件;执行,执行一个经过编译和连接的可执行的目标文件。由以上定义可知,选项A、C、D均不正确。所以,4个选项中选项B符合题意。
13.Bfun(x+2)表示的是结构体数组中的第3个元素即{03,"Zhao",l8),而输出的是name元素,所以答案为B。
14.Cfor循环中,函数f的返回值累加到变量a中。第1次循环,a=0,i=0,返回值a=0*0+1=1;第2次循环,a=1,i=10,返回值a=10*10+1+1=102;第3次循环,a=102,i=20,返回值a=20*20+1+102=503;第4次循环a=503,i=30,不符合1<30,跳出循环,最后结果输出a=503。故本题答案为C选项。
15.C解析:本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等.本题定义的共用体中成员C所占的内存最多,因此选项B是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项A是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项D也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项C是错误的。
16.D
17.Cmain函数首先定义一个整型变量data,使用scanf函数输入一个整数赋给data。接着执行for循环,i的值为0~7。当i的值不大于data的值时,使用continue语句跳过当前循环,进入下一轮循环。若从键盘输入5,data的值为5,i取值为0~5时,都不执行printf语句。当i取值为6、7时,执行printf语句,输出6,7。故本题答案为C选项。
18.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
\n
19.C对于double类型的实数,可以在printf函数的格式化字符串中使用”n1.n2”的形式来指定输出宽度(n1和n2分别代表一个整常数)。其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。当输出数据的小数位多于n2位时,截取右边多余的小数,并对截取部分的第1位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2;如果指定“n1.0”格式,则不输出小数点和小数部分。题干中,%6.2f表示输出6位宽度,2位小数,所以被截取的小数位为0.006,进行四舍五入,结果为123.46;%3.0f表示输出3位宽度,0位小数,结果为123。故本题答案为C选项。
20.C
21.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
22.1010解析:表达式0<x<20,首先计算0<x,其值为1,再计算1<20,其值为1,输出1;表达式0<x&&x<20,0<x为1,x<20为0,再计算1&&0,其值为0,输出0。所以输出结果为10。
23.75.5
24.sd&km=id[j++]=ijv
25.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
26.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。
27.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环.该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出I的值为0。
28.调试调试
29.5252解析:do...while语句的形式为:
do
{
语句;
}while(条件表达式)
当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。
30.C
31.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。
32.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*
33.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。
34.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。
35.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是开辟一个长度为sizeof(struetnode)的内存区。(structnode*)的作用是使malloc返回的指针转换为指向structnode类型数据的指针。
36.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。
37.数据库管理系统数据库管理系统(DBMS)
38.物理独立性物理独立性
39.6363解析:满二叉树的第k层上有2k-1个结点,度为k的满二叉树一共有2k-1个结点,由二叉树的性质可知:除去第k层上的结点,其他所有结点都是度为2的结点,所以度为2的结点数为2k-1-2k-1,即27-1-27-1=63。
40.252H252H解析:要解答本题,首先要明白在对指针进行加,减运算时,数字“1”不是十进制数的“1”,而是指“1”个存储单元长度。1个存储单元长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是血型,则移动1个存储单元的长度就是位移2个字节;如果存储单元基类型是float型,则移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址为:200H+(13*4)H=252H。
41.D
42.C
43.D解析:首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次:第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strepy(b2,pB);”后,b2中的内容为“cdefg”:第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pB);”后b2的内容为“bedefg”第三次判断条件“--pb>=b1”使pb的值为“b1”,执行“strcpy(b2,pB):”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行—次while循环判断条件,就执行一次“--pb”,他使得指针pb自减1,即前移一位)所以,4个选项中D为所选。
44.B解析:可以用typedef定义新的类型名来代替已有的类型名。T是所定义的新的类型名,它代表题中定义的一个结构体类型,这样就可以用T定义结构体变量了。
45.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的内容为字符串'8254'。③程序中第二个循环中的循环体s=s*10+p[i][j]-\'0\';的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串结束标志\'\\0\'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串'6937'中一个隔一个地取出字符,分别是\'6\'和\'3\',然后从p[1]所指向的字符串'8254'中一个隔一个地取出字符,分别是\'8\'和\'5\',同时经过转换和相加运算后,结果s中的值应该是6385。
46.C解析:本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的'\\0'),则输出值为5。sizeof(s)计算数组所占的字节数,包含'\\0',则输出值为6。因此,C选项正确。
47.C解析:栈是一种后进先出表,选项C中,先出栈的是3,说明此时栈内必然有1,2,由于1先于2进浅,所以1不可能在2之前出栈,故选项C这种出栈序列是不可能的。
48.D解析:选项A中,变量b、c未定义;选项B中,a、b未赋值;选项C中a、b、c均未定义。
49.A
50.C解析:EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。
51.B解析:源程序的文档化主要包括3点:(1)符号名应具有一定实际的含义,便于理解程序功能:(2)正确的程序注释;(3)良好的视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。
52.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。
53.B解析:本题考查的是C语言中实型常量的指数表示法。实型常量的指数表示法是用字母e(或E)将一个实数的小数部分和指数部分分隔开。字母e(或E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项B不正确。所以,4个选项中选项B符合题意。
54.C解析:软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误,软件测试是一个发现错误而执行程序的过程。软件调试的目的是发现错误的位置,并改正错误。
55.B解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。
56.A解析:B选项中32应加单引号,C选项中f=f+1.1两边都是不定值,不正确;D中E后要用整型数,且E后必须要有数字。
57.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。
【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。
58.D解析:本题考查if语句。第1个if语句,实现如果a<b,则交换a、b值的功能;第2个if语句,实现如果a<c,则交换a、c的值的功能;第3个if语句,实现如果b<c,则交换b、c的值的功能。3个if语句结合起来实现的功能就是将a、b、c按从大到小排序。
59.C解析:本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。注意:格式输出语句printf的使用。
60.C解析:本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。
61.B函数的功能是将数组的某个区域内的元素加3,赋给后一个元素,然后返回;题目是从a[2]到a[5]调用函数,a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以结果为B
62.D本题考查对程序作用的理解。该函数具有两个形参a和n,a为数组名,n为数组中元素的个数。函数的返回值为p,这里p为数组的下标。初始时,i、j、p都为0,for循环的初始表达式为i=j,条件表达式为i<n,也就是当i=n时,for循环结束。该for循环表达的含义为:初始时,令a[i]=a[p]=a[0],随后i可从0开始递增,直到n-1,对于每一个a[i],都与a[p]进行比较,空白处需要填入语句的部分是if语句满足条件后要进行的操作,表示如果a[i]<a[p],应当进行怎样的处理。选项A是令i=p,此时整个程序中p的值没有发生改变,p=0,即如果a[i]<a[p],则令i=0,回到了初始化的状态,这样在for语句中造成了死循环,该选项错误。选项B是令a[p]=a[i],整个程序在运行过程中,p的值依然没有变化,p=0,即如果a[i]<a[0],则令a[0]=a[i],整个程序运行结束后,a[0]的数值应该为整个数组的最小值,用return语句返回下标0没有意义。选项C是令p=j,程序在运行过程中,j的值和p的值都没有发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026陕西宁强县汉江源景区招聘考试参考试题及答案解析
- 2026西安经开第十四小学舞蹈教师招聘考试备考试题及答案解析
- 2026四川德阳市第六人民医院(东汽医院)面向社会招聘编外人员10人考试参考试题及答案解析
- 2026磨憨开发投资有限责任公司市场化选聘高级管理人员2人(云南)考试备考题库及答案解析
- 2026福建莆田市城厢区考核招聘编内新任教师20人考试参考试题及答案解析
- 2026重庆合川区人民医院招聘8人考试备考试题及答案解析
- 2026年甘肃兰州红古区医保局招聘公益性岗位人员考试备考题库及答案解析
- 2026渭南市富平县和谐幼儿园招聘(4人)考试备考试题及答案解析
- 2026年桂林师范高等专科学校单招综合素质考试备考题库带答案解析
- 2026海南海口市龙华区劳动就业和社会保障管理中心招聘公益性岗位工作人员4人考试参考试题及答案解析
- 消化内科护理带教老师总结
- 2025年中国赛车行业发展运行现状及投资策略研究报告
- UL294标准中文版-2018版门禁系统单元
- GB/T 36547-2024电化学储能电站接入电网技术规定
- GB/T 19342-2024手动牙刷一般要求和检测方法
- 生活垃圾焚烧发电厂掺烧一般工业固废和协同处置污泥项目环评资料环境影响
- 物业收费技巧培训
- 期末测试(试题)-2024-2025学年六年级上册语文统编版
- GB/T 15822.1-2024无损检测磁粉检测第1部分:总则
- 重症医学质量控制中心督查评价标准及评分细则(2020版)
- 高中生物学选择性必修一测试卷及答案解析
评论
0/150
提交评论