2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

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

2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的运行结果是()。

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

3.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

4.已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

5.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

6.

7.若一棵二叉树具有10个出度为2的结点,则在该二叉树中,出度为0的结点个数是()

A.9B.11C.12D.不确定

8.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

9.

10.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

11.若有下面的说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是A.A.12B.16C.14D.9

12.

13.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A.#definen5inta[2*n];

B.intn=10,a[n];

C.inta[5+5];

D.#defineN10inta[N];

14.有下列程序:intfunl(doublea){returna*=a;)intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……)程序执行后变量w中的值是()。A.5.21B.5C.5.0D.0.0

15.

16.

17.折半查找的时间复杂性为()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

18.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

19.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符()。

A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字或下划线中的任意一种

20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10

二、2.填空题(20题)21.以下程序的运行结果是【】。

main()

{char*k="aeiou";

for(;*k;k++)printf("%c",*k);

}

22.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

23.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

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

25.下列程序的输出结果是______。

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

26.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

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

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

30.以下程序的输出结果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

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

main()

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

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

}

32.下面的if语句与y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,请补充完整。

if(______)

if(______)y=2*x-1;

elsey=x;

elsey=3*x-11;

33.下面的程序可列指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

for(i=0;i<n;i++

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

34.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

36.在深度为5的完全二叉树中,度为2的结点数最多为【】。

37.下列程序的功能是输入一个整数,判断其是否是素数,若为素数则输出1,否则输出0。请填空。

#include<stdio.h>

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【】{y=0;break;}

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

}

38.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

39.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

40.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

三、1.选择题(20题)41.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

42.下列叙述错误的是()。

A.在C语言中的保留字必须小写

B.变量的存储类型决定了变量的存储位置及其生存期

C.宏定义以#define开头,行末必须加分号

D.在C语言中的注释行可以出现在程序的任何位置

43.下列选项中不能正确定义结构体的是_______。

A.typedefstruct

B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;

C.structcolor

D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;

44.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

45.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

46.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

47.字长为32位的计算机是指()

A.该计算机中的CPU有32个寄器

B.该计算机能够处理的最大数不超过232

C.该计算机每秒钟所能执行的指令条数为32MIPS

D.该计算机中的CPU可以相同时处理32位的二进制数

48.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

49.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

50.下列特征中不是面向对象方法的主要特征的是()

A.多态性B.标识惟一性C.封装性D.耦合性

51.字长为16位的计算机是指______。

A.该计算机能够处理的最大数不超过16

B.该计算机中的CPU可以同时处理16位的二进制信息

C.该计算机的内存量为16MB

D.该计算机每秒钟所能执行的指令条数为16MIPS

52.数据库管理系统提供给用户的接口是()

A.过程化语言B.数据库语言C.宿主语言D.面向对象语言

53.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

54.下列程序的输出结果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

55.以下选项中,不能作为合法常量的是

A.1.23E+04B.1.234e0.4C.1.23E+04D.1.23E+00

56.请读程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的输出结果是()

A.34756B.23445C.35745D.12345

57.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

58.模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的—类是______。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

59.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}该程序中的for循环执行的次数是______。

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

60.设x、y、t均为int型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

四、选择题(20题)61.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

62.信息隐蔽的概念与下述哪一种概念直接相关()。

A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度

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

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

64.软件详细设计产生的图如下:该图是()。

A.N—s图B.PAD图C.程序流程图D.E—R图

65.

66.有以下程序:

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

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

67.有以下程序

68.

69.有如下嵌套的语句

70.下列关于结构化设计原则的描述,错误的是

A.在块和进程的非正常出口处往往需要调用GOTO语句,使用GOTO语句使程序执行效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句

B.程序设计时应该自顶向下,逐步求精

C.程序设计时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干个分目标,再进一步分解为具体的小目标

D.在进行程序设计时,应该尽量在一行写一条语句,尽量做到效率第一,清晰第二

71.

72.下列哪个不属于DOM元素结点类型?

A.元素结点B.文本结点C.属性结点D.样式结点

73.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

74.在E—R图中,用来表示实体的图形是()。

A.矩形B.椭圆形C.菱形D.三角形

75.两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

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

76.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。

A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)

77.

78.

79.在满足实体完整性约束的条件下()。

A.一个关系中廊该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

80.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fmi()的功能是将a、b中的两个正整数合并成一个新的整数存放在c中。合并的方式是将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,a=45,b=12,调用该函数后,c=5241。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.D

2.A本题由fun函数可知,执行for循环,当i=0时,b[0]=a[0][0]-a[0][3]=1-4=-3;当i=1时,b[1]=a[1][1]-a[1][2]=6-7=-1;当i=2时,b[2]=a[2][2]-a[2][1]=11-10=1;当i=3时,b[3]=a[3][3]-a[3][0]=16-13=3。主函数中输出y数组元素的值为:-3,-1,1,3。故本题答案为A选项。

3.BSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。

4.B

5.C本题中由循环条件可知遇到‘\\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

6.C

7.B

8.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

9.A

10.D程序调试的任务是诊断和改正程序中的错误。

11.A

12.D

13.B一维数组定义的一般形式为:类型说明符数组名[常量表达式]。注意定义数组时,元素个数不能是变量。故本题答案为B选项。

14.C子函数fun1(doublea)的功能是返回a的平方值的整数部分。子函数fun2(doublex,doubley)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。

15.C

16.D

17.D

18.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。

19.C

20.Bstrlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。

21.aeiou

22.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

23.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

24.概念(或概念级)概念(或概念级)

25.88解析:本程序定义了3个指针变量p1、p2、p,并且将,、b的地址分别赋给P1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。

26.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。

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

28.220.000000220.000000解析:注意区分运算符的优先级。先是给c赋值,然后计算x=f*=n/=50,得x=f*=2,最后有x=20。x输出是按浮点数的形式输出的,小数点后的0不能少。

29.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

30.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

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

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

32.x<10x>=1

33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+l]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

34.软件工程学软件工程学

35.1010解析:表达式0<x<20,首先计算0<x,其值为1,再计算1<20,其值为1,输出1;表达式0<x&&x<20,0<x为1,x<20为0,再计算1&&0,其值为0,输出0。所以输出结果为10。

36.1515解析:在深度为5的完全二叉树中,度为2的结点数最多的是深度为5的满二叉树。在深度为5的满二叉树中,前4层中所有结点的度为2。即在深度为5的完全二叉树中,度为2的结点数最多相当于深度为4的满二叉树中的结点数。深度为4的满二叉树中的结点数为24(上标)-1=15。

37.(x%i==0)(x%i==0)解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用2至x/2的整数i测试对x的整除性,若x能被其中的某个整数整除,则x是合数,置y的值为0(即x不是素数),结束循环测试;若循环中i都不能整除x,则x为素数。一般可用求余运算x%i是否等于0来判定i能否整除x,所以程序中的空格处可填(x%i==0)。

38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。

39.调试调试

40.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

41.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。

42.C解析:本题涉及C语言最基本的4个知识点:①C语言的保留字必须小写;②变量的存储类型不同,其存储位置和生存期也不一样:③C语言允许其注释部分出现在程序中的任何位置;④宏定义以#define开头,行末不需要加分号。

43.B解析:将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定变量为结构体类型,而且要求指定为某一特定的结构体类型(例如,structcolor),不能只指定结构体名。其中可以不出现结构体名,答案D就是缺省结构体名的隋况。而变量名歹婊必须放在成员列表后面,所以B答案不能正确将cl定义为结构件变量。

44.B解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为一赋值语句。

45.B解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。

46.C解析:关系代数是以集合代数为基础女发展起来的,它是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括针对数据库环境专门设计的操作,包括对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。

47.D

48.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

49.C数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构(物理结构)及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,即数据元素之间的前后件关系,而不管它在计算机中的存储表示形式。

50.DD)【解析】面向对象设计方法与面向过程设计方法有本质不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。

51.B解析:字长是指CPU可以同时处理二进制的位数,是由CPU的型号和类型决定的。

52.C

53.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

54.A

55.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。

56.C

57.B解析:结构体类型的定义格式为:

strcut结构体名

{成员说明列表};

结构体变量的定义有3种形式:第一种:定义结构体型的同时定义结构体变量如:strcut结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcutstudent{成员说明列表):student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:Strctstudent{成员说明列表}变量。和上面三种情况比较我们不难得知只有选项B是正确的。所以,4个选项中选项B符合题意。

58.D解析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。

59.B解析:该题目测试考生对宏替换的理解。这是一种简单的情况:不带参数的宏。关键要注意在对2*M+1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2*N+1+1(千万不要随意给N+1加上小括号,使NUM变为2。(N+1)+1,这就是宏名和变量名之间的区别),在将N代进去,得到NUM的值为6。

60.C解析:++高于=和||,=的优先级最低。而||为自左向右的结合性,因此先计算表达式++x的值,x的初值为3,3+1=4,4为非零值,不必再计算||右侧表达式的值,即可得到整个逻辑表达式的值1,++y没有做运算,仍为原值3,所以,选项C正确。

61.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

62.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的耦合性越强,则该模块的模块独立性越强。

63.A解析:自增运算符“++”,放在变量之前表示在使用变量之前,先使变量的值加1;放在变量之后表示在使用变量之后,再使变量的值加1。第一条输出语句,先输出m=12,m再自加1,变成13,n先自加1再输出,输出n=35;第二条输出语句,先输出n=35,n再自加1,变成36,m先自加1再输出,输出m=14。

64.C\nN—S图(也称h盒图或CHAPIN图)和PAD(问题分析图)及PFD(程序流程图)是详细设计阶段的常用工具,E—R图即实体-联系图是数据库设计的常用工具。从题中图可以看出该图属于程序流程图。

\n

65.C

66.DmaUoc函数动态分配一个整型的内存空间,然后把函数返回的地址用(int{)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,b,c都指向刚申请的内存空间。所以只有最后一个赋值语句+C=3的值保留在了该空间内,因为a、b、C三个指针变量均指向该空间,所以打印该空间内的数值为3。

67.Afor分别输/klt[2][01,till[1],t[0][2]分别为357,答案选择A)。

68.A

69.Aif\r\nelse语句和“?:”可以互换,?前语句相当于i垢括号内容,?后语句相当于i垢的执行语句,冒号后语句相当于else后语句,综合以上可以看出A)符合题意。

70.D在结构化程序设计过程中,我们可以根据下面的原则进行:

(1)使用语言中的顺序结构、选择结构、循环结构等有限的基本控制结构表示程序逻辑。

(2)选用的控制结构只准许有一个入口和一个出口。

(3)复杂结构应该用基本控制结构进行组合嵌套来实现。

(4)语言中没有的控制结构可以用一段等价的程序段来模拟,但是要求程序段在整个系统中前后一致。

(5)严格限制GOTO语句。

(6)在编写程序时,强调使用几种基本的控制结构,通过组合嵌套,形成程序的控制结构。

(7)在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的源程序。

总之,在结构化程序设计的过程中,要将清晰放在第一位。因此,本题中的答案D是不正确的。

71.C

72.D

73.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的过程是:先建一个堆,输出堆顶的最大或最小的元素,再将剩余的n-1个元素重新调整成一个新堆。如此反复进行,直到排序完成。

直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增1的有序表。首先,将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。

快速排序是对冒泡排序的一种改进。它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。

直接选择排序是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的一个记录,并和第i个记录交换。这样重复执行n-1趟选择排序。

在本题中,数据表A中每个元素距其最终位置不远,即说明数据表基本有序,简单移动一些元素即可完成排序,在这种情况下,使用直接插入排序法所需时间最少,最合理。因此本题的正确答案是B。

\r\n\r\n\r\n

74.AA。【解析】在E—R图中,矩形表示实体;菱形表示联系名;椭圆形表示实体的属性。

75.C

76.C当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较l092n次,而顺序查找需要比较n次。

77.D

78.B

79.A实体完整性约束要求关系的主键中属性值不能为空值,因此本题答案为A)。

80.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。

81.(1)错误:proc(NODE*h)

正确:intproc(NODE*h)

(2)错误:P=h->next;

正确:P=p->next;

【解析】根据题意,将数据域中的最大值作为函数值返回,可知函数proc()有一个整型的返回值,因此“proc(NODE*h)”应改为“intproe(NODE*h)”;每执行完一次循环,指针P指向其本身结点的下一个结点,因此,“P=h->next”应改为“P=P->next”。

82.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);4}本题给出两个两位数的正整数。分别取出两个数各位上的数字,再按条件组成一个新数。取整数a十位数的方法为a/10,取整数a个位数的方法为a%10。同理可取出整数b的个位数和十位数。2021年内蒙古自治区锡林郭勒盟全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

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

2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的运行结果是()。

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

3.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

4.已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

5.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

6.

7.若一棵二叉树具有10个出度为2的结点,则在该二叉树中,出度为0的结点个数是()

A.9B.11C.12D.不确定

8.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

9.

10.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

11.若有下面的说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是A.A.12B.16C.14D.9

12.

13.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A.#definen5inta[2*n];

B.intn=10,a[n];

C.inta[5+5];

D.#defineN10inta[N];

14.有下列程序:intfunl(doublea){returna*=a;)intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……)程序执行后变量w中的值是()。A.5.21B.5C.5.0D.0.0

15.

16.

17.折半查找的时间复杂性为()

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

18.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

19.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符()。

A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字或下划线中的任意一种

20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10

二、2.填空题(20题)21.以下程序的运行结果是【】。

main()

{char*k="aeiou";

for(;*k;k++)printf("%c",*k);

}

22.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

23.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

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

25.下列程序的输出结果是______。

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

26.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

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

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

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

30.以下程序的输出结果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

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

main()

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

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

}

32.下面的if语句与y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,请补充完整。

if(______)

if(______)y=2*x-1;

elsey=x;

elsey=3*x-11;

33.下面的程序可列指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

for(i=0;i<n;i++

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

34.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

36.在深度为5的完全二叉树中,度为2的结点数最多为【】。

37.下列程序的功能是输入一个整数,判断其是否是素数,若为素数则输出1,否则输出0。请填空。

#include<stdio.h>

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【】{y=0;break;}

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

}

38.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

39.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

40.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

三、1.选择题(20题)41.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

42.下列叙述错误的是()。

A.在C语言中的保留字必须小写

B.变量的存储类型决定了变量的存储位置及其生存期

C.宏定义以#define开头,行末必须加分号

D.在C语言中的注释行可以出现在程序的任何位置

43.下列选项中不能正确定义结构体的是_______。

A.typedefstruct

B.structcolorcl{intred;{intred;intgreen;intgreen;intblue;intblue;}COLOR;};COLORcl;

C.structcolor

D.struct{intred;{intred;intgreen;intgreen;intblue;intblue;}cl;}cl;

44.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

45.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

46.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

47.字长为32位的计算机是指()

A.该计算机中的CPU有32个寄器

B.该计算机能够处理的最大数不超过232

C.该计算机每秒钟所能执行的指令条数为32MIPS

D.该计算机中的CPU可以相同时处理32位的二进制数

48.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

49.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

50.下列特征中不是面向对象方法的主要特征的是()

A.多态性B.标识惟一性C.封装性D.耦合性

51.字长为16位的计算机是指______。

A.该计算机能够处理的最大数不超过16

B.该计算机中的CPU可以同时处理16位的二进制信息

C.该计算机的内存量为16MB

D.该计算机每秒钟所能执行的指令条数为16MIPS

52.数据库管理系统提供给用户的接口是()

A.过程化语言B.数据库语言C.宿主语言D.面向对象语言

53.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

54.下列程序的输出结果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

55.以下选项中,不能作为合法常量的是

A.1.23E+04B.1.234e0.4C.1.23E+04D.1.23E+00

56.请读程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的输出结果是()

A.34756B.23445C.35745D.12345

57.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

58.模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的—类是______。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

59.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}该程序中的for循环执行的次数是______。

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

60.设x、y、t均为int型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

四、选择题(20题)61.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

62.信息隐蔽的概念与下述哪一种概念直接相关()。

A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度

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

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

64.软件详细设计产生的图如下:该图是()。

A.N—s图B.PAD图C.程序流程图D.E—R图

65.

66.有以下程序:

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

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

67.有以下程序

68.

69.有如下嵌套的语句

70.下列关于结构化设计原则的描述,错误的是

A.在块和进程的非正常出口处往往需要调用GOTO语句,使用GOTO语句使程序执行效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句

B.程序设计时应该自顶向下,逐步求精

C.程序设计时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干个分目标,再进一步分解为具体的小目标

D.在进行程序设计时,应该尽量在一行写一条语句,尽量做到效率第一,清晰第二

71.

72.下列哪个不属于DOM元素结点类型?

A.元素结点B.文本结点C.属性结点D.样式结点

73.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

74.在E—R图中,用来表示实体的图形是()。

A.矩形B.椭圆形C.菱形D.三角形

75.两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

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

76.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。

A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)

77.

78.

79.在满足实体完整性约束的条件下()。

A.一个关系中廊该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

80.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fmi()的功能是将a、b中的两个正整数合并成一个新的整数存放在c中。合并的方式是将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,a=45,b=12,调用该函数后,c=5241。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.D

2.A本题由fun函数可知,执行for循环,当i=0时,b[0]=a[0][0]-a[0][3]=1-4=-3;当i=1时,b[1]=a[1][1]-a[1][2]=6-7=-1;当i=2时,b[2]=a[2][2]-a[2][1]=11-10=1;当i=3时,b[3]=a[3][3]-a[3][0]=16-13=3。主函数中输出y数组元素的值为:-3,-1,1,3。故本题答案为A选项。

3.BSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。

4.B

5.C本题中由循环条件可知遇到‘\\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

6.C

7.B

8.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

9.A

10.D程序调试的任务是诊断和改正程序中的错误。

11.A

12.D

13.B一维数组定义的一般形式为:类型说明符数组名[常量表达式]。注意定义数组时,元素个数不能是变量。故本题答案为B选项。

14.C子函数fun1(doublea)的功能是返回a的平方值的整数部分。子函数fun2(doublex,doubley)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。

15.C

16.D

17.D

18.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。

19.C

20.Bstrlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。

21.aeiou

22.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

23.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

24.概念(或概念级)概念(或概念级)

25.88解析:本程序定义了3个指针变量p1、p2、p,并且将,、b的地址分别赋给P1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。

26.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。

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

28.220.000000220.000000解析:注意区分运算符的优先级。先是给c赋值,然后计算x=f*=n/=50,得x=f*=2,最后有x=20。x输出是按浮点数的形式输出的,小数点后的0不能少。

29.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

30.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

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

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

32.x<10x>=1

33.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+l]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

34.软件工程学软件工程学

35.1010解析:表达式0<x<20,首先计算0<x,其值为1,再计算1<20,其值为1,输出1;表达式0<x&&x<20,0<x为1,x<20为0,再计算1&&0,其值为0,输出0。所以输出结果为10。

36.1515解析:在深度为5的完全二叉树中,度为2的结点数最多的是深度为5的满二叉树。在深度为5的满二叉树中,前4层中所有结点的度为2。即在深度为5的完全二叉树中,度为2的结点数最多相当于深度为4的满二叉树中的结点数。深度为4的满二叉树中的结点数为24(上标)-1=15。

37.(x%i==0)(x%i==0)解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用2至x/2的整数i测试对x的整除性,若x能被其中的某个整数整除,则x是合数,置y的值为0(即x不是素数),结束循环测试;若循环中i都不能整除x,则x为素数。一般可用求余运算x%i是否等于0来判定i能否整除x,所以程序中的空格处可填(x%i==0)。

38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。

39.调试调试

40.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

41.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。

42.C解析:本题涉及C语言最基本的4个知识点:①C语言的保留字必须小写;②变量的存储类型不同,其存储位置和生存期也不一样:③C语言允许其注释部分出现在程序中的任何位置;④宏定义以#define开头,行末不需要加分号。

43.B解析:将一个变量定义为标准类型与定义为结构体类型不同之处在于:后者不仅要求指定

温馨提示

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

评论

0/150

提交评论