2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022-2023年山东省烟台市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在C语言中,退格符是

A.\nB.\tC.\fD.\b

2.有以下程序:

程序运行后的输出结果是()。

A.02B.13C.57D.12

3.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

4.直接选择排序的时间复杂度为()。(n为元素个数)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

5.已知各变量的类型说明如下则以下符合C语言语法的表达式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)

6.以下数据结构中,()是线性结构。

A.有向图B.栈C.线索二叉树D.B树

7.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序运行后的输出结果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

8.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

9.有以下程序程序运行后的输出结果是()。

A.21B.11C.20D.10

10.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称______。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

11.在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

12.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

A.1267B.1256C.1278D.1245

13.下列叙述中正确的是:()A.C语言程序中,main()函数必须在其它函数之前,函数内可以嵌套定义函数

B.C语言程序中,main()函数的位置没有限制,函数内不可以嵌套定义函数

C.C语言程序中,main()函数必须在其它函数之前,函数内不可以嵌套定义函数

D.C语言程序中,main()函数必须在其它函数之后,函数内可以嵌套定义函数

14.已知一个长度为32的有序表,若采用二分查找一个不存在的元素,则比较次数最多是()

A.4B.5C.6D.7

15.对于如图所示二叉树采用中根遍历,正确的遍历序列应为()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

16.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()最节省时间。

A.堆排序B.希尔排序C.快速排序D.希尔排序

17.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

当执行程序时,输出的结果是()。

A.-1B.1C.4D.0

18.以下()不是队列的基本运算

A.从队尾插入一个新元素B.从队列中删除第i个元素C.判断一个队列是否为空D.读取队头元素的值

19.若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

20.以下能正确定义一维数组的选项是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

二、2.填空题(20题)21.若采用直接插入法对字母序列(W,S,E,L,X,G,I)进行排序,使字母按升序排列,那么第一次排序的结果为【】。

22.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

for(i=1;i<n;i++)

if(a[j-1][

23.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

24.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

25.对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试和动态测试。代码检查属于______测试。

26.以下程序的输出结果是______。

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

27.下面程序的运行结果是【】。

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

28.二叉树的遍历可以分为三种:前序遍历、()遍历和后序遍历。

29.设y为血型变量,请写出描述“y是偶数”的表达式______。

30.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。

main()

{inta;floatb;

【】

【】}

输入形式:3.52<空格>6<回车>

输出形式:a*b=21.12

31.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta=10,b=3;

printf("%d,",a%b);

printf("%d,",(a-b,a+b));

printf("%d\n",a-b?a-b:a+b);

}

32.软件工程研究的内容主要包括:【】技术和软件工程管理。

33.fseek函数的正确调用形式是【】。

34.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

35.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

36.下列的for语句的循环次数为______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

37.下面程序的输出结果是______。

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

38.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。

structlink

{chardata;

structlink*next;};

structlink*p,*first;

intc=0;

p=first;

while(【】)

{c++;

p=【】;}

39.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

#include<stdio.h>

main()

intt=0.s=0,i:

for(i=1;i<=5;i++){t=i+【】;s=s+t;}

prinff("s=%d\n".s);}

40.以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}

三、1.选择题(20题)41.下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.数组元素引用不合法,输出结果不定

42.根据下面的定义,能打印出字母M的语句是()。structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};

A.printf("%c\n",class[3].name};

B.printf("%c\n",class[2].name[0]);

C.printf("%c\n",class[3].name[1]);

D.printf("%c\n",class[2].name[1]);

43.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。

A.12B.15C.16D.20

44.在具有n个结点的二叉排序树上插入一个新结点时,根据n个数据元素生成一棵二叉排序树时,其时间复杂性大致为______。

A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

45.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是

A.0B.9C.6D.8

46.有以下程序main(){intc=35;printf("%d\n",c&c);}程序运行后的输出结果是______。

A.0B.70C.35D.1

47.下列程序的输出结果是______。main(){unsignedshorta=65536;intb;printf("%d\n",b:a);}

A.0B.1C.2D.3

48.在面向对象方法中,如果“鸡”是一类对象,“公鸡”、“母鸡”等都继承了“鸡”类的性质,因而是“鸡”的()。

A.子类B.实例C.对象D.父类

49.在printf函数中用来输出十六制无符号的格式字符是()

A.d格式符B.x格式符C.u格式符D.o格式符

50.分布式数据库系统不具有的特点是()。A.A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余

51.若输入60和13,以下程序的输出结果是()#defineSURPLUS(a,b)((a)%(b))main(){inta,b;scanf("%d,%d",&a,&b);printf("%d\n",SURPLUS(a,b));}

A.60B.13C.73D.8

52.设有定义语句:intx[6]={2,4,6,8,5,7),*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。

A.for(i=0;i<;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

53.下列程序的输出结果是()。main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}

A.6,1B.2,1C.6,0D.2,0

54.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

55.下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!='a')str[j++]=str[i];str[j]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]%s",str);}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

56.若定义staticinta[2][2]={1,2,3,4},则a数组的各数组元素分别为______。

A.a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4

B.a[0][0]=1,at0][1]=3,a[1][0]=2,a[1][1]=4

C.a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1

D.a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1

57.以下叙述中错误的是()。

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

58.在设计程序时,应采纳的原则之一是______。

A.程序结构应有助于读者理解B.不限制goto语句的使用C.减少或取消注解行D.程序越短越好

59.有下列程序:main(){inty=20;do{y--;}while(--y);printf("%d\n",y--);}当执行程序时,输出的结果是()。

A.-1B.1C.4D.0

60.结构化程序流程图中一般包含3种基本结构。下述结构中,______不属于其基本结构。

A.顺序结构B.嵌套结构C.循环结构D.条件结构

四、选择题(20题)61.

62.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()。

A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)

63.

以下程序的输出结果是()。

intf(intA)

{returna%2;}

main

{ints[8]={1,3,5,2,4,6},i,d=0;

for(i=0;f(s[8]);i++)d+=s[i];

printf("%d\n",d);

}

A.9B.11C.19D.21

64.有以下程序

#include<stdi0.h>

main()

{inta[]={2,3,5,4),i;

for(i=0;i<4;i++)

switch(i%2)

{case0:switch(a[i]%2)

{case0:a[i]++;break;

casel:a[i]--;

}break;

case1:a[i]=0;

}

for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");

}

程序运行后的输出结果是()。

A.3344B.2050C.3040D.0304

65.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

66.有以下程序程序运行后的输出结果是()。

A.3,3,3B.2,2,3C.1,2,3D.1,1,3

67.有以下程序:

程序的运行结果是()。

A.1234B.5678C.9101112D.1111

68.

69.下列关于算法复杂度描述正确的是()。

A.算法的时间复杂度是指算法执行的时间

B.算法的空间复杂度是指执行这个算法所需的内存空间

C.一个算法的空间复杂度大,则其时间复杂度必定大

D.一个算法的空间复杂度大,则其时间复杂度必定小

70.下面结构体的定义语句中,错误的是()。

A.

B.

C.

D.

71.有以下程序程序运行后的输出结果是()

A.一20B.一l2C.0D.10

72.

73.下列关于C语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由数据序列组成,可以构成二进制文件或文本文件

D.文件由字符序列组成,其类型只能是文本文件

74.有以下程序

75.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

76.

77.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。

A.两个语句都是将变量a的值赋予变量P

B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P

C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D.两个语句都是使P指向变量a

78.

79.

80.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charc;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j++)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=c;

}

}

voidmain

{

charstr[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\n\nBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%s",str);

}

六、程序设计题(1题)82.M名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:在C++语言中退格符表示为\\b退格。注意:其他转义字符的意义:\\n表示回车换行,\\t表示横向跳到下一制表位置,\\v表示竖向跳格,\\r表示回车,\\f表示走纸换页,\\\\表示反斜线符,\\a表示鸣铃,\\ddd1~3位表示八进制数所代表的字符,\\xhh1~2位表示十六进制数所代表的字符。

2.D本题考查逻辑运算符的”短路”现象,由于k的值为0,表达式首先去求k++的值,因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n++>2,不再对它进行求值,即k的值加1,n的值不变。

3.D解析:主要考查运算符的优先级。sizeof的优先级最高,后面的顺序是:%、<<、>,优先级最低的是“=”。

4.D

5.A

6.B

7.D自增运算符是将运算对象的值增1,它有前缀形式“++a”和后缀形式“b++”。其中“++a”表示首先将a的值自增1,然后表达式“++a”的值就是自增后a的值;而“b++”表示首先将b的值作为表达式的值,然后再将b的值自增1。本题中,a的初值为10,b的初值为11,则表达式“++a==b++”,等价于“11==11”,条件为真,所以输出“T”。if语句执行完后,a的值为11,b的值为12,输出“a=11,b=12”。故本题答案为D选项。

8.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

9.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

10.A解析:希尔排序法的基本思想是:将整个无序列分割成若干小的子序列分别进行插入排序。

11.B

12.D解析:putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。

13.B每个C程序有且只有一个主函数main,C程序总是从main函数开始执行,main函数后面的一对圆括号不能省略,main函数可以位于程序的任意位置。函数不可以嵌套定义,但函数可以嵌套调用。

14.C

15.D

16.B

17.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。

18.B

19.A符号<>不是C语言中的运算符,所以不能替代。

20.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

21.SWELXGI

22.本题程序的流程是:让i;j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以s[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。\r\n\r\n

23.概念(或概念级)概念(或概念级)

24.str[i]或str+iistr[i]或str+i\r\ni

25.静态静态解析:静态测试包括代码检查、静态结构分析,代码质量度量等。静态测试不实际运行软件。

26.246

27.x=11x=11解析:在对无符号数的右移是高位补0。

28.中序中序解析:二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根

29.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。

30.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

31.11371,13,7解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1;②(表达式1,表达式2)形式的结果为最后一个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13;③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。

32.软件开发

33.fseek(文件指针位移量起始点)fseek(文件指针,位移量,起始点)解析:本题考查函数fseek的用法。fseek函数的调用形式为:

fseek(文件指针,位移量,起始点)

“起始点”用0,1或2代替,其中,0代表“文件开始”;1为“当前位置”;2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。

34.x/y=%dx/y=%d解析:本题考查prinff语句的输出格式。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf('<格式化字符串>”,<参最表>)其中,格式化字符串包括两部分内容。一部分足正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一

35.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

36.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。

37.

38.p!=NULLp->nextp!=NULL\r\np->next解析:结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的next指针一样。注意:掌握可以对链表进行的操作。

39.t*10t*10解析:程序中变量,用于存放表达式1+12+123+1234+12345之和,变量t用于存放其表达式的各项。当i=1时,要使t=1;i=2时,t=12;i=3时,t=123;依此类推。每一次的t值是用上一次的t乘以10再加上此次的i的值,所以本题答案为t*10。

40.swap(st);swap(s,t);解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。

41.B解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

42.B解析:在结构体数组class[10]的初始化列表中只有第5个初始值中包含大写字母M,而该结构体只有两个成员变量,所以每两个初始值初始化一个数组元素,故第5个初始值是属于第3个数组元素class[2]的前一个成员变量的,选项A和C不正确。又因为‘M’是“Mary”的第一个元素,所以应该输出class[2]的name[0],B是正确答案。

43.A解析:本题考查带参数的宏定义,参数只是简单的替换而不是求出其值后再替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值,即3*4的值,其结果为12。

44.D

45.C解析:函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。

46.C解析:位与运算是将两个运算分量看作两个二进制数,然后对两个二进制数的相应位进行与运算,若同时为1则结果相应位为1,否则结果相应位为0。因此,当两个运算分量相同时,它们的相应位肯定也相同,即不同为1就同为0。所以得到的结果和运算分量也相同。所以,4个选项中选项C)符合题意。

47.A

48.A解析:面向对象方法中,继承是表示类之间的相似性的机制。如果类X继承类Y,则X为Y的子类,Y为X的父类(超类)。如果“鸡”是一类对象,“公鸡”、“母鸡”等都继承了“鸡”类的性质,因而是“鸡”的子类。

49.B

50.D解析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多的,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。

51.D

52.D解析:本题中首先定义了一个了维数组并初始化,接着定义了一个指针变量p指向数组x。因此可以通过指针p的下移,即每次加1引用数组x中的元素,来指向数组中的每个元素,这样循环6次即可引用数组的每个元素。选项A和C,*和++的优先级相同且都具有右结合性,p++是先使用p的值再对p加1,即先输出*p的值,再将指针下移一位。选项B是取*(p+i)所对应的存储单元中的数据输出,随着i的递增输出x数组的6个元素。选项D中表达式为(*p)++,该表达式是先取*p的值然后将其值加1,而没有将指针下移一位,故选项D不正确。所以,4个选项中选项D符合题意。

53.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

54.DD。【解析】本题主要考查对排序算法的理解。冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较。第一趟冒泡排序使最大的关键字元素放到最后。以此类推,进行第2~n次冒泡排序。如果在排序过程中不存在逆序,则排序结束。在最坏情况下,冒泡排序中,若初始序列为“逆序”序列,则需要比较n(D-1)/2次。快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序。对于快速排序,当初始记录序列按关键字有序或基本有序时,快速排序退化为冒泡排序,最坏情况下比较次数为n(n-1)/2。

55.A解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

56.A解析:C语言中二维数组数组元素的排列顺序是按行依次存放的,所以A是正确选项。

57.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

58.A解析:程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。因此选项A是正确答案。程序滥用goto语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。因此选项B、C、D都是错误的。

59.D解析:本题考查do…while循环。当--y是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。

60.B解析:结构化程序流程图中包括顺序结构、条件结构和循环结构3种基本结构,而不包含嵌套结构。

61.B

62.B本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首行元素地址赋给了指针数组cp。选项A,cp+1是指将数组c的首行地址加l,即为第二行地址;选项B,*(cp+3)是地址,等于数组C的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C,*(cp+1)+3是地址,等于数组C的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。

63.A

\n在程序中当i=0时,s[o]=1,f(s[0])为1,执行d+=s[0],d的值为1,i++也变为1。当i=1时,s[1]=3,f(s[1])为1,也为非0,继续执行后面的表达式,此时d的值为1+3=4,继续着i++变为2,接着执行for循环,可知for循环的目的是把S数组中的奇数相加,因此最后d的值为1+3+5为9,故选择A选项。

\n

64.C\n本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论