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

下载本文档

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

文档简介

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

一、单选题(20题)1.

有以下程序:

main

{intx=102,y=012;

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

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

2.设有如下函数定义:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句“n=fun(3);”,则函数fun总共被调用的次数是()。

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

3.

4.设有以下函数“voidfun(intn,char*s){…}”,则下列对函数指针的定义和赋值均正确的是()。

A.void(*pf)(int,char);pf=&fun;

B.void*pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char*);pf=fun;

5.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

6.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}执行后输出结果是

A.58B.56C.45D.24

7.有以下程序

#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.A.1267B.1256C.1278D.1245

8.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

9.对于C语言的函数,下列叙述中正确的是()。

A.函数的定义不能嵌套,但函数调用可以嵌套

B.函数的定义可以嵌套,但函数调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都可以嵌套

10.若有定义“a[]={1,2,3,4,5,6,7,8,9,10};”,则“a[a[5]-a[7]/a[1]]”的值是()。

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

11.设有定义“doublea[10],*s=a;”,以下能够代表数组元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

12.

13.有以下程序:#include<stdio.h>intf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d,"f(++n));printf("%d\n",f(n++));}程序运行后的输出结果是()。A.1,2B.1,1C.2,3D.3,3

14.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序运行后输出的结果是A.A.63

B.36

C.编译出错

D.00

15.设x和y均为int型变量,且x=10,y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

16.以下程序的输出结果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

17.对两个数组a和b进行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);则下列叙述正确的是()。A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

18.冒泡排序在最坏情况下的比较次数是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

19.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序运行后的输出结果是()。A.0B.1C.2D.3

20.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

二、2.填空题(20题)21.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

22.算法的复杂度主要包括时间复杂度和______复杂度。

23.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

24.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

25.设有宏定义:

#defineWIDTH80

#defineLENGTHWIDTH+40

则执行赋值语句“v=LENGTH*20;"(v为int型变量)后,v的值是【】。

26.下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

27.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

printf("\n");

}

28.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3.3)+...+1/(n*n)

请在下面的函数中天空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<<=n;i++)s=s+【】;

return(sqrt(6*s));

}

29.以下定义的结构体类型拟包括两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义比冲完整

structnode

{intinfo;

______link;};

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

31.strcmp函数的功能是【】。

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

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

33.分析下列程序:

main()

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

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

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

}

运行程序的输出结果是______。

34.设有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

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

35.以下程序输出矩阵中值为。的元素的行下标和列下标。行下标和列下标分别放在同一下标的r和c数组元素中。程序通过调用随机函数给矩阵赋值。

#defineN5

#include<stdlib.h>

main()

{inta[N][N],i,j,c[N*N],r[N*N],n;

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

for(j=0;j<N;j++)a[i][j]=rand()%5;

n=gindex(【】);

printf("\n\nTheresult:\nn=%d\n",n);

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

}

intgindex(int(*p)[N],int*c,int*r)

{inti,j,k;

【】;

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

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

if(【】==0)

{r[k]=i;c[k]=j;【】;}

return【】;

}

36.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数数返回字符串:yes!否则函数返回这符串:no!并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

pl=str;p2=______;

for(i=0;i<=strlen(str)/2;i+*)

if(*p1++!=*p2--){t=1;break;}

if(______)return("yes!");

elsereturn(*no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

printf("%s\n",______);

}

37.程序的运行结果为【】。

main()

{intx,y,z;

x=24;

y=024;

z=0x24;

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

}

38.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

39.以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j

for(i=0;【】;i++)

{j=i*10+6;

if(【】)continue:

Printf("%d”",j);

}

}

40.以下程序用来输出结构体变量student所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;

};

main()

{structststudent;

printf("studentsize:%d\n",sizeof(【】));

}

三、1.选择题(20题)41.某一个汉字的区位码为(2113H),则其内码为()

A.(2199)10B.(C1B3H)C.(C1B3)10D.(B1B3H)

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

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发过程中的技术问题

43.若有以下说明和语句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;则值为6的表达式是______。

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

44.有如下程序

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

该程序的输出结果是

A.69825B.63825C.6385D.693825

45.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

46.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}则程序运行后的输出结果是()。

A.1,1B.1,4C.4,1D.4,4

47.下列程序的输出结果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}

A.0B.3C.OKD.没有任何输出

48.以下叙述中正确的是

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

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

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

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

49.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

50.因特网(习惯上称国际互联网)的英文名是()

A.InternetB.IntranetC.NCFCD.ISDN

51.执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为______。inta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;

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

52.当把4个表达式用做if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是()。

A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1

53.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

54.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}执行后的输出结果是()。

A.70B.07C.11D.430

55.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

56.若有定义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

57.C语言中用于结构化程序设计的三种基本结构是A.顺序结构、选择结构、循环结构

B.if、switch、break

C.for、while、do-while

D.if、for、continue

58.程序中对fun()函数有如下说明void*fun();此说明的含义是______。

A.fun函数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

59.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

60.在下列叙述中,错误的一条是()

A.主函数main中定义的变量在整个文件或程序中有效

B.不同函数中,可以使用相同名字的变量

C.形式参数是局部变量

D.在―个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效

四、选择题(20题)61.以下关于指针概念不正确的是()。

A.指针变量可以用整数赋值,但不可以用浮点数赋值

B.一个变量的地址称为该变量的指针,一个指针变量只能指向同一类型的变量

C.只有同一类型的变量地址才能放到指向该类型变量的指针变量之中

D.只能将地址赋给指针变量

62.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是()。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

63.若有以下程序:

上面程序的输出结果是()。

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

64.

65.以下数组定义中错误的是()。

A.

B.

C.

D.

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

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

B.函数可以返回地址值

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

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

67.

68.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

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

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

70.设有定义:intm=0;。以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++mB.m+=1C.m++D.m+1

71.

72.

73.有以下程序:

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

A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,

74.对线性表进行二分法检索,其前提条件是()。A.A.线性表以顺序方式存储,并按关键码值排好序B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

75.(65)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系

B.系统结构部件转换成软件的过程描述

C.软件层次结构

D.软件开发过程

76.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

77.以下叙述中正确的是

A.自定义的函数中一定要有return语句

B.自定义的函数中不可以有多个return语句

C.自定义的函数中可以没有return语句,此时函数应被定义为void类型

D.函数的return语句一定要带有表达式

78.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

79.

80.以下不合法的字符常量是

A.’x\018’B.’\"’C.’\\’D.’\xcc’

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c在此程序中,编写函数intfun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数组中,并返回所求出的素数的个数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4#defineMAX1005intfun(intlim,intaa[MAX])6{78}9voidmain()10{11FILE*wf;12intlimit,i,sum;13intaa[MAX];14system("CLS");15printf("输入一个整数:");16scanf("%d",&limit);17sum=fun(limit,aa);18for(i=0;i<sum;i++)19{20if(i%10==0&&i!=0)/*每行输出10个数*/21printf("\n");22printf("%5d",aa[i]);23}24/******************/25wf=fopen("out.dat","w");26sum=fun(15,aa);27for(i=0;i<sum;i++)28{29if(i%10==0&&i!=0)/*每行输出10个数*/30fprintf(wf,"\n");31fprintf(wf,"%5d",aa[i]);32}33fclose(wf);34/******************/35}

参考答案

1.C解析:本题中,“printf('%2d,%2d\\n',x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是2。而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为102和10(y的初值012表示八进制整数12,等于十进制的10)。所以,4个选项中选项C符合题意。

2.B执行调用语句“n=fun(3);”,3被当作实参传递进去,进行了一次调用。3被当作实参传进去后,程序会执行“elsereturnfun(k-1)+1;”,函数被调用了第2次,参数是3-1,也就是2。2被当作参数传进去后,程序会执行“elsereturnfun(k-1)+1;”函数被调用了第3次,参数是2-1,也就是1。1被当作实参传进去后,程序会执行“elseif(k==1)return1;”,函数不再被递归调用。所以最终结果为3次。故本题答案为B选项。

3.A

4.D函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为“void(*Pf)();”。如果定义为“void*pf();”,则表示函数pf的返回值是一个基类型为void的指针。故本题答案为D选项。

5.C由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

6.D解析:在主函数中首先定义了一个数组p并初始化,在while后面括号里的表达式中,i初值为0,当p[i]为偶数时,P[i]%2等于0,根据“&&”运算符的规则,其表达式为假退出循环,显然当i=2时,p[i]=14为偶数,此时while后面括号里的表达式的值为假,退出循环,此时k=p[0]+p[1],即k=11+13。所以最后输出k为24。

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

8.D本题主要考查带参数的宏定义,过程如下:由于定义为define(x)x*x没有括号优先级,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

9.A

10.C题干中,数组a包含10个元素。其中a[5]为6,a[7]为8,a[1]为2,所以表达式“a[a[5]-a[7]/a[1]]”等价于“a[6-8/2]”,等价于a[2],即3。故本题答案为C选项。

11.B题中,首先定义了double型的数组a,并将数组首地址赋给指针s。“(*s)”表示“a[1]”,“s[3]”不是指针变量,不能使用间址运算符“*”,故选项A、C不能表示“a[3]”;选项D的“*s+3”等于“a[0]+3”。故本题答案为B选项。

12.C

13.A解析:static变量用于局部变量中有记忆功能和全局生存期。函数中的静态变量的特点是每次调用函数,静态变量的值是上次调用完该函数后的静态变量值,所以在此题中,第一调用函数,返回1,此时函数中的静态变量n的值为l,所以第二次调用函数时,返回值为2。

14.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。

在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。

15.D

16.D因为a是结构体变量,最后一次输入的值为结构体中的值,即a中的任何一个值都为0。

17.C在m数组中赋值的是字符串,其长度为7,末尾有结束符\0,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。

18.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。

19.D

20.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

21.完整性控制完整性控制

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

23.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

24.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

25.880

26.b=I+1b=I+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。

27.x[0]x[0]x[0],x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

28.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由题面中提供的计算pi的公式可知:在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。

29.解析:本题中的结构类型名为structnode,所以空白处应填:structnode*,即定义一个指向自身的结构体指针。

30.软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。\r\n\r\n

31.字符串的比较strcmp函数的原型是intstrcmp(char*s1,char*s2);功能是对s1和s2所指字符串进行比较,若s1<s2返回负数,若s1==s2返回0,若s1>s2返回正数。

32.66解析:本题第1个for循环是为数组arr元素赋初值。第2个for循环是分别用i=0,1,2,3给数组元素arr[0]、arr[1]、arr[2]、arr[3]赋值,再累加到变量k中,k=0+1+2+3=6。

33.x=1y=0。x=1,y=0。解析:本题程序的主体部分是switch语句的嵌套结构,当变量a的值为0时,在第一层switch-case语句中,没有匹配的case分支。因此,x和y的值没有变化,仍然是1和0。

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

35.acrk=0p[i][j]k++k

36.str+strlen(p1)-1或str+strlen(str)-1残str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1残str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判断回文教一般使用两个指针或下标变量分别从检查串的第1个字符和最后一个字符开始相向移动,并比较两者内容是否相同,直到中间相遇一直相同则是回文数,否则不是。函数huiwen中开始定义了两个字符指针p1和p2,并让p1指向str的开始位置,所以p2应该指向str的尾部,即&str[strlen(sir)-1]或写成str+strlen(str)-1或者其他等价形式。然后使用一个循环,循环str的长度的一半次数,比较p1和p2的内容,并分别递增和递减这两个指针。若有不同,则让标志t为1,并跳出循环。所以最后一个if语句应该为判断标志t是否为1,即应该填t==0或者其他等价形式。在主函数中,应该输出huiwen()函数的返回结果,印最后一空应该填huiwen(str)。

37.242036

38.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

39.i<10或i<9j%3!=0或j%3i<10或i<9\r\nj%3!=0或j%3解析:程序中的j用于存放符合条件的整数,j=i,10+6;求得个位数为6的整数,由此可得出程序的循环次数为i<10,所以[15]处填i<10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以[16]处填j%3!=0。

40.structst或studentstructst或student

41.B

42.CC。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。

43.D解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再掏打自加1运行,结果为6。

44.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的内容为字符串'8254'。③程序中第二个循环中的循环体s=s*10+p[i][j]-\'0\';的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串结束标志\'\\0\'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串'6937'中一个隔一个地取出字符,分别是\'6\'和\'3\',然后从p[1]所指向的字符串'8254'中一个隔一个地取出字符,分别是\'8\'和\'5\',同时经过转换和相加运算后,结果s中的值应该是6385。

45.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

46.C解析:{intm=4;s+=m;}是复合语句,m=4,s+=m等价于s=s+m=0+4=4。t+=m等价于t=t+m,这里m为全局变量,值为1,t=t+m=O+1=1。

47.D解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。

48.C解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应当具有以下五个特性:有穷性;确定性;可行性;有零个或多个输入;有一个或多个输出。所以,4个选项中选项C符合题意。

49.A解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中的x是double型数据。

50.A

51.D解析:p为指针数组,其元素分别为指向数组a的4个元素的指针。q为指向指针的指针变量,其初值为指针数组p的首地址。所以:表达式*(p[0]+1)+**(q+2)=*(a+3+1)+**(p+2)即是*(a+4)+*(a+1)=a[5]+a[2]=1+4=5。

52.A整数k对2求余数的两个结果只能是0和1,所以选项A)表示k除以2的余数,其结果是0或1。在选项B)、c)和D)中包括算术求余运算符“%”,关系等于运算符“-”和关系不等于运算符“!=”以及逻辑非运算符“!”。而逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、(逻辑“与”)、?(逻辑“或”)、赋值运算符。选项B)含义是判断表达式k%2的结果是否等于1、选项C)的含义是判断表达式k%2的结果是否不等于0,选项D)含义是判断表达式!k%2的结果是否等于1,所以选项B)、C)和D)的禽义相同。

53.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。

54.A解析:&是按位“与”运算符,其运算规则是:参加运算的两个运算量,如果两个相应的位都为1,则该位的结果值为1,否则为0。|是按位“或”运算符,其运算规则是:两个相应位中只要有一个为1,该位的结果为1。4转换为二进制数为0100,3转换为二进制数为0011,则4|3=0111,即7,4&3=0000,即0。

55.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

56.C解析:“p”是指针变量,指向一个地址:“*p”,为p指针所指向地址的内容。

57.A解析:结构化程序由3种基本结构组成,即顺序结构、循环结构(包括for语句、while语句及do…\u3000while语句)和选择结构(包括if语句和switch语句)。

58.C解析:C语言中函数的定义分为有参函数的定义和无参函数的定义。无参函数的定义形式为:

类型标识符函数名()

{说明部分

语句

}

有参函数的定义有两种形式:

类型标识符函数名(形式参数列表)

形式参数说明

{说明部分

语句

}

类型标识符函数名(类型名形参1,类型名形参2,…)

{说明部分

语句

}

其中函数名为用户定义的C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是C允许的任何类型,如int、char、float、double和指针类型等。当函数值为整型时类型标识符可以省略,如果函数没有返回值,类型标识符可以是void型。当函数的形参多于一个时,各个形参之间用逗号分隔。

59.D解析:double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf'('%1f',p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%1e)。否则,数据不能正确输入。所以选项D)为正确答案。

60.A

61.A指针是用来指示一个内存地址的变量,因此只能将地址赋给指针变量,而不能是整数或浮点数。

62.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。

63.C在c语言中,数组元素下标是从0开始的;指针变量P指向数组的首地址。for循环语句中,指针变量P始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为1。

64.D

65.B二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。

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

67.B

68.C解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非

温馨提示

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

评论

0/150

提交评论