![2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页](http://file4.renrendoc.com/view/de53234e694fcad70d399c0ccd95a31c/de53234e694fcad70d399c0ccd95a31c1.gif)
![2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页](http://file4.renrendoc.com/view/de53234e694fcad70d399c0ccd95a31c/de53234e694fcad70d399c0ccd95a31c2.gif)
![2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页](http://file4.renrendoc.com/view/de53234e694fcad70d399c0ccd95a31c/de53234e694fcad70d399c0ccd95a31c3.gif)
![2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页](http://file4.renrendoc.com/view/de53234e694fcad70d399c0ccd95a31c/de53234e694fcad70d399c0ccd95a31c4.gif)
![2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页](http://file4.renrendoc.com/view/de53234e694fcad70d399c0ccd95a31c/de53234e694fcad70d399c0ccd95a31c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年湖北省黄冈市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.当变量c的值不为2、4、6时,值为“真”的表达式是()。
A.(c>=2&&c<=6)&&(c%2!=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)||(c!=3)||(c!=5)
2.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用直接选择大值开始排序时,第一趟扫描结果是()
A.(541,132,827,746,518,181,946,314,205,984)
B.(205,132,314,181,518,746,946,984,541,827)
C.(132,541,746,984,181,518,314,946,205,827)
D.(132,541,746,518,181,946,314,205,827,984)
3.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(fnnc(x,y),z);printf("%d\n",r);}该程序的输出结果是______。
A.12B.13C.14D.15
4.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
5.关于地址和指针,以下叙述正确的是()。
A.可以通过强制类型转换让char型指针指向double型变量
B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”
C.指针P指向一个数组f时,必须写成“P=&f;”
D.—个指针变量P可以指向自身
6.二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8][5]的起始地址与当A按列先存储时的元素()的起始地址相同。设每个字符占一个字节。
A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]
7.若有以下程序
则程序的输出结果是
A.3B.7C.6D.10
8.对称数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到8。将其下三角中的元素连续存储在从首地址SA开始的存储器内,该数组按行存放是,则元素A[5][8]的起始地址为()。
A.SA+124B.SA+128C.SA+132D.136
9.
10.有以下程序:
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s\n",ss,aa);
}
程序运行结果是A.A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
11.若有以下定义,则对a数组元素地址的正确引用是()。
inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]
12.
13.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
14.如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是_______
A.有向完全图B.连通图C.强连通图D.有向无环图
15.
16.已知二叉树后序遍历序列是dabeC,中序遍历序列是debaC,它的前序遍历序列是()。
A.aChedB.deCabC.deabeD.Cedba
17.二维数组A按行顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为_______
A.470B.471C.472D.473
18.设有以下语句
charchl,ch2;scanf("%c%C",&chl,&ch2);
若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。
A.A和B之间用逗号间隔
B.A和B之间不能有任何间隔符
C.A和B之间可以用回车间隔
D.A和B之间用空格间隔
19.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
20.
二、2.填空题(20题)21.类是一个支持集成的抽象数据类型,而对象是类的【】。
22.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
[8]
if(s[*k]<s[i])*k=i;
return[9];}
main()
{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
pfintf("%d,%d\n"
23.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
24.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
25.设有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[10],t[10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
}
printf("%s\n",t);
}
程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程
序的输出结果是______。
26.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。
27.设有宏定义:
#defineWIDTH80
#defineLENGTHWIDTH+40
则执行赋值语句“v=LENGTH*20;"(v为int型变量)后,v的值是【】。
28.若对长度为90的线性表进行分块查找,其中每块子表长度为9。如果在索引表查找过程中进行顺序查找,那么平均查找长度为【】。
29.一棵二叉树第6层(根结点为第一层)的结点最多为______个。
30.下列程序的运行结果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4);
inti:
for(i:0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf("\n");
}
31.在软件测试中,动态测试和静态测试手段只能发现程序中的错误,而不能证明程序中不存在错误,只有【】证明才有可能证明程序的正确性。
32.以下程序调用随机函数得到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【】;
}
33.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\",p+9);
}
34.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
35.下面程序的功能是将一个字符串str的内容倒序,请填空。
#inelude<stdio.h>
#include<strins.h>
main()
{inti,j,【】;
charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);
}
36.以下程序的运行结果是______。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-1)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%51d\n",k);}
37.有以下程序
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
执行后输出结果是【】。
38.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
39.深度为5的满二叉树中,叶子结点的个数为______。
40.栈中允许进行插入和删除的一端叫做______。
三、1.选择题(20题)41.有以下程序:#include<stdio.h>main()FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=l;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,'%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);执行后输出结果是
A.12B.1230C.123D.00
42.有下列程序:
main()
{intt,a=1,b=5,C=-2;
while(a>b>C)
{t=a;a=b;b=t;c++;}
printf("%d,%d,%d",a,b,C);
}
程序的输出结果是()。
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
43.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是
A.0,0B.0,1C.1,0D.1,1
44.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序运行后的输出结果是______。
A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5
45.在下列语句中,正确的是()
A.staticcharstr[]="China";
B.staticcharstr[];str="China";
C.staticcharstr1[5],str2[]={"China"};str1=str2;
D.staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);
46.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
47.下列叙述中错误的是()。
A.测试是程序执行的过程,目的在于发现错误
B.一个好的测试在于能发现至今未发现的错误
C.一个成功的测试是发现了至今未发现的错误
D.上述说法都不对
48.有以下程序:streetSTU{charnum[10];floatscore[3];};main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s,inti;floatsum=0;for(i=0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum);}程序运行后的输出结果是()。
A.260B.270C.280D.285
49.下列程序的输出结果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}
A.0B.2C.1D.3
50.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是______。
A.22111B.21021C.122D.12
51.以下程序的输出结果是______。
main(){intk=17;printf("%d,%o,%x\n",k,k,k):}
A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11
52.有以下程序:#include<stdio.h>main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是()。
A.0,0B.0,1C.1,0D.1,1
53.若变量已正确说明为float型,要通过scanf("%f%f%f",&a,&b,&c);给a赋值10.0,b赋值22.0,c赋值33.0,下列不正确的输入形式是()。
A.10<回车>22<回车>33<回车>
B.10.0,22.0,33.0<回车>
C.10.0<回车>22.033.0<回车>
D.1022<回车>33<回车>
54.以下程序的输出结果是______。main(){union{chari[2];intk;}r;r.i[0]=2;r.i[1]=0;printf("%d\n"r.k);}
A.2B.1C.0D.不确定
55.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&y
B.x<=y
C.x‖y+z&&y-z
D.!((x<y)&&!z‖1)
56.以下程序十函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址:#include<stdio.h>#include<string.h>char*scrap(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对宁符中进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、4bba和abc三个宁符市,则输出结果为
A.abcdB.abbaC.abcD.abca
57.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。
A.&t[3][2]B.t[3]C.t[1]D.*t[2]
58.若程序中已包含头文件stdio.h,以下选项能正确运用指针变量的程序段是()。
A.int*i=NULL;scanf("%d",i);
B.float*f=NULL;*f=10.5;
C.chart='m',*c;*c=&t;
D.long*L;L='\0';
59.下列哪个是面向对象程序设计不同于其他语言的主要特点?
A.继承性B.消息传递C.多态性D.静态联编
60.设有以下语句charx=3,y=6,z;z=x^y<<2;则z的二进制值是
A.10100B.11011C.11100D.11000
四、选择题(20题)61.
有以下程序
#include<stdi0.h>
main
{FILE*fp;inta[0]一{1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a.sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printft("%d",a[i]);
}
程序的运行结果是()。
A.1,2,3,0,0,o,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
62.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}
A.2,3,2B.2,3,1C.1,3,3D.3,1,2
63.有以下程序:
程序运行后的输出结果是()。
A.7B.10C.8D.9
64.
65.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4
66.
67.下面的程序段运行后,输出结果是()。
A.9B.0C.不确定值D.18
68.
69.设有定义:
inta=1,b=2,C=3;
以下语句中执行效果与其他三个不同的是()。
A.if(a>B.C=a,a=b,b=C;
B.if(a>B.{C=a,a=b,b=C;}
C.if(a>B.C=a;a=b;b=c;
D.if(a>B.{C=a;a=b;b=c;}
70.已有定义intx=3,y=4,z=5;则表达式“!(x+y)+z-1y+z/2”的值是________。
A.6B.0C.2D.1
71.
72.应用数据库的主要目的是A.A.解决数据保密问题
B.解决数据完整性问题
C.解决数据共享问题
D.解决数据量大的问题
73.
74.下列哪个不属于DOM元素结点类型?
A.元素结点B.文本结点C.属性结点D.样式结点
75.
76.以下叙述中正确的是
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
77.有以下程序执行后的输出结果是()。
A.1B.2C.4D.死循环
78.下列叙述中正确的是()。
A.在switch语句中,不-定使用break语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.break语句只能用于switch语句
79.有以下程序:
#include<stdio.h>
main()
{inta,b,k,m,*pl,*p2;
k=1,m=8;
p1=&k,p2=&m;
a=/*pl-m;b=*p1+*p2+6;
printf("%d",a);printf("%d\n",b);
}
编译时编译器提示错误信息,你认为出错的语句是()。
A.a=/*pl-m;
B.b=*p1+*p2+6;
C.k=1,m=8;
D.pl=&k,p2-&m;
80.有如下嵌套的语句
五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串str中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,则输出“abd,dfad”。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D逻辑或运算中只要有一个运算量为真,结果就为真。当“c>=2&&c<=6”条件不成立时,c的值肯定不是2、3、4、5、6,“c!=3”与“c!=5”均成立,所以D选项的结果一定为真。故本题答案为D选项。
2.A
3.D
4.B本题考查指针函数。其定义的基本格式为:类型说明符(*函数名)。“类型说明符”表示返回的指针值指向的数据类型。
5.A函数名代表函数的入口地址,函数指针P指向一个同类型的函数f时,可以写成“p=f;”,而不能写成“P=&f;”,选项B错误。指针p指向一个数组f时,可以写成“p=f;”,数组名f代表数组的首地址,选项C错误。指针变量指向的是变量的地址,选项D错误。char型根据转化原则可以转化为double类型。故本题答案为A选项。
6.A
7.D第—个if语句a!=1条件为假,所以执行dse后的语句r=1。第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所以不做任何操作。执行下面的r+=3操作,r的值变为6。判断第四个讧条件,d==4条件成立,执行r+=4操作,结果为10。
8.B
9.C
10.D
11.D本题考查如何引用数组元素的地址。选项A)中,p5引用的是af51的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误;选项B)中,*a1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。
12.D
13.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。
14.D
15.C
16.D二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。
17.C
18.B\nscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf('%c%c',&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。
\n
19.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。
20.A
21.实例将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。
22.本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。
23.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。
24.概念概念
25.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。
26.1
27.880
28.10.5
29.3232解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。
30.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。
31.程序正确性程序正确性
32.sd&km=id[j++]=ijv
33.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。
34.t>=le-5;t=t/n;
35.k-1k-1解析:第一处应该是定义的某个变量,读程序可知,变量k没有定义,所以此处应填入k。字符串的倒序,就是将首尾对应的字符(数组元素)两两交换。可用两个游标变量i和j分别代表前端元素的下标和后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二处应填入-1。
36.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。
37.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。
38.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。
39.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。
40.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。
41.B解析:函数fopen(coostchar*filename,constchar*mode)的功能,是以mode指定的模式打开filename指定的磁盘文件;fclose(FILE*fp)的功能是关闭文件指针印指向的文件;函数fscanf(FILE*fp,constchar*format[,address,--])的功能是根据format中的格式从fp指向的文件中读取数据,并存入到相应的address指向的变量中。函数fprintf(FILE*fp,constchar*format[,argument,--])的功能是把argument列表中的表达式值写到fP所指向的文件中;本题中首先定义了一个文件指针fp,然后通过函数fopen以“w”的方式打开文件“d1.dat”,直接通过一个for循环,每循环一次调用函数fprintf将i的值写进fp所指的文件中,该循环共循环3次,循环完后fp所指文件的内容为123,然后通过fclose函数关闭fp所指文件。接着通过fscanf函数将fp所指文件的内容读出并赋值给变量k和变量n,由于fp所指文件中只有123没有分隔符,故只给k赋值为123,变量n的值依然为以前的值,故最后输出k和n的值为123,所以,4个选项中选项B符合题意。
42.A解析:本题考查while循环。先判断while循环的控制表达式是否成立,发现a>b>c不成立,所以不执行循环。直接输出a、b、c的值。
43.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。
44.B解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行a=f/=c*=(x=6.5),该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值变为6.5,然后执行c*=(x=6.5)相当于执行c=c*(x=6.5),此时c的值为65,接着向左执行f/c*=(x=6.5),语句相当于执行f=f/c,所以f的值为100/65≈1.538。接着向最右边执行“a=f”,由于a是整型变量,所以a最后去f的整数部分为1。程序最后输出的a、c、f和x的值(f和x只保留小数点后面1位)分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。
45.A
46.D解析:本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。因为数组名是一个指针常量,不可以被改变。选项C首先定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,这也是错误的。因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将一个常字符型指针赋给sp。这是可行的。所以,4个选项中选项D符合题意。
47.D解析:选项A、B、C中的说法都正确。测试的目的是设法暴露程序中的错误和缺陷,它是程序执行的过程,目的在于发现错误;好的测试在于能发现至今未发现的错误;成功的测试是发现了至今未发现的错误。
48.B解析:程序中首先定义了一个结构体,其成员为一字符数组和一浮点型数组。在main()首先定义了一个结构体数组并初始化。接下来在for循环中遍历了结构体数组中的第一个元素中数组成员即{“20021”,90,95,85”}循环结果为90+95+85=270最后sum为270,又输出格式为“%6.2f\\n”要求保留两位小数故最后输出为270.00。所以4个选项中B正确。
49.C解析:本题考查if语句。第一个if语句,先判断条件,发现a<b不成立,不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程c的值没有发生变化。
50.C解析:程序中for循环了三次,第一次i=0,执行switch语句中case0:分支,直到遇到default语句,退出switch,这里共执行了三个输出语句分别输出0,0,0,第二次循环i=1,switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出2、2。最后输出的结果为000122。
51.D
52.C解析:本题考查逻辑或运算。因为b>a为真,即n=1,则m不需再计算,保持原值,因此k值为1,m值仍为0。
53.B解析:在scanf('%f%f%f,&a,&b,&c);中,格式描述为'%f%f%f,当输入数据时,数据之间可用空格、制表符和回车符作为间隔符,而逗号不是合法的间隔符。
54.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。
55.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式才返回值是1;当“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1。所以返回值是1:选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4‖14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0‖1为1,因此,!1为0。
56.A解析:字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符ASCII码值较大时,该字符所在的字符串就是较大的字符串。主函数中调用了函数scmp(),分析不难知道该函数的作用是返回参加比较的两个字符串中的较小的字符串,它的主函数中定义了一个二维字符数组来存放三个字符串.接着通过for循环给每个字符串赋值,赋值后三个字符串分别为“abcd”、“abba”、“abc”,接着比较str[0]和str[1]的大小,根据字符串大小比较标准可知str[0]较小,然后通过函数strcpy()把str[0]中的字符串,拷贝到string中,然后比较string和str[2]的大小,比较结果是string较小,最后输出string的值为“abcd”,所以,4个选项中选项A符合题意。
57.C解析:选项A和B两个表达式都越界了;选项D中,*t[2]是目标变量,即—个整型值,而不是地址值。
58.D解析:本题考查指针变量的运用。选项A)、B)的指针定义错误,空指针NULL是对指针变量赋。值而得到的。例如:
#defineNULL0
int*p=NULL;
对指针变量赋。值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元,不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。选项C)中的*c=&t;错误,因为&t是地址,而*c是值。选项D)是让指针L指向字符串的末尾,即字符串的结束符。
59.A解析:继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的类的重复说明,从而体现出一般性与特殊性的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年12月滨州经济技术开发区下属街道办事处购买服务工作人员(46人)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 在市委统战部2025年春节节后收心会上的讲话稿
- 《时尚北京》杂志2025年第2期
- 人工智能-智能控制课件
- 员工素质模型(企业培训课件)
- 《青春杯辩论演讲》课件
- 美容店跨区域合作运营合同二零二五版
- 呼吸道对空气的处理课件
- 《个体社会化》课件
- 2025至2031年中国幼儿移动球篮行业投资前景及策略咨询研究报告
- 把子肉店创业计划书
- 综合楼装修改造项目 投标方案(技术方案)
- 10kV配网接地故障的处理
- 冀教版五年级上册英语全册单元测试卷(含期中期末试卷及听力音频)
- 静脉用药安全输注药护专家指引
- 华住酒店管理制度
- 教育科学与儿童心理学
- 2022高速公路隧道工程施工管理标准化手册
- 雨水花园设计
- 年智慧水厂大数据信息化建设和应用方案
- 光伏电缆桥架敷设施工方案
评论
0/150
提交评论