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

下载本文档

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

文档简介

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

一、单选题(20题)1.已知有如下结构体:structsk{inta;floatb;}data,*p;若有P=&data,则对data的成员a引用正确的是()。A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

2.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序运行后的输出结果是()。

A.efgabcdhijklmnopq

B.abcdefghijklmnopq

C.mnopqhijklefgabcd

D.efgabcdmnopqhijkl

3.有两个关系R和T如下:

则由关系R得到关系T的操作是()。A.选择B.投影C.交D.并

4.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

5.数据结构主要研究的是数据的逻辑结构、数据的运算和()。A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储

6.设变量已正确定义,则以下能正确计算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

7.若x=10010111,则表达式(3+(int)(x))&(~3)的运算结果是()。

A.10011000B.10001100C.10101000D.10110000

8.有以下定义

#include<stdio.h>

chara[10],*b=a;

不能给a数组输入字符串的语句是

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(B);

9.

10.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序运行后的输出结果是()。A.1B.2C.4D.8

11.若输入“abcdef”、“abdef”,以下程序的输出结果为()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

12.线性表的顺序存储结构是一种()。

A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构

13.下列描述中,不是线性表顺序存储结构特征的是

A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系

14.下列对于线性链表的描述中正确的是()

A.存储空间不一定是连续,且各元素的存储顺序是任意的

B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

15.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}编译时编译器提示错误信息,你认为出错的语句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

16.下列条件语句中,输出结果与其他语句不同的是()。

A.if(a!=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

B.if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);

C.if(a==0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

D.if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);

17.关于指针,以下说法正确的是()。A.可以直接向指针中写入数据

B.若指针指向变量,则可以向指针所指内存单元写入数据

C.指针可以指向内存中任何位置,并写入数据

D.两个指针可以通过加运算求和,形成一个功能更强大的指针

18.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

19.以下叙述中不正确的是

A.预处理命令行都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行

C.宏替换不占用运行时间,只占编译时间

D.在以下定义是正确的:#definePI3.1415926;

20.若已包括头文件<string.h>且已有定义chars1[18],s2={"ABCDE"}和inti,现要将字符串"ABCDE"赋给s1,下列语句错误的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.s1="ABCDE";

D.for(i=0;i<6;i++)s1[i]=s2[i];

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

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

22.以下程序的功能是输入任意整数给n后,输出n行从大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FCHI

JKL

MN

O

请填空完成该程序。

#include<stdio.h>

main()

inti.j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

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

{printf("%2c",ch);

【】;

}

【】;

}

elseprintf("nistoolarge!\n");

prinff("\n");

}

23.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

【】(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

24.下面程序的输出结果是【】。

#include<stdio.h>

main()

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

char*ptr1=a,*ptr2=b;

intk;

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

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

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

25.数据库系统中实现各种数据管理功能的核心软件称为【】。

26.已定义charch="$";inti=1,j;执行j=!ch&&i++以后,i的值为()。

27.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

28.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

29.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

30.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。请填空。

FILE*myf;longf1;

myf=【】("test.t","rb");

fseek(myf,0,SEEKEND);

f1=ftell(myf);

fclose(myf);

printf("%d\n",f1)

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

#defineN10

#defines(x)x*x

#definef(x)(x'x)

main()

{

inti1,i2;

i1-1000/s(N);i2=1000/f(N);

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

}

32.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

33.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

34.在软件测试中,动态测试和静态测试手段只能发现程序中的错误,而不能证明程序中不存在错误,只有【】证明才有可能证明程序的正确性。

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n".s);

}

36.若有以下程序

main()

{inta=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

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

}

执行后输出结果为______。

37.与表达式a+=b等价的另一书写形式是______。

38.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

39.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块,其中______的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

40.在关系模型中,二维表的行称为______。

三、1.选择题(20题)41.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是______。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次

42.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

43.组成计算机网络的最大好处是()

A.进行通话联系B.资源共享C.发送电子邮件D.能使用更多软件

44.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确的语句是()。

A.p=2*(int*)malloc(sixeof(int))

B.p=(int*)calloc(2*sixeof(int))

C.p=(int*)malloc(2*sizeof(int))

D.p=2*(int*)calloc(sizeof(int))

45.下列选项中不属于C语言的数据类型是()。

A.复数型B.逻辑型C.双精度型D.集合型

46.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

47.下列选项中,当x为大于1的奇数时,值为0的表达式是()。

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

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

A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单以及运行结果D.软件包括程序、数据和文档

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

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

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

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

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

50.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

51.设有数组定义:chararray[]="China";则数组array所占的空间是()。

A.4个字节B.5个字节C.6个字节D.7个字节

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

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据处理的效率无关

C.数据的存储结构与数据处理的效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

53.最简单的交换排序方法是()。A.快速排序B.选择排序C.堆排序D.冒泡排序

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

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

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

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

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

55.结构化程序设计的核心和基础是()。

A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法

56.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

57.使计算机病毒传播范围最广的媒介是________

A.硬磁盘B.软磁盘C.内部存储器D.互联网

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

59.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}

A.16B.2C.9D.1

60.有下列程序:main(){intx=5;do{printf("%d",x-=4);}while(!(--x));}程序的输出结果是()。

A.1B.20C.14D.死循环

四、选择题(20题)61.

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

A.程序就是软件

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

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

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

63.

64.有三个关系R、S和T如下:

则由关系R和s得到关系T的操作是()。

A.自然连接B.并C.交D.差

65.

66.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

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

68.若输入“abcdef”“abdef”,下述程序的输出结果为()。#include#includemain{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.A.-1B.0C."abcdef"D."abdef"

69.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序运行后,文件t1.dat中的内容是()。

A.startB.endC.startendD.endrt

70.

71.下列哪个属性是用来定义内联样式的?()

A.fontB.classC.stylesD.style.

72.

73.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

74.

75.

76.

77.设有以下语句

charchl,ch2;scanf("%c%C",&chl,&ch2);

若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔

B.A和B之间不能有任何间隔符

C.A和B之间可以用回车间隔

D.A和B之间用空格间隔

78.

79.有以下程序:

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

A.61B.70C.63D.71

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据形参m(2≤m≤9)的值,在m行m列的二维数组中存放如下所示的数据,由main()函数输出。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(),该函数的功能是使数组上三角元素中的值乘以m。若m的值为2,a数组中的值为197238456则返回主程序后a数组中的值应为2181426164512注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/

参考答案

1.B本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

2.Bmain函数中定义一个二维数组v,另外还定义一个指针数组p。通过for循环,将v的各个行(字符串的首地址)赋给P的对应下标的元素。然后通过嵌套的for循环,为该二维数组中存放的各个字符串进行排序。strcmp函数返回值大于0时(p[i]>p[j])交换两个字符串,所以每一轮内嵌的for循环,都将下标为i的字符串放在最终的排序位置上,即排序规则是按字符串升序排列。字符串排序时,是将两个字符串自左向右逐个字符比较(按字符的ASCII值大小),直到出现不同的字符或遇到‘\\0’为止。排序后,再将v中各个排序后的字符串输出。所以程序输出结果为:abcdefghijklmnopq。故本题答案为B选项。

3.A

4.B解析:本题考查的知识点是变量赋初值.选项A中的语句只能起定义n1的作用,而n2=10是n1的初始值表达式,但因前面没有定义过n2,所以编译会报错“n2未定义”,故不正确。选项B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数(某字符的ASCII码值)。选项C定义的初始值表达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。选项D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。

5.B详细解答:

数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

6.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。

7.A解析:本题主要考查运算表达式的运算。3+(int)(x)的结果是10011010,~3的结果是11111100,二者逻辑与得10011000。

8.B解析:函数gets()的调用形式为gets(str_adr);str_adr是存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。gets函数的参数a[0]不能表示数组a的首地址。

9.B

10.D解析:本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

11.A

12.A

13.D解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不需要另外开辟空间来保存元素之间的关系。

14.A本题考查的是线性单链表、双向链表与循环链表的结构及其基本运算。\n在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。故本题答案为A。

15.A本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

16.CA、B、D选项的含义均为:a的值如果为0,输出y的值,否则输出x的值。而C选项的含义是:a的值为0时输出x的值,不为0时输出y的值,与其他选项正好相反。故本题答案为C选项。

17.BC语言中指针就是变量的地址,它必须有确定的基类型。当指针指向某个变量时,才能向其中写入数据,选项A错误,选项B正确;指针除了指向变量外,还可以赋值为NULL,表示未指向任何地址,此时不能写入数据,另外指针必须有基类型,只能指向基类型相同的变量,选项C错误;指针只能与一个整数进行运算,即移动指针,两个指针不能运算,选项D错误。本题答案为B选项。

18.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

19.D解析:带参数的宏定义如下:#define宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,不必在行末加分号。

20.C解析:数组名s1是代表s1数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量,因此sl='ABCDE'的方法是错误的。

21.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2分支,最后a和b的值分别为2和1。

22.ch++或ch=ch+1或++chprintf("\n")或prinff("\015")ch++或ch=ch+1或++ch,\r\nprintf('\\n')或prinff('\\015')解析:程序中使用了两层for循环,外循环的作用是控制行数,内循环的作用是控制每行的列数,在内循环中首先输出当前字符(从\'A\'开始),[6]中应填ch++,使ch中的字符变为要输出的下一个字符。每输出一行就需换一次行,所以[7]处应填pfintf('\\n')。

23.doublemaxdoublemax解析:本题考查函数的声明。C语言中函数声明的一般形式为:

(1)函数类型函数名(参数类型1,参数类型2,…)

(2)函数类型函数名(参数类型1参数名1,参数类型2参数名2,…)

题目中函数类型是double。函数名是max。故答案是doublemax。

24.gaga解析:考查了用字符指针处理字符串的方法。用字符指针处理字符串,首先要使指针指向这个字符串,即题中的ptr1=a和ptr2=b,然后就是通过指针的移动可以引用到字符串中的每一个字符。题中的*(ptr1+k)是使指针ptr1向后移动k个位置,然后取出指向的字符。

25.数据库管理系统数据库管理系统(DBMS)

26.11解析:用“&&”连接两个表达式时,若第1个表达式的值为“假”,则运算结果与第2个表达式无关,此时第2个表达式将不再进行计算。本题中第1个表达式“j=!ch”值为0,所以第2个表达式i++将不再进行计算,i的值为1。

27.q<p+nq<p+n解析:通过地址传递可以在被调函数中对调用函数中的变量进行引用。

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

29.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

30.fopenfopen解析:函数fopen的原型为FILE*fopen(char*filename,char*mode),功能为以mode指定的方式打开名为filename的文件;函数fseek的原型为intfseek(FILE*fp,longoffset,intbase),功能为将fp所指向的文件的位置指针移到以base所指出的位置为基准,offset为位移量的位置;函数ftell的原型为longftell(FILE*fp),功能为返回fp所指向的文件中当前的读写位置;函数fclose的原型为intfclose(FILE*fp),功能为关闭fp所指的文件,释放文件缓冲区。

31.100010100010解析:首先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

32.tc

33.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

34.程序正确性程序正确性

35.55解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空.输出语句不在for循环体内,所以在循环执行完毕后才输出s的值.s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

36.503503解析:此处需注意的是:如果if后面的条件为真,只执行其后的一条语句或一条复合语句,如果if后面的条件为假,只执行else后面的一条语句或一条复合语句。先判断表达式“a<b”为假,不执行“t=a”,但执行“a=b;b=t;”,s的值为3,b的值为0。在判断表达式“a<c”,值为真,所以执行后面的3条语句“t=a;a=c;c=t”,结果a的值为5,c的值为3,所以最后输出的结果为5、0和3。

37.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。

38.8168,16解析:float(*p1)(float)是定义p1为指向函数的float型的指针变量。因此p1=f1;p2=f2;表示p1指向函数f1,p2指向函数f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面将p1与p2互换,y2=f1(f2(2.0))=16。

39.驱动模块驱动模块解析:由于模块通常不是独立的程序,自己不能运行,而需要其他模块调用或驱动,同时被测试模块还要去调用其他模块,前者称为驱动模块,后者称为承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是代替被测模块,调用其他模块。

40.元组元组解析:在关系型数据库中,用二维表来表示关系,二维表的表名即关系名,二维表的行称为关系的元组,二维表的列,称为关系的属性。

41.A解析:注意本题有个陷阱,马虎的考生将纷纷落马。本来、while中的表达式应为k==1,而本题却为k=1,是赋值表达式而不是逻辑表达式。因此,编译器将其值一直认为是1,因此表达式一直为真,陷入无限次的循环。

42.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

43.B

44.C解析:malloc函数的调用形式:malloc(size)。malloc函数用来分配size个字节的存储区,返回一个指向存储区首地址基类型为void的地址,可以利用强制类型转换将其换成所需的类型,这里需转换为整型(int*)。若不能确定数据类型所占的字节数,可使用sizeof运算符来求得,这里要求两个连续的整型动态存储单元即2*sizeof(int)。4个选项中只有C符合题意。

45.A解析:在C语言中,数据类型可分为基本数据类型、构造数据类型、指针类型、空类型4大类,其中基本类型;字符型、整型、实型(单精度型和双精度型)、枚举类型。构造类型:数组、结构体、公用体。选项B中的逻辑型和C中双精度类型都属于基本数据类型,选项D集合类型属于构造类型;而选项A复数型不是C语言的数据类型。

46.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

47.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。

48.D解析:计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为:软件=程序+文档+数据。选项A、选项B和选项C错误,正确答案是D。

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

50.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。

51.C解析:在定义字符数组时,可以用一个字符串作为初值,对数组进行初始化。要注意的是,数组array的长度不是5,而是6,因为系统将自动在字符串常量的后面加上一个'\\0',因此,题干中的初始化语句与chararray[]={'C','h','i','n','9','\\0'};等价。

52.B解析:一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等,选项A和选项D正确。采用不同的存储结构,其数据处理的效率不同,因此,在进行数据处理时,选择合适的存储结构是很重要的,选项C正确,选项B错误,应为本题正确答案。

53.D冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

54.C解析:“p”是指针变量,指向一个地址:“*

温馨提示

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

评论

0/150

提交评论