2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021年湖北省黄石市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在深度为5的满二叉树叶中,叶子结点的个数为()。

A.32B.31C.16D.15

2.设有定义:charpE]={’1’,‘2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

3.用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改

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

A.在C程序中,APH和aph是两个不同的变量

B.C程序中的变量,代表内存中的一个存储单元,它的值可以根据需要随时修改

C.在C程序中,无论是整数还是实数,都能准确无误地表示

D.在C程序中,一个正整数可以用十进制、八进制和十六进制的形式来表示

5.设散列表中m个存储单元,散列函数为H(key)=key%p,p是最好选择()。

A.小于等于m的最大奇数B.小于等于m的最大素数C.小于等于m的最大偶数D.小于等于m的最大合数

6.下列选项中,能正确定义数组的语句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

7.有以下程序:

#include<stdio.h>

main()

{ints=0.n;

for(n=0;n<3;n++)

{switch(s)

{case0;

case1:s+=1;

case2:s+=2;break;

case3:S+=3;

default:s+=4;

}

printf("%d,"s);

}

}

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

A.1,2,4,

B.1,3,6,

C.3,10,14,

D.3,6,10,

8.有以下程序:

#include<stdio.h>

voidfunc(intn)

{staticintnum=1);

num=num+n;printf("%d",num);

}

main()

{funo(3);func(4);printf("n");}

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

A.48B.34C.35D.45

9.以下说法不正确的是

A.C程序中必须有一个main()函数,C程序是从main()函数的第1条语句开始执行的。

B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。

C.C程序中的main()函数必须放在程序的开始位置。

D.C程序中的main()函数位置可以任意指定。

10.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点的个数是()。

A.9B.11C.15D.不能确定

11.有以下程序:

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

A.45B.20C.25D.36

12.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

13.C语言规定,程序中各函数之间()

A.既允许直接递归调用也允许间接递归调用

B.不允许直接递归调用也不允许间接递归调用

C.允许直接递归调用不允许间接递归调用

D.不允许直接递归调用允许间接递归调用

14.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

15.下面哪个不是用来解决哈希表冲突的开放地址法()

A.线性探测法B.线性补偿探测法C.拉链探测法D.随机探测法

16.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套

B.宏定义语句不进行语法检查

C.双引号中出现的宏名不替换

D.宏名必须用大写字母表示

17.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={A,B,C,D,E};

C.char*S;S="ABCDE";

D.char*s;printf("%《",s);

18.有以下程序:#include<stdio.h>main(){chars[]=“012xy\08s34f4w2”;inti,n=0;for(i=0;s[i]|=0;i++) if(s[i]>=‘0’&&s[i]<=“9”)n++;printf(“%d\n”,n);}程序运行后的输出结果是()。

A.7B.0C.3D.8

19.软件生命周期中,花费最多的阶段是()。

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

20.有以下程序:#include<stdlo.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+")for(i=1;i<6;i++){fprintf(fp."%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp."%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);

A.00B.12345C.14D.1

二、2.填空题(20题)21.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。

22.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

23.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

24.下面程序把从终端读入的10个整数以二进制方式写入一个名为bi.dat的新文件中。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if(fp=fopen(【】)==NULL)exit(0);

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

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,【】;

}

fclose(fp);

}

25.设x和y均为int型变量,且x=1,y=2,则表达式2.0+y/x的值为【】。

26.软件的【】设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。

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

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

28.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do{k*=n%10*r;n/=10;r++;}while(n);

29.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

30.调用C语言标准库函数时要求用【】命令。

31.执行以下程序后,输出#号的个数是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

32.以下程序的运行结果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

printf("%d\n",MAX(i,j));

}

33.四条语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

34.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

35.设有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298,贝愉出结果为【】。

36.数据结构分为线性结构和非线性结构,带链的队列属于[]。

37.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。[*]

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{…}

voiddisp(Node*h)

{Node*

38.在对文件进行操作的过程中,若要使文件位置的指针回到文件的开头,应使用的函数是【】。

39.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

40.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

执行上面的程序段后,*(ptr+5)的值为______。

三、1.选择题(20题)41.有以下函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()

A.比较两个字符串的大小

B.计算s所指字符串占用内存字节个数

C.计算s所指字符串的长度

D.将s所指字符串自制到字符串t中

42.执行语句“for(n=10;n>0;)printf("%d",--n+n--);”后,下列说法正确的是()

A.循环体执行了5次,最终n的值是-1

B.循环体执行了6次,最终n的值是-1

C.循环体执行了6次,最终n的值是0

D.循环体执行了5次,最终n的值是0

43.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

44.有以下程序main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是______。

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

45.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

46.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.口令D.消息

47.以下选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'

48.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

49.下列定义变量的语句中错误的是______。A.int_int;B.doubleint_;C.charFor;D.floatUS$;

50.下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;

}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&a[1],7);

for(i=0;i<10;i++)printf("

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,8,7,6,5,4,3,2,9,10,

D.1,2,10,9,8,7,6,5,4,3,

51.下列叙述中,不属于测试的特征的是

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性

52.以下程序的输出结果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

53.有以下程序#include<stdio.h>main(){intk=5,n=0;while(k>0){switch(k){defhult:break;case1:n+=k:case2:case3:n+=k;}k--;}printf("%d\n",n);}程序运行后的输出结果是()

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

54.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

55.以下叙述正确的是______。

A.可以把define和if定义为用户标识符

B.可以把define定义为用户标识符,但不能把if定义为用户标识符

C.可以把if定义为用户标识符,但不能把define定义为用户标识符

D.define和if都不能定义为用户标识符

56.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

57.下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式

58.若各选项中所用变量已正确定义,fun()函数中通过return语句返回一个函数值,下列选项中错误的程序是()。

A.main()……x=fun(2,10);……}floatfun(inta,intb){……}

B.floatfun(inta,intb){……}main(){……x=fun(i,j);……}

C.floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}

D.main(){floatfun(intI,intj);……x=fun(i,j);……}floatfun(inta,intB){……}

59.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

60.有以下程序:#include<stdio.h>voidfun(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序运行的结果是()。

A.9.87654e+008B.4.3211e+009C.5.6789e+009D.9.87651e+008

四、选择题(20题)61.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

62.

63.

64.

65.

66.以下函数实现按每行8个输出w所指数组中的数据

67.

68.

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

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

70.

71.以下程序段中的变量已正确定义

72.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的c语言表达式是()。

73.结构化程序设计的三种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

74.

75.下列语句组中,正确的是()。

76.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9

77.设有定义:

则以下赋值语句中错误的是()。

A.data2=(2,6);

B.data2=datal;

C.data;real=datal.real;

D.data2.real=datal.unreal;

78.有以下程序:

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

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

79.有下列程序:

main()

{inti,j,x=0;

for(i=0,i<2;i++)

{x++;

for(j=0;j<=3;j++)

{if(j%2)continue;

x++:

}

x++:

}

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

}

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

A.x=4B.x=8C.x=6D.x=12

80.

五、程序改错题(1题)81.下列给定程序的功能是:读入一个整数n(2<;=n<;=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main()函数,不能增选或删行,也不能更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中的十位数和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

参考答案

1.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。

2.A根据题目中的定义可以知道sizeof(p),计算的是数组P中所有元素所占用的字节数,而不是ch”型数据所占字节数。

3.C

4.C

5.B

6.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定元素的个数;C选项错误,N为变量,不能用来定义数组大小。故本题答案为D选项。

7.C\n本题考查switch…ease语句,在本题的程序中,只有在case2:s=s+2;break;,才有break语句,所以当s=0时会执行s=s+1;s=s+2;,所以s=3,当s=3时,会执行s=s十3;s=s+4;,所以s=10,依此类推,答案选择C。

\n

8.A\n第一调用func函数时输出4,第二次调用func函数时num的值并不会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是48。

\n

9.C解析:本题考核的知识点是main()函数的作用,以及main()函数在程序中出现的位置。一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项c不正确。所以,4个选项中C符合题意。

10.B

11.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

12.B解析:x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

13.A解析:C语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。

14.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

15.C

16.D解析:本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。

17.C选项A、B的空间不够;字符串存储要有结束符\0,且要占用一个空间,printf用来输出字符,不能输入字符串。

18.C根据题意,要求统计字符数组s中阿拉伯数字的个数。“chars[]=“012xy\\08s34f4w2”;”,其元素是字符型。字符‘0的ASCII值是48,字符‘\\0’的ASCII值是0,因此可以计算出‘\\0’之前阿拉伯数字的个数,由字符数组s可知,有3个阿拉伯数字。故本题答案为C选项。

19.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

20.D解析:在for循环中用fpfinff(fp,'%d',i);将循环变量的值1~5输出到fp指向的文件data.dat中,输出3个数后换行。执行rewind(fP)使文件指针重新返回到文件的开头,再执行fscanf(fp,'%d%d',&k,&n)将磁盘文件中的前两个数输入给变量k,n,并将其输出到屏幕上。

21.实体完整性实体完整性

22.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

23.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。

24."bi.dat"fp'bi.dat'\r\nfp解析:打开文件函数fopen的参数是文件名,因此有fopen('bi.dat');而写文件的参数是文件指针,因此有fwrite(&j,sizeof(int),1,fp);

25.4.0或44.0或4

26.概要概要

27.1616解析:首先用j和MCRA(i)替换MCRB(n,m)中的参数n和m,变成2*MCRA(j)+MCRA(i),再用j和i替换MCRA(m)中的参数m,变成2*2*j+2*i=2*2*3+2*2=16。

28.00解析:本题考查的是do厀hile循环。第一次执行循环体,因为k=1,r=1,n=20,所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4,所以k的值为0。

29.bar[i]bar[i]解析:fun函数中的内层for循环,求出了每一行中的最大值x,内循环结束后就需要把最大值放在存储每行最大值的数组bar[i]中,因此应填bar[i]。

30.includeinclude解析:include命令可调用标准的C语言库函数,可以用一对尖括号或一对双引号将“.h”文件括起来,在include前面要加“#”。

31.66解析:本题中i循环执行4次,当i=1时,j循环执行0次;当i=2时,j循环执行1次;当i=3时,j循环执行2次;当i=4时,j循环执行3次,所以输出#号的个数是0+1+2+3=6。

32.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

33.x+=1;x+=1;解析:题面中的四条语句的作用是使x的值加1,在C中有多种方法可以对变量进行加1操作,这里可以利用C的复合赋值运算符+=实现,本题答案为x+=1;。

34.参照完整性参照完整性

35.89218921解析:本题的程序的功能是将输入的整数反向输出。

36.线性结构线性结构解析:与栈类似,队列也是线性表,也町以采用链式存储结构。

37.

38.rewind或fseekrewind或fseek

39.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

40.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

41.B解析:本题中,首先让t指向形参s,然后通过一个循环体为空的while循环,将t逐次后移,直到其所指的内容为0(字符串结束标志)。注意,此时t仍然会被增1,所以从循环中出来,t指向的是s所指字符串的结束标志的后一个字节。由此可见,返回的t-s是s所指字符串占用内存字节的个数,故本题应该选择B。注意,选项C和选项B是不同的,选项C所说的长度并不包括字符串结束标志位,而选项B所说的个数则包括。即选项B所说个数始终比选项C所说长度大1。

42.D

43.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

44.B解析:本题是考查手工模拟执行程序的能力。a初值是1,循环开始时b值为1,由于a>=8为假,不执行break,但a%2==1为真,执行a+=5,a值变为6,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为2,由于a值为6,a>=8仍为假,不执行break,但a%2==1为假,不执行复合语句“{a+=5;continue;}”而执行a-=3,a值变为3。再开始下一次循环,这时b值为3。由于a值为3,a>=8仍为假,不执行break,但a%2==1为真,执行a+=5,a值变为8,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为4。由于a值为8,a>=8为真,执行break,停止for循环。此时输出的b值应为4。

45.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,

46.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

47.B解析:在ASCII码中,字符串结束符'\\0'的ASCII码为0,字符'0'的ASCII码的值为48,字符'1'的ASCII码的值为49。由此可见,选项A的值为-47;选项B的值为1;选项C的值为49;选项D的值为-48。故应该选择B。

48.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

49.DC语言规定,变量名必须符合标识符的命名规则。D选项中包含非法字符“$”,所以错误。标识符由字母、数字、下划线组成,且第1个字符必须是字母或者下划线,而不能是数字。大写字母与小写字母被认为是两个不同的字符,所以“For”不是关键字“for”。故本题答案为D选项。

50.C解析:本程序中的函数sort(inta[],intn)实现的功能是将数组a中的前n个数进行从大到小排序。sort(&a[1],7)是将数组中从a[1]到a[7]这7个数进行从大到小排序,其他数不变。

51.C解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

52.C解析:观察程序段可知,对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。本题中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,结果为36。

53.D解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=1的时候,会顺序执行3条语句。

54.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

55.B解析:if是C语言中的保留字,所以不能作为用户标识符;define是C语言中的预编译命令,由于C语言中的预编译命令都是以#开头,所以define可以作为用户标识符。

56.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

57.A数据库管理系统的三级模式结构由外模式、模式和内模式组成。

外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。

58.A解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主调函数之前定义,再在主函数中调用,所以是正确的:在选项D)中,在主调函数中先对于函数floatfun(inti,intj)进行了定义,然后进行调用。

59.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性。因此选项D正确。

60.C解析:函数fun的功能是:将数组s中从n1至n2的元素首尾互换,然后将第2个和倒数第2个元素互换,依次类推,其实也就是将原来的元素倒置。执行fun(a,0,3);将数组a中的第0~3个元素互换,结果为4321;执行fun(a,4,9);将数组a中的第4~9个元素互换,结果为098765。此时a中的元素依次为4321098765,执行fun(a,0,9);再次将这10个元素倒置,结果为5678901234。

61.C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。

62.C

63.D

64.B

65.A

66.A当i为8的倍数时,输出一个回车符,只有A)符合题意。

67.A

68.D

69.D解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据

温馨提示

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

评论

0/150

提交评论