版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述正确的是()。
A.“charc1,*c2,*c3[10];”是合法的变量定义语句
B.数组说明符的方括号中不能使用表达式
C.数组元素下标可以是非整数
D.若有定义“chararray[4];”,则语句“printf(“%c”,array[“3”]);”是合法的
2.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。structnode{hardata;structnode*next;)*P,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
3.串的长度是指()。
A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数
4.算法分析的目的是()。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易读性和文档性
5.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
6.
7.有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",'m',85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",'f',95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是()。A.A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
8.下面程序段的时间复杂度为()。
A.O(n)B.O(n2)C.O(1)D.O(nlog2n)
9.可以判断一个有向图中是否含有回路的方法为()。
A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径
10.下面说法正确的是()。A.A.一个C程序可以有多个主函数
B.一个C语言的函数中只允许有一对花括号
C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内
D.在对C程序进行编译时,可以发现注释行中的拼写错误
11.与单链表相比,双向链表的优点之一是()。
A.插入、删除操作更加简单B.可以随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更加灵活
12.是哈希查找的冲突处理方法()。
A.求余法B.平均取中法C.二分法D.开放地址法
13.
14.数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为()。
A.CB.BasicC.DDLD.DML
15.设主串T='aabaababaabaa',子串P:'abab',则简单模式匹配算法中直至匹配成功,单个字符比较的次数为()。
A.12B.13C.14D.15
16.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()。
A.while((ch=getchar())!='N')printf("%c",ch);
B.while(ch=getchar()!='N')printf("%c",ch);
C.while(ch=getchar()=='N')printf("%c",ch);
D.while((ch=getchar())=='N')printf("%c",ch);
17.以下说法正确的是()。
A.函数可以返回另一个函数的整个函数体
B.函数返回值只能是基本数据类型的数值或指针
C.函数返回值可以是一个指向函数的指针
D.函数返回值可以是一个数组,同时返回多个值
18.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩
19.
20.
二、2.填空题(20题)21.以下程序运行后的输出结果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
22.以下程序段的输出结果是【】。
main()
{inta=2,b=2,c=4;
a*=16+(b++)-(++C);
printf("%d",a);
}
23.以下函数fun的功能是返回str所指字符中中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为“Hello!”,c中的字符为'e',则函数返回字符串"ello!"的首地址。若str所指字符串为空中或不包含c中的字符,则函数返回NULL。请填空。
char*fun(char*str,charc)
{intn=0;char*p=str;
if(p!=NULL)
while(P[n]!=c&&p[n]!='\0')n++;
if(p[n]=='\0')retumNULL;
return(【】);
}
24.设有以下定义和语句,则*(*(p+2)+1)的值为【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
25.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i){i=x[m];p0=m;}
elseif(x[m]<j){j=x[m];p1=m;}
}
t=x[p0];x[p0]=x[n-1];x[n-1]=t;
t=x[p1];x[p1]=【】;【】=t;
}
main()
{inta[10],u;
for(u=0;u<10;u++)scanf("%d",&a[u]);
f(a,10);
for(u=0;u<10;u++)printf("%d",a[u]);
printf("\n");
}
26.下列程序的输出结果是______。
#defineLEN5
inta[LEN],k;
main()
{fun1();
fun2();
}
fun1()
{for(k=0;k<LEN;k++)
a[k]=k;
}
fun2()
{intk;
for(k=0;k<LEN;k++)
printf("%d",*(a+k));
}
27.如果一个工人可管理多个设备,而一个设备只被一个工人管理,则卖体“工人”与实体“设备”之间存在【】关系。
28.下面程序将二维数a的行和列元素互换后存放另一个二维数组b中。请填空。
main()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf("arraya"\n");
for(i=0;i<=1;i++)
{for(j=0;【】;j++)
{printf("%5d",a[i][j]);
【】;}
printf("\n");}
printf("arrayb:\n");
for(i=0;【】;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");}}
29.执行以下程序后sum的值是【】。
main()
{
inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
30.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。
31.注释一般分为序言性注释和______注释。
32.在运算过程中,能够使空表与非空表的运算统一的结构是【】。
33.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。
34.以下函数用来在w数组中插入x,w数组中的数已按由小到大的顺序存放,n为数组中存放的数的个数。插入后数组中的个数仍然有序。请填空,使之完整。
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
whiel(x>w[p])【】;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;
}
35.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。
36.函数调用语句:“fsets(buf,n,fp);”从fp指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
37.常用的黑箱测试有等价类划分法、【】和错误推测法3种。
38.软件危机的核心问题是【】和软件开发效率低。
39.在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是【】。
40.需求分析的最终结果是产生【】。
三、1.选择题(20题)41.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。
A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定
42.以下程序的输出结果是______。main(){union{chari[2];intk;}r;r.i[0]=2;r.i[1]=0;printf("%d\n"r.k);}
A.2B.1C.0D.不确定
43.有下列二叉树,
对此二叉树前序遍历的结果为()。
A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI
44.以下能正确定义二维数组的是()。
A.inta[][3];
B.inta[][3]={2*3};
C.inta[][3]={};
D.inta[2][3]={{1},{2},{3,4}}:
45.若x和y代表整型数,以下表达式中不能正确表示数学关系|x—y|<10的是()。
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
46.以下结构体类型说明和变量定义中正确的是()。
A.typedefstruct
B.structREC;{intn;charc;}REC;{intn;charc;};RECt1,t2;RECt1,t2;
C.typedefstructREC;
D.struct{intn=0;charc='A';}t1,t2;{intn;charc;}REC;RECt1,t2;
47.结构化程序设计主要强调的是()。
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性
48.若有定义inta[5],*p=a;则正确引用数组元素的是()。
A.*&a[5]B.*a+2C.*(p+5)D.*(a+2)
49.下列关于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
50.若有下面的说明这定义:structtest{intm1;charm2;floatm3;unionuu{charu1[5];intu2[2];}ua;}myaa;则sizeof(structtest)的值是
A.12B.16C.14D.9
51.有以下定义:#include<stdio.h>chara[l0],*b=a;不能给a数组输入字符串的语句是______。
A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(b);
52.表达式“~9&9<<1|4”的值为()。
A.0B.4C.5D.22
53.十六进制数BB转换成十进制数是()
A.192B.256C.187D.121
54.有以下程序:main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf("%d\n",d);elseif((c-1>=d)==1)printf("%d\n",d+1);elseprintf("%d\n",d+2);}执行后输出结果是______。
A.2B.3C.4D.编译时有错,无结果
55.有下列程序:main(){inty=20;do{y--;}while(--y);printf("%d\n",y--);}当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
56.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
57.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
58.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.a=('A'+c)%26-'a'
59.下面程序的输出是______。chars[]="ABCD";main(){char*p;for(p=s;p<s+4;p++)printf("%s\n",p);}
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
60.有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9);inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是______。
A.456B.258C.369D.789
四、选择题(20题)61.一个函数内有数据类型说明语句如下:
doublex,y,z(10)
关于此语句的解释,下面说法正确的是()。
A.z是一个数组,它有10个元素
B.z是一个函数,小括号内的10是它的实参的值
C.x是一个变量,小括号内的10是它的初值
D.语句中有错误,因为“z(10)”应该为“z[10]”
62.
63.当执行下面的程序时,如果输入ABC,则输出结罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789
64.
65.
66.下列判断正确的是()。
A.chara="ABCD":等价于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等价于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";
67.
68.下列数据结构中,属于非线性结构的是()。
A.带链队列B.循环队列C.带链栈D.二叉树
69.
70.以下选项中值为1的表达式是()。
A.
B.
C.
D.
71.
72.有以下程序:
main()
{inta[3][3],*p,i;
p=&a[1][1];
for(i=0;i<4;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是()
A)3B)6
C)9D)2
73.C语言结构体类型变量在程序执行期间,()。
A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中
74.有以下程序:
从第一列开始输入以下数据(<CR>代表一个回车符.:
2743<CR>
程序的输出结果是()。
A.66877B.668966C.6677877D.6688766
75.Internet使用的网络协议是()。
A.3CP协议B.TCP/IP协议C.UDP协议D.IP协议
76.
77.以下变量x、y、z均为double类型且已正确赋值,不能正确表示x/(y*z)的C语言表达式是()。
A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z
78.
79.以下叙述中错误的是()。
A.算法正确的程序可以有零个输入
B.算法正确的程序最终一定会结束
C.算法正确的程序可以有零个输出
D.算法正确的程序对于相同的输入一定有相同的结果
80.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析
五、程序改错题(1题)81.下列给定程序中,函数fIm和funx的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001。
.例如,若给m输入一100,n输入90,则函数求得的二个根为2.000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写函数proc,它的功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5
在C语言中可调用log(n)函数求ln(n)。
例如,若m的值为30,则proc函数值为8.640500。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#inclllde<stdio.h>
#include<math.h>
doubleproc(intm)
{
}
voidmain
{
system("CLS");
printf("%f\n",proc(30));
}
参考答案
1.AC语言规定定义数组时,数组的长度必须是整型常量,数组说明符的方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数,因此选项C错误。选项D中,“chararray[4]”数组的长度为4,“army[“3”]”中“3”是常量字符串,与C语言规定数组的下标必须是非负整数不符。故本题答案为A选项。
2.D由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next:r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
3.B解析::串的长度定义为串中字符的数目。所以B)为正确答案。C)答案不正确,因为串中可以含有相同的字符;A)答案不正确,因为串中可能含有相同的字母,而且也可能含有数字等其他非字母字符;D)答案不正确,因为空格也是一种字符,在计算长度时理应将其计算在内。
4.C
5.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
6.D
7.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。
8.A
9.C
10.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。
11.D
12.D
13.D
14.C解析:选项A)、选项B)显然不合题意。数据定义语言(DataDefinitionLanguage,简称DDL)负责数据的模式定义与数据的物理存取构建;数据操纵语言(DataManipulationLanguage,简称DML)负责数据的操纵,包括查询及增、删、改等操作。
15.A
16.A解析:while循环的执行过程如下:(1)计算while后面圆括号中表达式的值.当值为非0时,执行步骤(2);当值为0时,执行步骤(4)。(2)执行循环体一次。(3)转去执行步骤(1)。(4)退出循环。在选项A)中,表达式(ch=getchar())!='N'表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环.所以选项A)为正确答案。
17.C函数的返回值是通过return语句返回的,返回值是一个表达式,不限于基本数据类型或指针,也可以是结构体类型等,但不能是数组,选项A、B、D错误;函数的返回值可以是一个指向函数的指针,选项C正确。故本题答案为C选项。
18.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。
19.D
20.B
21.132132解析:本题考核的知识点是for循环与switch语句的综合运用。主函数中用了一个for循环,for循环里嵌套了一个switch语句,for循环了三次,当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各加1,变为1和1,然后遇到breake语句,退出switch语句;当i=10,i/10=1,执行switch语句中default分支,使k和n的值各加1,变为1和1,退出switch语句:当i=11时,i/10=1,执行switch语句中default分支,k和n的值各加1变,为2和3,退出switch语句,循环结束。故该空格处应该填132。
22.2626解析:a*=16+(b++)-(++c)等价于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值参加运算,再对b加1;++c是先c加1,再使用c的值参加运算。
23.str+n或p+nstr+n或p+n解析:此题主要是将形参c中的字符与str中的字符相比较,返回以形参c中字符开头的后续字符串,函数fun中的变量n用于记录形参c中字符在str字符串中的位置,故返回的结果用str+n或p+n表示。
24.6060解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+1)中的p+2指向二维数组a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。
25.x[0]x[0]x[0],x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。
26.01234。01234。解析:函数fun1给数组a的每个元素赋值,fun2则输出结果。
27.一对多一对多解析:实体之间的联系有3类:一对一,一对多,多对多。设有两个实体集E1和E2,如果E2中的每一个实体与E1中的任意个实体(包括零个)有联系,而E1中的每一个实体最多与E2中的一个实体有联系,则称这样的联系为“从E2到E1的一对多的联系”,通常表示为“l:n的联系”。由此可见,工人和设备之间是一对多关系。
28.j<2b[j][i]=a[i][j]i<=2j<2\r\nb[j][i]=a[i][j]\r\ni<=2解析:本题考查了二维数组元素的引用。a[i][j]表示的是二维数组a的第i+1,第j+1列的元素。
29.1515解析:程序的功能是求1、2、3、4、5的和即15。
30.输出结果输出结果解析:注意:测试的基本方法和步骤。
31.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,
32.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。
33.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。
34.++pw[i-1]
35.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。
36.buf的首地址buf的首地址解析:考查fgets()函数的功能,fgets()函数用来从文件中读入字符串。调用格式为:fgets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fgets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
37.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。
38.软件质量差软件质量差解析:大约在20世纪60年代末人们在计算机软件的开发和维护过程中,遇到了一系列严重问题,从而认识到软件危机的存在。软件危机的核心问题是软件开发的质量太差和软件系统开发的效率太低。
39.#include"stdio.h"#include'stdio.h'解析:使用putchar和getchar函数时,必须在程序的开头出现包含头文件#include'stdio.h'的命令行。putchar的函数调用形式为:putchar(字符变量或字符常量);getchar函数的调用形式为:变量=getchar();getchar后的一对圆括号内没有参数,但这一对圆括号不可少。
40.需求规格说明书需求规格说明书解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。
41.B解析:C语言以定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传绐形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。
42.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。
43.C解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。
44.B解析:(1)二维数组的定义
二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。
二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。
(2)二维数组元素的引用
二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式其范围为:0~(常量表达式-1)。
(3)二维数组的初始化
可以用以下方法对二维数组元素初始化:
①分行给二维数组赋初值
例如:inta[2][2]={{1,2},{3,4}};
这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第2个大括号内的数据赋给第2行的元素,即按行赋值。
②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。
③可以对部分元素赋初值,没有初始化的元素值为0。
④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。
45.C解析:选项A)中,abs本身就是求绝对值的函数,所以是正确的;选项B)是把|x-y|<10表示成了数学表达式中的-10<(x-y)><10,然后再用C语言规则表示出来的;选项D)相当于把|x-y|<10两边同时平方,此处表达也是正确的;而选项C)中!(x-y)<-10相当于(x-y)>=-10,!(y-x)>10相当于(x-y)>=-10,故选项C)相当于(x-y)>=-10,所以错误。
46.A解析:选项A中用typedef定义结构体类型名REC后,REC能够唯一地标识这种结构体类型,可以用REC定义变量,这是正确的结构体类型变量的定义,选项C是错误的。选项B中“structREC;”后面不应该加分号。选项D中的结构体是一个无名结构体类型,REC是结构体变量,不是结构体类型,因此不能用来定义结构体变量。
47.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。
48.D
49.A解析:线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。
50.A解析:本题考核的知识点是结构体变量的存储空间。结构体所占用的存储空间是其所有成员占用的存储空间之和,而共用体所占用的存储空间是成员中占用存储空间最大者的空间,共用体类型uu是结构体的成员,它所占的内存长度为最大成员的长度,即字符型数组u1的长度,即1×5=5。每个整型数据占用2个字节,每个字符型数据占用一个字节,单精度型数据占4个字节,myaa为结构体变量,它所占的存储空间为各个成员所占存储空间的之和,即2+1+4+5=12。所以,4个选项中A为所选。
51.B解析:a[0]是数组元素,不是数组名。
52.D解析:优先级由高到低的顺序为~、<<、&、|。9的二进制形式为00001001,4的二进制形式为00000100。~9即11110110。9<<1为00010010,11110110&00010010=00010010,00010010|00000100=10110即22。
53.C
54.B解析:C语言规定else总是和离它最近的if语句配对。故第一个else和第一个if配对,第二个else和第二个if配对。首先计算第一个if后面的表达式“a>b>c”,表达式“a>b”是为1,表达式“1>c”为0,所以执行else后面的语句。先执行if后面的表达式,“c-1>d”为真,值为1。“1==1”为真,执行printf语句。
55.D解析:本题考查do…while循环。当--y是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
56.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
57.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。
58.D解析:C语言中,字符数据参加运算时,实际上是其ASCII码参与运算。大写字母的ASCII码比其对应的小写字母的ASCII码小32。因此大写字母转化为小写字母只需将其加上32即可。所以选项B)、C)都符合条件,因为变量c中存储的是大写字母,所以“c-'A'”的值一定小于26,故选项A)与选项C)的含义相同。
59.A解析:在第一次执行for循环时,字符数组的首地址赋给了指针变量p,使得指针变量p指向了s的首地址,输出p所指向的字符串;第二次执行for循环时,p值增加1,p指向了s的第二个元素输出BCD;第三次输出CD;第四次输出D;直到P指向字符串的结束字符“\\0”,for循环终止抽行。
60.C解析:数组m初始化后结果为:m[0][0]=1、m[0][1]=4、m[0][2]=7、m[1][0]=2、m[1][1]=5、m[1][2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职场健康与安全承诺书9篇
- 新疆伊宁市第七中学重点达标名校2025-2026学年初三第一次诊断考试数学试题含解析
- 业务拓展合作意向邀请函(8篇)范文
- 依期完成交付目标承诺书(9篇)
- 费用预算编制及成本控制分析工具
- 企业年度财务规划及预算编制工具
- 食品质量安全诚信保证承诺书8篇
- 业务流程自动化设计工具包
- 客户服务热诚与行为规范承诺书(7篇)
- 企业内训材料制作模板知识传递系统性版
- 钢-混凝土组合桥梁设计规范2025年
- T/ISEAA 001-2020网络安全等级保护测评高风险判定指引
- 萃取和反萃取的应用-说播课课件
- 养生合伙人合同协议书
- 安置商铺置换协议书
- T∕CECS 21-2024 超声法检测混凝土缺陷技术规程
- 预防青少年药物滥用-主题班会课件
- 第5单元 你是我的镜子(教学设计)-四年级心理健康上学期同步备课系列(浙教版)
- 劳动争议处理方案
- 江苏省扬州市扬州梅岭教育集团2024-2025学年八年级下学期3月月考语文试题(原卷版+解析版)
- 统编历史七年级下册(2024版)第8课-北宋的政治【课件】h
评论
0/150
提交评论