




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年河南省信阳市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是
A.A.331
B.41
C.2
D.1
2.下列叙述中正确的是()。
A.只能在循环体内和switch语句体内使用break语句
B.eotinue语句的作用是结束整个循环的执行
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用got0语句
3.视图设计一般有3种设计次序,下列不属于视图设计次序的是()。
A.自顶而下B.由内向外C.由外向内D.自底向上
4.判断一个循环队列cq(最多元素为m)为满的条件是()。
A.cq->rear-cq-front=m;
B.(cq->rear+1)%m=cq->front;
C.cq->front=cq->rear;
D.cq->rear=m-1;
5.下列程序的输出结果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64
6.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior
B.p->prior->prior
C.s->prior->next=s
D.s->prior->prior=s
7.以下定义语句中正确的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
8.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符()。
A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字或下划线中的任意一种
9.以下程序的输出结果是
#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
10.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序运行后的输出结果是()。
A.y=0B.y=-1C.y=1D.while构成无限循环
11.以下能正确定义一维数组的选项是
A.inta[5]={0,1,2,3,4,5}
B.chara[]={'0','1','2','3','4','5','\0'};
C.chara={'A','B','C'};
D.inta[5]="0123";
12.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain{intm=1,n=2,k=3;intS=ADD(m+n)*k;printf("s=%d",s);}A.sum=18B.sum=10C.sum=9D.sum=25
13.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。
A.3B.5C.7D.9
14.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.c语言中的文件是流式文件,因此只能顺序存取数据
15.以下选项中关于C语言常量的叙述错误的是()。
A.所谓常量,是指在程序运行过程中,其值不能被改变的量
B.常量分为整型常量、实型常量、字符常量和字符串常量
C.常量可分为数值型常量和非数值常量
D.经常被使用的变量可以定义成常量
16.由两个栈共享一个向量空间的好处是______。
A.减少存取时间,降低下溢发生的机率
B.节省存储空间,降低上溢发生的机率
C.减少存取时间,降低上溢发生的机率
D.节省存储空间,降低下溢发生的机率
17.
18.有以下程序:
程序运行后的输出结果是()。A.4284B.2870C.2668D.3981
19.若变量已正确定义,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。
A.a<>b+cB.ch=getchar()C.a==b+cD.a++
20.程序运行后的输出结果是()。A.0304.B.2050C.3344D.3040
二、2.填空题(20题)21.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【】(double,double);
main()
{doublex,y;
scanf("%1f%1f",&x,&y);
printf("%1f\n",max(x,y));
}
doublemax(doublea,doubleB)
{return(a>b?a:b);}
22.下列程序运行后的输出结果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
运行程序,输入HOWAREYOU。
23.下列程序的输出结果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
24.设当前盘为A盘,当前系统提示符为“>”在不改变当前盘情况下,显示C盘的当前目录路径,应使用命令【】。
25.下面的程序能求a:ab.c文件中最长行和它的位置。
#include<stdio.h>
main()
{intlin,i,j=0,k=0;
charc;
FILE*fp;
fp=(【】("a:ab.c","r");
rewind(fp);
while(fgetc(fp)!=EOF)
i=1;
【】
{i++;
j++;
if(i>=k){k=i;【】;}
}
printf("\n%d\t%d\n",k,lin);
【】;
}
26.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
27.软件开发环境是全面支持软件开发全过程的______的集合。
28.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
29.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。
30.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【】给出了数据库物理存储结构和物理存取方法。
31.已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&Ra;后b的值为______。
32.设有以下定义和语句,则*(*(p+2)+1)的值为【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
33.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"}1,k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}
34.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于【】的联系。
35.注释说明了程序的功能,它分为【】注释和功能性注释。
36.以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}
37.以下程序将两个数从小到大输出。请填空。
{floata,b,【】;
scanf(,【】&a,&b);
if(a>b)
{t=a;
【】;
b=t;
printf("%5.2f%5.2f\n",a,b);
}
38.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
39.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。
charch='B';
printf("%c%d\n",ch,ch);
40.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]){d[j]=【】;j++;}
d[j]=0;
三、1.选择题(20题)41.以下能正确定义二维数组的是______。
A.inta[][3];
B.inta[][3]={2*3};
C.inta[][3]={};
D.inta[2][3]={{1),{2},{3,4}};
42.在一棵二叉树上,第5层的结点数最多是()A.8B.9C.15D.16
43.有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');执行该程序段后,x的值为______。
A.真B.假C.0D.1
44.C语言规定,程序中各函数之间()
A.既允许直接递归调用也允许间接递归调用
B.不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
45.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
46.设有以下语句:structSS{intno;charname[10];}PERSON;则下面叙述中错误的是()
A.struct是结构体类型的关键字
B.structSS是结构体类型
C.PERSON是结构体类型名
D.name是结构体成员名
47.以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j]<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti;f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是()。
A.6B.4C.5D.3
48.下面程序运行后的输出结果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=-s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
49.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是
A.4B.3C.2D.1
50.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
51.在数据库管理系统提供的数据语言中,负责数据的查询及增、删、改等操作的是
A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制语言
52.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式
53.若运行时给变量x赋值12,则以下程序的运行结果是()。#include<stdio.h>main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}
A.0B.22C.12D.10
54.结构化程序设计的核心和基础是()。
A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法
55.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}执行后的结果是()。
A.输出字符a的ASCII码B.输出字符c的ASCII码C.输出字符cD.程序出错
56.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是
A.gets(&s[0]);
B.scanf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
57.若有说明语句:charch='\x41';,则ch中______。
A.包含4个字符B.包含2个字符C.包含1个字符D.字符个数不确定,说明不正确
58.下列选项中正确的语句是
A.chars[8];s={"Beijing"};
B.char*s;s={"Beijing"};
C.chars[8];s="Beijing";
D.char*s;s="Beijing";
59.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china"};等价于charstr[]={"china"};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
60.有以下程序voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其输出结果是:
A.5353B.5335C.3535D.3553
四、选择题(20题)61.有以下程序:
程序运行后的输出结果是()。
A.02356B.0235C.235D.2356
62.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。
A.k%2==0B.k%2==1C.!k%2==1D.都不同
63.下列程序的输出结果是()。
A.a=4,b=4
B.a=4,b=5
C.a=5,b=4
D.a=5,b=5
64.
下列程序的运行结果是()。
#include<stdio.h>
voidfun(int*S,int*p)
{staticintt=3:
*p=s[t];
t--;
}
voidmain
{inta[]={2,3,4,5),k;
intx;
for(k=0,k<4,k++)
{fun(a,&x);
printf("%d,",x);
}
}
A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
65.有以下程序:
程序运行后的输出结果是()。
A.120B.11C.6D.21
66.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是
67.
68.
69.若有定义语句:inta[21[3],*P[3];则以下语句中正确的是()。
A.p:a;B.p[0]=a;C.p[O]=&a[1][2];D.1a[1]=&a;
70.若有以下定义和语句:
则输出结果是()。
A.107B.105C.55D.58
71.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。
A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义
B.用户标识符可以由字母和数字任意顺序组成
C.在标识符中大写字母和小写字母被认为是相同的字符
D.关键字可用做用户标识符,但失去原有含义
72.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
73.下列关于栈的叙述正确的是()。
A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据
74.有以下程序段
structSTU
{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.260.00B.270.00
C.280.00D.285.00
75.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
76.
77.在Internet中,域名服务器的主要功能是实现()的转换。
A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问
78.以下函数返回a所指数组中最大值所在的下标值
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=iD.p=j
79.以下不能输出字符A的语句是()(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)。
80.有如下程序:
main()
{intx=1,a=0,b=0;
switch(x)
{
case0:b++;
casel:a++;
case2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
五、程序改错题(1题)81.下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。
注意:部分源程序在文件PROCl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。
参考答案
1.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。
2.A本题考查循环跳出的知识点:①break语句可以出现在switch循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环条件是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整介循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用90t0语句或者break语句。
3.C视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。
4.B
5.C本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。
6.D
7.BA选项中的变量b没有定义,不能直接给变量a赋值。C选项中,*b、*c表示的是一个实型变量的地址,不能将指针型变量b的地址赋值给指针型变量c。D选项中,“a=0.0”后面应该为逗号,不能是分号。故本题答案为B选项。
8.C
9.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。
10.B执行“y--”直到值为0。退出循环。由于“y--”是后缀自减运算,先使用再自减,因此退出循环时,y的值为-1。故本题答案为B选项。
11.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。
12.B本题考查带参数的宏的定义:“#defineADD(x)x+x”中X代表m+n,故s写成s=m+n+m+n*k=1+2+1+2*3=10。
13.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。
14.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。
15.D此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择D。
16.B
17.D
18.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。
19.A选项A是非法的表达式,C语言中没有“<>”运算符。故本题答案为A选项。
20.D[解析]第一次循环沩0.i%2为0.执行switch(a[0]%62)中的case0语句后内容即a[0]++,a[0]的值变成3;第二次循环的值为1.i%62为1.执行case1:a[]=0;所以a[1]的值变成0;第三次循环的值为2.i%62为0.执行switch([2]%62)中的case1语句后的内容a[2]--,a[2]的值变成4;第四次循环的值为3.i%2为1.执行case1:ai]=0;所以a[3]的值变成0.
21.doublemax或externdoublemaxdoublemax或externdoublemax解析:本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。
22.HOWHOW解析:在scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符中,则不能使用scanf()数,所以本题中输入空格就返回了'\\0\\,s数组也就确定了,后面的输入就不再读入数组s中。
23.21
24.CDC:(CD与C:中间至少要有一个空格)CDC:(CD与C:中间至少要有一个空格)
25.fopenwhile(fgetc(fp)!='\n')lin=jclose(fp)fopen\r\nwhile(fgetc(fp)!='\\n')\r\nlin=j\r\nclose(fp)
26.自顶而下自顶而下
27.软件工具软件工具解析:软件开发环境是各类软件开发工具的集合体。
28.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。
29.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。
30.内模式内模式解析:内模式又称为物理模式,它给出了数据库物理存储结构与物理存取方法。
31.11解析:字符空格的ASCII码不为0,所以本题中表达式!c的值为0,b=0&&1的结果显然为0。
32.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。
33.D
34.一对多一对多解析:实体之间的联系可归结为一对一、一对多与多对多的联系。如一个学校有许多教师,一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于一对多的联系。
35.序言性序言性解析:注释一般分为序言性注释和功能性注释。
36.13431
37.t"%f%f"a=b
38.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。
39.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。
40.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。
41.B解析:(1)二维数组的定义
二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。
二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。
(2)二维数组元素的引用
二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式;其范围为:0~(常量表达式-1)。
(3)二维数组的初始化
可以用以下方法对二维数组元素初始化。
①分行给二维数组赋初值,例如;
inta[2][2]=({1,2),{3,4));
这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第2个大括号内的数据赋给第2行的元素,即按行赋值。
②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。
③可以对部分元素赋初值,没有初始化的元素值为0。
④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。
42.DD)根据二叉树的性质:二叉树第i(i≥1)层上至多多有2i-1个结点。得到第5层的结点数最多是16个。
43.D解析:a&&b的值为true,c<'B'的值也为true,所以(a&&b)&&(c<'B')的值为true。但x是int型变量,所以(a&&b)&&(c<'B')的值最后要从bool型转换为int型赋给x。这样x的值应为1。
44.A解析:C语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。
45.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。
46.C
47.C解析:函数f()的功能是利用选择法把个具有n行的二维数组中按行存放的n个字符串由大到小排序。在主函数中定义了一个二维字符数组p并给它按行赋初值,然后调用f()函数,把它按行从大到小排列。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串。由此可知最大的字符串为'dcdbe',排序后存放在第一行,其首地址为p[0],在输出语句输出的p[0]指向的字符串长度是5。所以4个选项中C正确。
48.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及(4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。
49.A解析:本题考核的知识点是数组的定义、赋初值以及函数调用的组合应用.本题中函数sum(int*A)的作用是:将形参a所指的数组中的第二个元素的值a[1]赋给第一个元素a[0]。主函数中定义一个长度为10的整型数组并赋初值,接着执行一个for循环,该循环共执行了3次.当i=2时,调用函数sum(&aa[2]),主函数中将&aa[2]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[2]和aa[3],故执行完该函数后将aa[3]的值赋给aa[2],即aa[1]=aa[3]=4,当i=1时,调用函数sum(&aa[1]),主函数中将&aa[1]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[1]和aa[2],故执行完该函数后将aa[2]的值赋给aa[1],即aa[1]=aa[2]=4;当i=0时;调用函数sum(&aa[0]),,主函数中将&aa[0]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[0]和aa[1],故执行完该函数后将aa[1]的值赋给aa[0],即aa[0]=aa[1]=4;故最后输出的aa[0]的值为4,所以,4个选项中选项A符合题意。
50.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。
51.C【解析】在数据库管理系统提供的数据语言中,数据操纵语言负责数据的查询及增、删、改等操作。故答案为C。
52.C解析:在C语言中,引用数组元素时,其数组下标的数据类型可以是整型常量,也可以是整型表达式。
53.A解析:条件运算符“?:”是三目运算符,其形式为:
表达式17表达式2:表达式3
当表达式1的值为真时,则表达式2的值为整个表达式的值;如果表达式1的值为假,则表达式3的值为整个表达式的值。题中,表达式x>12的结果为假,所以将表达式x-12的值0作为y的值。
54.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。
55.D解析:因为字符数组s1)中的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。
56.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。
57.C解析:'\\x41'是转义字符,x表示41是十六进制数,41是字母a的ASCII码值。
58.D解析:本题考核的知识点是字符欺组初始化及字符型指针的应用。字符数组初始化可以有两种方式:方式一,按单个字符的方式赋初值。方式二,把一个字符串作为初值赋给字符数组。比如:charch[5]=rabc”),选项A属于这种情况,但是选项A定义的字符数组长度为8,由于最后还要加一个“\\0”做结束标志,所以赋给他的字符串长度应小于等于7,所以选项A不正确;在给字符数组赋初值的时候,应该用花括号“{”和“}”将字符串括起来,故选项C不正确。将字符型指针变量指向字符串也有两种方法,一是在定义指针变量时就给其赋初值,比如:char*p='student';二是给指针变量赋值,比如:p='student';(p已经被定义为字符型指针变量;),故选项D正确,而选项C中的花括号是多余的,应该去掉,所以,4个选项中选项D符合题意。
59.C解析:选项A)char*a;*a=“china”应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。
60.B解析:函数间的参数的传递有两种情况,第一种情况变量作为形参时的参数传递,变量作为形参时,要求对应的实参应为变量或表达式,变量作为函数的参数其传递方式是“值传递”,该种情况下,形参被赋值为实参的值,然后实参与形参再无联系。也就是说对形参的改变将不再影响实参;第二种情况是地址或数组名作为形参时的参数传递,该种情况下对形参的改变将对实参产生影响。本题中函数swapl()是传递的地址。所以对该形参c的改变将影响实参,分析可知该函数的作用,是使数组c的第一个元素和第二个元素的值互换。主函数中调用该函数将a作为实参传递给形参c,故执行该函数后a的第一个元素和第二个元素的值将交换。分别为5和2。函数swap2()是值传递的,所以该函数执行后对数组b将没有任何改变,此时该数组的第一个和第二个元素依然为3和5,因此最后的输出为5、3、3和5。
61.Ck的值为5,逐个对caBe语句进行匹配,均不匹配,执行default下的语句n=0;k一一。再执行case2:ca804:后面的语句n+=2;k一一;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&ll<5条件判断为真。第二次执行循环体,执行case3:后面的语句n+=1;k一一;。再执行break语句跳出循环,此时打印n的值3,此时k的值为2。第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;。执行break语句跳出循环体。打印n的值5。此时n不满足条件k>0&&n<5,所以结束循环。整个程序的打印结果为235。
62.BA选项说的是偶数,B选项求的是奇数,C选项求的是偶数,而题目求的是奇数。
63.Bcontinue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。
64.A
\n依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
\n
65.Dfun函数中的变量X为静态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用fun函数,x的定义只在第一次调用时有效,从第二次调用开始,x的定义相当于不存在,直接使用上次X的值。fun函数被调用了5次,每次调用后的返回值累加到s上。5次调用后,x的值为6,8的值为1+2+3+4+5+6=21。因此D选项正确。
66.B本题中,“%d%d%d”表示按整型数形式输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。选项B中不应该使用逗号。
67.B
68.B
69.CA选项错误,因为P是指向一个指针数组,作为数组名,不能指向别的地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年-重庆市建筑安全员知识题库
- 2025年青海省安全员C证考试(专职安全员)题库及答案
- 实施防火阻燃面料安全生产制度
- 梳理陪诊师考试知识框架的试题及答案
- 2025年高吸收加脂剂项目建议书
- 2025年湖南建筑安全员《B证》考试题库及答案
- 2024年陪诊师考试纵深理解与总结:试题及答案
- 2024年全球粮食安全与地理因素试题及答案
- 智能家电智能家居平台及设备整合解决方案
- 深入剖析全媒体运营师职能定位:试题及答案
- 多重耐药菌防控专家共识
- 教育家的师德情怀(终稿)课件
- 复变函数与积分变换全套课件
- 厂内机动车辆课件
- 学校食堂餐厨具操作规程
- DB32T 3916-2020 建筑地基基础检测规程
- 公务员登记表
- 自动控制原理全套课件
- 质量部KPI考核指标
- 肩关节镜下肩袖修补术的护理查房ppt
- 菠菜色素提取和分离
评论
0/150
提交评论