2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

若变量均已正确赋初值,则以下语句中

错误的是()。

A.tl=t2;

B.t2.numl=tl.numl;

C.t2.mark=tl.Mark

D.t2.num2=tl.hum2;

2.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.A.必须是逻辑值

B.必须是整数值

C.必须是正数

D.可以是任意合法的数值

3.以下选项中,能表示逻辑值“假”的是()

A.1B.0.000001C.0D.100.0

4.在非线性结构中,每个结点()。

A.无直接前趋

B.只有一个直接前趋和个数不受限制的直接后继

C.只有一个直接前驱和后继

D.有个数不受限制的直接前驱和后继

5.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是

A.data的每个成员起始地址都相同

B.变量data所占内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf(“%I'm”,data.C);输出结果为5.000000

D.data可以作为函数的实参

6.一个有n个顶点的连通无向图至少有()条边。

A.n-1B.nC.n+1D.n+2

7.

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

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

9.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

10.有以下程序

#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

11.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

12.在决定选取何种存储结构时,一般不考虑()。

A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便

13.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之问的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

14.

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

16.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。

A.IB.JC.KD.H

17.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是()。A.A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

18.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

19.

20.

二、2.填空题(20题)21.算法的复杂度主要包括时间复杂度和______复杂度。

22.若x为int类型,请写出与!x等价的C语言表达式______。

23.软件定义时期主要包括______和需求分析两个阶段。

24.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

25.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

26.按“先进后出”原则组织数据的数据结构是[]。

27.栈和队列通常采用的存储结构是【】。

28.算法执行过程中所需要的存储空间称为算法的______。

29.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

30.下列程序的运行结果为【】。

main()

{

intx,y,z;

X=12;

y=012;

z=0l2;

printf("%d,%d,%d\n",x,y,z);

}

31.在软件生命周期中,【】阶段是花费最多、持续时间最长的阶段。

32.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

33.以下程序运行后的输出结果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

34.以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=【】;【】=a[N-1][i];}}

35.下面程序的功能是用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

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

}

36.有以下程序:

#include<string.h>

structSTU

{charname[10];

intnum;};

voidf(char*name,intnum)

{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};

num=s[0].num;

strcpy(name,s[0].name);

}

main()

{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;

p=&s[1];f(p->name,p->num);

printf("%s%d\n",p->name,p->num);

}

程序运行后的输出结果是【】。

37.数据流图的类型有【】和事务型。

38.软件工程学把软件从开始研制到最终软件被废弃的整个阶段叫做软件的【】。

39.【】是数据库设计的核心。

40.关系数据库的关系演算语言是以【】为基础的DML语言。

三、1.选择题(20题)41.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件—组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数。请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if(______)printf("%d",i);}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

42.若有以下说明和语句,则值为6的表达式是______。structstu{intn;structstu*next;};structstua[3],*p;a[0).n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next='\0';p=&a[0];

A.p++->nB.p->n++C.++p->nD.(*p).n++

43.若有如下程序:sub(p,n)int(*p)[3],n;{inti;for(i=0;i<=n;i++)printf("%d",p[i][2]);}main(){ints[3][3]={1,2,3,4,5,6,7,8,9};sub(s,2);}则程序运行后的输出结果是()。

A.369B.248C.456D.789

44.以下程序的输出结果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

45.下列变量定义中,合法的是______。

A.short_a=1-.le-1;

B.doubleb=1+5e2.5;

C.longdo=0xfdaL;

D.float2_and=l-e-3;

46.下列叙述中正确的是()。

A.程序设计过程中的主要工作是编制程序

B.程序设计的主要目标是编制出运行结果正确的程序

C.不良的程序设计风格会增加程序的复杂性

D.上述三种说法都不对

47.下列程序的输出结果是()。#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(5));}

A.5B.3C.7D.1

48.执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.不确定

49.以下选项中,当x为大于l的奇数时,值为0的表达式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

50.下列字符数组初始化语句中,不正确的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

51.有以下程序:#include<stdio.h>main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是()。

A.12353514B.12353513C.12343514D.12343513

52.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

53.假定w、x,y、z、m均为int型变量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;则该程序段执行后,m的值是()

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

54.以下程序的输出结果是()main(){inta[10]={1,2,3,4,5,6,7,8,9,10,},*p=a;printf("%d\n",*(p+2));}

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

55.若有如下程序:main(){inta,b,C,m,n,k;m=n=k=0;a=-1;b=2;C=3;if(c>0)m=a+b;if(a<=0){if(b>0)if(c<=0)n=a=b;}elseif(c>0)n=a-b;elsek/=c;printf("%d,%d,%d,",m,n,k);}则程序运行后的输出结果是()。

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

56.MIPS常用来描述计算机的运算速度,其含义是()。A.A.每秒钟处理百万个字符

B.每分钟处理百万个字符

C.每秒钟执行百万条指令

D.每分钟执行百万条指令

57.下面程序的输出是______。main(){intx=3,y=6,a=0;,while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

58.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错误

59.若要求从键盘读入含有空格字符的字符串,应使用函数

A.getc()B.gets()C.getehar()D.scanf()

60.下面程序段的运行结果是

chara[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、选择题(20题)61.以下选项中正确的语句组是()。

A.char*s;s={f.BOOK!”};

B.char*s;s:”BOOK!”:

C.chars[10];s=”BOOK!”;

D.cbars[];s:”BOOK!n:

62.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

63.

64.

65.有以下程序:

main

{inti,j;

for(j=10;j<11;j++)

{for(i=9;i<j;i++)

if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

输出结果是()。A.A.11B.10C.9D.1011

66.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

67.

68.有以下程序

69.以下定义数组的语句中错误的是()。

70.有以下程序段以下关于程序段执行情况的叙述,正确的是()。

A.当产生的随机数n为0时,结束程序运行

B.当产生的随机数n为4时,结束循环操作

C.当产生的随机数n为l和2时,不做任何操作

D.细循环语句固定执行8次

71.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

72.

73.

74.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

75.

76.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是

A.连接B.选择C.投影D.笛卡儿乘积

77.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式

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

A.28B.24C.32D.36

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C结构体变量中的第一成员都是数组,不能直接将变量tl的成员mark数组的地址赋给另一个变量t2的成员mark数组的地址。因为地址都是固定值,不能被赋值。结构体可以进行整体的赋值。

2.D

3.C\n本题考查逻辑值假,在程序中非0字符表示逻辑真,0表示逻辑假,所以答案选择C。

\n

4.D

5.C解析:本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等.本题定义的共用体中成员C所占的内存最多,因此选项B是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项A是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项D也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项C是错误的。

6.A

7.D

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

9.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。

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

11.A

12.A

13.C对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

14.B

15.A函数的功能是对数组某一区域内的元素隔个求和;a[3]=4,所以从4开始进行隔个求和,a[7]=8,即对4到8的元素隔个求和,4+6=10。

16.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六进制数,转为十进制数x=9。“printf(“%C\\n”,‘A’+9);”,输出格式要求是“%c”,因此将字符‘A’按字母顺序向后偏移9个位置,可得结果为“J”。故本题答案为B选项。

17.D解析:联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度…致,本题中float所占内存字节数为4,而\u3000int类型在TurboC\u30002.0中是占2字节、在VisualC++6.0中占4字节,所以int类型所占内存字节数不会超过float,那demo就与成员d2所占字节数是相同的,选项A的说法正确。联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。故选项B和C都是正确的。由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。故选项D不正确,答案应该选择D。

18.B

19.A

20.D

21.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

22.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

23.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

24.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。

25.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

26.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。

27.链式存储和顺序存储链式存储和顺序存储

28.空间复杂度空间复杂度解析:算法执行时所需要的存储空间,称为算法的空间复杂度。

29.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

30.12101812,10,18解析:本题定义了3个整型变量x、y、z,并分别用十进制数、八进制数、十六进制数为它们赋值。然后以十进制整型输出这3个变量。八进制数012的十进制表示为10,十六进制数0x12的十进制表示为18。此外输出函数格式控制中的“,”原样输出。

31.维护维护

32.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

33.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

34.a[0][i]b[i][o]a[0][i]\r\nb[i][o]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中。

35.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空从右边的括号中可以看出,这里应该填入一个fopen,整条语句用来打开一个名为text.dat的文件。第二空是一个while循环的循环条件表达式,循环体每次读取一个字符,并让count增1,所以循环条件应该是“如果文件还没结束”,故应该填!feof(fp)。

36.SunDan20042SunDan20042解析:f函数中形参1用的是显式传地址的方式,因此p->name的值发生改变,而形参2用的传值的方式,在调用时不改变实参的值,因此p->num的值不发生变化。

37.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

38.生命期生命期解析:软件的生存周期是软件工程最基本的重要概念。软件产品和其他产品的生产一样,都要经过分析、设计、制造、检测和运行使用几个阶段。通常,把软件从开始研制(形成概念)到最终软件被废弃这整个过程称为软件的生命期。

39.数据模型数据模型

40.谓词演算谓词演算

41.D解析:本题中需要填空的是for循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并与9取余为0即可满足本题的条件。

42.C解析:表达式p++->n相当于先取p->n的值(即a[0].n),再p++(指针后移指向元素a[1]):表达式p->n++相当于先取p->n的值(即a[0].n),再将p->n的值(即a[0].n的值)加1;表达式++p->n先将p->n的值加1(即a[0].n的值加1),可见,它的值应该是6。选项D和选项B一样。

43.A解析:本题首先定义了一个二维数组,然后将数组名作为参数传递给子函数sub(),在子函数中使用了一个循环,循环变量i从0递增到n(n为2),即循环了3次,依次输出数组的a[0][2]、a[1][2]、a[2][2]三个元素,所以程序运行后输出的结果是369,应该选择A。

44.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。

45.A

46.C解析:程序设计过程中包括很多步骤,编制程序只是其中的一步。所以,选项A错误。

程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程序是不够的,还应养成良好的程序设计风格。所以,选项B错误。

程序设计的根本目标是要降低程序的复杂性和提高程序的可读性。而程序的复杂性主要来自以下两个方面:问题固有的复杂性;不良的设计风格人为增加了程序的复杂性。所以,良好的设计风格对于降低程序的复杂性是很重要的,并且,好的设计风格是好的程序风格的基本保证。选项C正确。

47.A解析:本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)->fun3:a=3-fun(1)->fun(1):a=3,反推回去fun(3):a=3-3=0->fun(5):a=5-0=5,晕后的计算结果为5。

48.B解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。P[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

49.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。

50.A解析:本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。

选项A)中一个单引号内放了若干个字符是错误的;选项B)和选项D)中将一个字符串赋值给一个字符数组是允许的。

51.A解析:程序执行printf('%d%d',m++,++n);后,输出的是m和n+1的值1235,然后m+1=13,再执行printf('%d%d\\n',n++,++m);输出n和m+1的值3514,之后n+1=36。这里要注意的是m++和++m的区别:m++是先输出m的值,再执行m++;++m是先执行++m,再输出m的值。

52.A解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?c:d),首先求出条件表达式c<d?c:d的值等于2,再求条件表达式a<b?a:2的值,由于a-1<b-4成立,所以上述条件表达式的值等于1。

53.D

54.A

55.A解析:本题首先声明了6个int型变量,然后分别让m、n、k为0,a为-1,b为2,c为3。接下来因为c>O为真,故执行子句“m=a=b;”,结果使m的值变为1;然后判断a是否<=0,结果也为真,进入大括号里面;由于b>O为真,再判断c<=0,为假。所以子句“n=a=b;”没有执行,跳出大括号。而后面的elseif语句和else语句因为大括号的原因,使其对应第二个if语句,而第二个if语句的条件已满足(进入大括号之前),所以这两条else语句的子句不被执行,故最后输出结果为1,0,0,所以应该选择A。

56.C解析:计算机的性能在很大程度上是由CPU决定的,CPU的性能主要体现在它的运算速度,通常使用计算机每秒钟能够执行的指令条数来描述速度高低,可以用单字长定点指令的平均执行时间表示,单位是MIPS,它是Million\u3000of\u3000Instructions\u3000Per\u3000Second的缩写,意思是“每秒百万条指令”,也可以用单字长浮点指令的平均执行时间表示,单位是\u3000MFLOPS(Million\u3000Floating\u3000instructions\u3000Per\u3000Second)。

57.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体抽打过程如下:

第一次while循环:条件为真,执行a=a+1=1此时,x的值已为4,判断y<x不成立,继续执行循环;

第二次while循环:条件为假,此时x的值已为5,退出while循环,执行printf。

58.A解析:(rec4,rec5)是逗号表达式,它的值是rec5的值。所以该函数调用语句含有的实参个数是3。

59.B解析:scanf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

60.C解析:本段程序的作用是输出字符串'lanuage'中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放\'\\0\'。

61.B^选项去掉大括号就正确了;c选项和D|选项应在定义时赋初值。因此B选项正确。

62.C根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。

63.C

64.C

65.B本题考多循环的使用,当j=10,i=9时,循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。

66.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。

67.B

68.A本题考查的是文件操作。程序首先定义了一个文件指针pf,并使用fopen()函数以“wb+”方式新建一个可读写的二进制文件“123.dat”。然后使用fwrite()函数写入字符串s2的前7"1个字符。现在文件中的内容应该为“Beijin9”。接下来程序使用rewind()函数,将文件的读写指针调回起始位置。并又调用fwrite()函数写入字符串sl的前5"1个字符。所以文件原内容“Beijing'’的前5个字符被覆盖,结果为“Chinan9”,故本题应该选择A)。

69.AA)选项中定义的数组为2行4列,而赋值时赋成了3行,因此出错。

70.Acase常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从该case子句执行下去,不再进行判断,直到碰到bleak或函数结束为止。简单地说,break是结束整个循环体,而continue是结束单次循环。B)选项中当产生的随机数n为4时要执行打印操作。C)选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。由于存在break语句,因此for循环不是固定执行8次,执行次数与产生的随机数n有关系。故本题答案为A)。

71.D共用体变量中的所有成员共享一段公共存储区,所有成员的首地址相同。在每一个时刻所有的成员中只有一个有效,即只有最后一个被赋值的成员有效,其余的成员无效。

72.B

73.C

74.C题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

75.A

76.B笛卡儿乘积运算。假设关系R和关系S的元数个数与属性个数分别为m和n。R×S表示R和S的笛卡儿积,R×S={(m+n)个属性的一个元组集合,每个元组的前m个属性值来自R的一个元组,后n个属性值来自S的一个元组的所有组合}。

连接。它是从两个关系的笛卡儿乘积结果中选取属性间满足一定条件的元组,它不能实现题目中给出的条件。

投影。它是从关系中挑选若干属性组成新的关系,它是对关系进行列操作的方法。

选择。它是从关系中找到满足条件的所有元组的操作,即不改变关系表中的属性个数但能减少元组个数的操作,它是对关系进行行操作的方法。

77.C解析:在C语言中,引用数组元素时,其数组下标的数据类型可以是整型常量,也可以是整型表达式。

78.As得到全局变量a的值为4,第一次循环返回l2,第二次循环返回l2,累加结果为28。

79.B

80.B

81.\n\t(1)错误:while(i>j)

\n正确:while(i<j)

\n(2)错误:*str=0;

\n正确:*str=\0;

\n【解析】由函数proc可知,变量i和j分别存放的是字符串str前面和后面第i个字符的位置,当i<j时,两个位置的字符交换。因此,“while(i>j)”应改为“while(i<j)”;交叉合并完成后,要为新的字符串添加结束符,因此,“*str=0;”应改为“*str=\0;”,\n

82.1voidfun(intx,intpp[],int*n)2{3inti,j=0;4for(i=l;i<=x;i=i+2)/*i的初值为1,步长为2,确保i为奇数*/5if(x%i==0)/*将能整除x的数存入数组pp中*/6pp[j++]=i;7*n=j;/*传回满足条件的数的个数*/8}本题考查:偶数的判定方法;整除的实现。本题题干信息:能整除X且不是偶数的所有整数。循环语句中变量i从1开始且每次递增2,所以i始终是奇数。将能整除x的i值存放到数组PP中,整除采用求余运算符“%”,即“x%i==0”。最后将数据元素个数j保存到n中。2021-2022年浙江省丽水市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

若变量均已正确赋初值,则以下语句中

错误的是()。

A.tl=t2;

B.t2.numl=tl.numl;

C.t2.mark=tl.Mark

D.t2.num2=tl.hum2;

2.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.A.必须是逻辑值

B.必须是整数值

C.必须是正数

D.可以是任意合法的数值

3.以下选项中,能表示逻辑值“假”的是()

A.1B.0.000001C.0D.100.0

4.在非线性结构中,每个结点()。

A.无直接前趋

B.只有一个直接前趋和个数不受限制的直接后继

C.只有一个直接前驱和后继

D.有个数不受限制的直接前驱和后继

5.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是

A.data的每个成员起始地址都相同

B.变量data所占内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf(“%I'm”,data.C);输出结果为5.000000

D.data可以作为函数的实参

6.一个有n个顶点的连通无向图至少有()条边。

A.n-1B.nC.n+1D.n+2

7.

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

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

9.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

10.有以下程序

#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

11.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

12.在决定选取何种存储结构时,一般不考虑()。

A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便

13.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之问的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

14.

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

16.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。

A.IB.JC.KD.H

17.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是()。A.A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

18.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

19.

20.

二、2.填空题(20题)21.算法的复杂度主要包括时间复杂度和______复杂度。

22.若x为int类型,请写出与!x等价的C语言表达式______。

23.软件定义时期主要包括______和需求分析两个阶段。

24.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

25.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

26.按“先进后出”原则组织数据的数据结构是[]。

27.栈和队列通常采用的存储结构是【】。

28.算法执行过程中所需要的存储空间称为算法的______。

29.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

30.下列程序的运行结果为【】。

main()

{

intx,y,z;

X=12;

y=012;

z=0l2;

printf("%d,%d,%d\n",x,y,z);

}

31.在软件生命周期中,【】阶段是花费最多、持续时间最长的阶段。

32.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

33.以下程序运行后的输出结果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

34.以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=【】;【】=a[N-1][i];}}

35.下面程序的功能是用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

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

}

36.有以下程序:

#include<string.h>

structSTU

{charname[10];

intnum;};

voidf(char*name,intnum)

{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};

num=s[0].num;

strcpy(name,s[0].name);

}

main()

{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;

p=&s[1];f(p->name,p->num);

printf("%s%d\n",p->name,p->num);

}

程序运行后的输出结果是【】。

37.数据流图的类型有【】和事务型。

38.软件工程学把软件从开始研制到最终软件被废弃的整个阶段叫做软件的【】。

39.【】是数据库设计的核心。

40.关系数据库的关系演算语言是以【】为基础的DML语言。

三、1.选择题(20题)41.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件—组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数。请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if(______)printf("%d",i);}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

42.若有以下说明和语句,则值为6的表达式是______。structstu{intn;structstu*next;};structstua[3],*p;a[0).n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2];a[2].n=9;a[2].next='\0';p=&a[0];

A.p++->nB.p->n++C.++p->nD.(*p).n++

43.若有如下程序:sub(p,n)int(*p)[3],n;{inti;for(i=0;i<=n;i++)printf("%d",p[i][2]);}main(){ints[3][3]={1,2,3,4,5,6,7,8,9};sub(s,2);}则程序运行后的输出结果是()。

A.369B.248C.456D.789

44.以下程序的输出结果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

45.下列变量定义中,合法的是______。

A.short_a=1-.le-1;

B.doubleb=1+5e2.5;

C.longdo=0xfdaL;

D.float2_and=l-e-3;

46.下列叙述中正确的是()。

A.程序设计过程中的主要工作是编制程序

B.程序设计的主要目标是编制出运行结果正确的程序

C.不良的程序设计风格会增加程序的复杂性

D.上述三种说法都不对

47.下列程序的输出结果是()。#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(5));}

A.5B.3C.7D.1

48.执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.不确定

49.以下选项中,当x为大于l的奇数时,值为0的表达式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

50.下列字符数组初始化语句中,不正确的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

51.有以下程序:#include<stdio.h>main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是()。

A.12353514B.12353513C.12343514D.12343513

52.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

53.假定w、x,y、z、m均为int型变量,有如下程序段;w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;则该程序段执行后,m的值是()

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

54.以下程序的输出结果是()main(){inta[10]={1,2,3,4,5,6,7,8,9,10,},*p=a;printf("%d\n",*(p+2));}

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

55.若有如下程序:main(){inta,b,C,m,n,k;m=n=k=0;a=-1;b=2;C=3;if(c>0)m=a+b;if(a<=0){if(b>0)if(c<=0)n=a=b;}elseif(c>0)n=a-b;elsek/=c;printf("%d,%d,%d,",m,n,k);}则程序运行后的输出结果是()。

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

56.MIPS常用来描述计算机的运算速度,其含义是()。A.A.每秒钟处理百万个字符

B.每分钟处理百万个字符

C.每秒钟执行百万条指令

D.每分钟执行百万条指令

57.下面程序的输出是______。main(){intx=3,y=6,a=0;,while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

58.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错误

59.若要求从键盘读入含有空格字符的字符串,应使用函数

A.getc()B.gets()C.getehar()D.scanf()

60.下面程序段的运行结果是

chara[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、选择题(20题)61.以下选项中正确的语句组是()。

A.char*s;s={f.BOOK!”};

B.char*s;s:”BOOK!”:

C.chars[10];s=”BOOK!”;

D.cbars[];s:”BOOK!n:

62.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

63.

64.

65.有以下程序:

main

{inti,j;

for(j=10;j<11;j++)

{for(i=9;i<j;i++)

if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

输出结果是()。A.A.11B.10C.9D.1011

66.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

67.

68.有以下程序

69.以下定义数组的语句中错误的是()。

70.有以下程序段以下关于程序段执行情况的叙述,正确的是()。

A.当产生的随机数n为0时,结束程序运行

B.当产生的随机数n为4时,结束循环操作

C.当产生的随机数n为l和2时,不做任何操作

D.细循环语句固定执行8次

71.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

72.

73.

74.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

75.

76.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是

A.连接B.选择C.投影D.笛卡儿乘积

77.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式

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

A.28B.24C.32D.36

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio。h>

#include<string.h>

voidproc(char*strl,char*str2,char*str){

inti,j;charch;

i=0;j=strleu(str2)-1;

//****found****

while(i>j)

{

ch=str2[i];str2[i]=str2[j];str2[j]=ch;

i++;j--;

}

while(*str1||*str2)

{

if(*str1){*str=*str1;str++;str1++;)

if(*str2){*str=*str2;str++;str2++;)

}

//****found****

*str=0:

}

voidmain

{

chars1[100],s2[100],t[200];

system("CLS");

printf("\nEnters1string:");

scanf("%s",sl);

printf("\nEnters2string:");

scanf("%s",s2);

proc(s1,s2,t);

printf("\nTheresultis:%s\n",t);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C结构体变量中的第一成员都是数组,不能直接将变量tl的成员mark数组的地址赋给另一个变量t2的成员mark数组的地址。因为地址都是固定值,不能被赋值。结构体可以进行整体的赋值。

2.D

3.C\n本题考查逻辑值假,在程序中非0字符表示逻辑真,0表示逻辑假,所以答案选择C。

\n

4.D

5.C解析:本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等.本题定义的共用体中成员C所占的内存最多,因此选项B是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项A是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项D也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项C是错误的。

6.A

7.D

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

9.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。

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

11.A

12.A

13.C对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

14.B

15.A函数的功能是对数组某一区域内的元素隔个求和;a[3]=4,所以从4开始进行隔个求和,a[7]=8,即对4到8的元素隔个求和,4+6=10。

16.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六进制数,转为十进制数x=9。“printf(“%C\\n”,‘A’+9);”,输出格式要求是“%c”,因此将字符‘A’按字母顺序向后偏移9个位置,可得结果为“J”。故本题答案为B选项。

17.D解析:联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度…致,本题中float所占内存字节数为4,而\u3000int类型在TurboC\u30002.0中是占2字节、在VisualC++6.0中占4字节,所以int类型所占内存字节数不会超过float,那demo就与成员d2所占字节数是相同的,选项A的说法正确。联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。故选项B和C都是正确的。由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。故选项D不正确,答案应该选择D。

18.B

19.A

20.D

21.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

22.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

23.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

24.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。

25.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

26.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。

27.链式存储和顺序存储链式存储和顺序存储

28.空间复杂度空间复杂度解析:算法执行时所需要的存储空间,称为算法的空间复杂度。

29.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

30.12101812,10,18解析:本题定义了3个整型变量x、y、z,并分别用十进制数、八进制数、十六进制数为它们赋值。然后以十进制整型输出这3个变量。八进制数012的十进制表示为10,十六进制数0x12的十进制表示为18。此外输出函数格式控制中的“,”原样输出。

31.维护维护

32.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

33.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存

温馨提示

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

评论

0/150

提交评论