2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩33页未读, 继续免费阅读

下载本文档

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

文档简介

2021年安徽省安庆市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序运行时输入5并按〈Enter〉键,则程序输出结果为()。

A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,

2.

3.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

4.设有定义“inta=3,b,*p=&a”,则下列语句中使b不为3的语句是______。

A.b=*&a;B.b=*p;C.b=a;D.b=*a;

5.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

6.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A.'a'&&'b'

B.a<=b

C.a||+c&&b-c

D.!((a<b)&&!c||1)

7.下列程序的输出结果是()structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%d\n",t);}

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

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

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

9.下列程序的输出结果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

10.有以下程序:

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

A.4B.34C.31D.32

11.算法分析的目的是()。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性

12.在下列定义语句中,编译时会出现编译错误的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;

13.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

14.若有定义“int*p[3];”,则以下叙述中正确的是()。A.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针

B.定义了一个基类型为int的指针变量p,该变量具有3个指针

C.定义了一个名为*p的整型数组,该数组含有3个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素

15.一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A.219B.221C.229D.231

16.假定一个顺序队列的队首和队尾指针分别为f和r,则判断队空的条件为____。

A.f+1==rB.r+1==fC.f==0D.f==r

17.下列说法错误的是______。

A.关系中每一个属性对应一个值域

B.关系中不同的属性可对应同一值域

C.对应同一值域的属性为不同的属性

D.DOM(A)表示属性A的取值范围

18.以下选项中合法的实型常数是()。

A.5E2.0B.E-3C.2E0D.1.3E

19.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()

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

20.设计一个判别表达式中左、右括号是否配对出现的算法,采用()数据结构最佳。A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

22.关键字ASC和DESC分别表示【】的含义。

23.数据模型包括数据结构、()和数据条件。

24.下面程序调用fun函数动态分配两个整型存储单元,并通过形参传回这两个整型存储单元的地址给s1和s2,将程序补充完整。

┇

main()

{

int*s1,*s2;

┇

fun(【】);

┇

}

intfun(【】);

{

*p=(int*)malloc(sizeof(int));

*q=(int*)malloc(sizeof(int));

}

25.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

printf("%d,%d\n",*(t[1]+1),(*t)[1]);

}

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

26.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

27.有如下图所示的双链表结构,请根据图示完成结构体的定义:

structaa

{intdata;

【】}node;

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

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

29.若s是int型变量,且s=8,则s%3+(s+1)%3表达式的值为()。

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

31.下面的程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include<stdio.h>

#include<stdlib.h>

FILE*fp;

main()

{charch;

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

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

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

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

33.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

34.以下程序输出的最后个值是【】

intff(intn)

{staticintf=1;

f=f*n

returnf;

}

main()

{inti;

for(i=1;i<=5:i++)printf("%d、n",ff(i));}

35.算法的基本特征主要包括叫个方面,它们分别是可行性、确定性、()和拥有足够的情报。

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

main()

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

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

37.以下程序的功能是从键盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。

#include<stdio.h>

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;amin=x;

while(【】)

{if(x>amax)amax=x;

else

if(【】)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

38.在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径至少执行一次。

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

#include<string.h>

main()

{chara[]={'\1','\2','\3','\4','\0'};

printf("%d%d\n",sizeof(a),strlen(a));

}

40.当运行以下程序时,从键盘输入abcdabcdef<CR>

cde<CR>

(<CR>表示回车),则下面程序的运行结果是【】。

#include<stdio.h>

main()

{inta;chars[80],t[80];

gets(s);gets(t);

a=fun(s,t);

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

fun(char*p,char*q)

{inti;

char*p1=p;

char*q1;

for(i=0;*p!='\0';p++,i++)

{p=p1+i;

if(*p!=*q)continue;

for(q1=q+1,p=p+1;*p!='\0'&&*q1!='\0';q1++,p++)

if(*p!=*q1)break;

if(*q1=='\0')returni;}

return(-1);}

三、1.选择题(20题)41.模块化程序设计主要强调的是()。

A.程序的规模要大B.对程序进行分解C.程序的执行效率D.程序的可移植性

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

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

43.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

44.下面程序的输出结果是()。#include"stdio.h"fun(xintx{inty=0;staticintz=5;z=x++,y++;return(Z);}main(){inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}

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

45.若有结构体定义:structstu{intnum;charsex;intage;}a1,a2;则下列语句中错误的是()。

A.printf("%d,%c,%d",a1);

B.a2.age=a1.age;

C.a1.age++;

D.a1.num=5;

46.有以下程序:#include<stdio.h>main(){inta=6,b=7,m=I;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}程序运行后的输出结果是()。

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

47.对线性表进行二分法检索,其前提条件是()。

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

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

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

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

48.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

49.有以下程序:voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2{intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(A);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其输出结果是

A.5353B.5335C.3535D.3553

50.在下列定义中的共用体所占内存字节数是()Union{chark[6];struct{intm;floatf;}a;doubled;}b;

A.8B.14C.18D.10

51.若有定义语句:floatx[6];则以下对x数组元素的正确引用形式是()。

A.x+2B.&x[6]C.*(x+2)D.*&x[6]

52.指针变量p的基类型为int,并已指向一连续存储区,若p中当前的地址值为1234,则执行p++后,p中的值为()

A.1234B.1235C.1236D.1237

53.若有下列定义,则对a数组元素地址的正确引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

55.下列能正确定义且赋初值的语句是()。

A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

56.没有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i);

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

57.执行下列语句的结果为______。i=3;printf("%d,",++i);printf("%d",i++);

A.3,3B.3,4C.4,3D.4,4

58.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

59.当运行以下程序时,从键盘输入AhaMA(空格)Aha

#include

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!='\n')

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

60.已知year为整型变量,不能使表达式(year%4==0&&year%100!=O)||year%400==0的值为“真”的数据是______。

A.1990B.1992C.1996D.2000

四、选择题(20题)61.在满足实体完整性约束的条件下()。

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

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

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

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

62.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

63.计算机能直接执行的程序是()。A.可执行程序B.目标程序C.汇编程序D.源程序

64.设有以下语句:inta=1,b=2,c;c=a^(b<<2);执行后,c的值为()。A.6B.7C.8D.9

65.有三个关系R、S和T如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡儿积D.交

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

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

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

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

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

67.

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

A.每个C语言程序文件中都必须要有一个main(.函数

B.在c语言程序中main(.函数的位置是固定的

C.c语言程序中所有函数之间都可以相互调用,与函数所在位置无关

D.在c语言程序的函数中不能定义另一个函数

69.

70.写出下列程序段的输出结果()。

main()

{intx=5;inty=10;

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

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

A.5B.6C.6D.5

10101111

71.if语句的基本形式是:if(表达式)语句,以下关于“表=迭式”值的叙述中正确的是()。

A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

72.在关系数据库系统中,当关系的模型改变时,用户程序可以不变,这是

A.数据的物理独立性B.数据的逻辑独立性C.数据的位置独立性D.数据的存储独立性

73.为了提高测试的效率,应该()。

A.随机选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.集中对付那些错误群集的程序

74.以下叙述中错误的是()。A.c程序在运行过程中所有计算都以十进制方式进行

B.c程序在运行过程中所有计算都以二进制方式进行

C.所有C程序都需要编译链接无误后才能运行

D.c程序中字符变量存放的是字符的ASCIl值

75.若在定义语句:

76.

77.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}

程序的运行结果是

A.10,3B.20,3

C.10,20D.20,2

78.

79.

80.数据库系统的核心是()。

A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。

例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。

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

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

试题程序:

#include<stdio.h>

#include<math.h>

intproc(inta,intb,intc)

{

if(a+b>c&&b-c>a&&a+c>b)

{

if(a==b&&b==c)

//****found****

return1;

elseif(a==b||b==C||a==c)

return2;

//****found****

elsereturn3;

}

elsereturn0;

}

voidmain

{

inta,b,c,shape;

printf("\nInputa,b,c:");

scanf("%d%d%d",&a,&b,&c);

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

shape=proc(a,b.c):

printf("\n\nTheshape:%d\n",shape);

}

六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:根据以下公式求7c的值(要求满足精度0.0005,即某项小于0.005时停止迭代)。程序运行后,如果输入精度0.0005,则程序输出3.140578。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.Cmain函数首先定义一个整型变量data,使用scanf函数输入一个整数赋给data。接着执行for循环,i的值为0~7。当i的值不大于data的值时,使用continue语句跳过当前循环,进入下一轮循环。若从键盘输入5,data的值为5,i取值为0~5时,都不执行printf语句。当i取值为6、7时,执行printf语句,输出6,7。故本题答案为C选项。

2.B

3.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历遍历顺序应该为:访问根结点->先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF。

4.D

5.C

6.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0:选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<B)&&!c||1),运算结果为0。

7.D

8.B

9.B本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和;联合所占用内存空间是指最长的成员占用的空间。

10.C本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。

11.C

12.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。

13.D

14.Aint*p[3]含义是定义一个指针数组p,数组中包含3个元素,每个元素都是int*类型的指针。本题答案为A选项。

15.A本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+l。根据这条性质可知,若二叉树中有70个叶子结点,则其度为2的结点数为70-1,即69个。二叉树的总结点数是度为2、度为1和叶子结点的总和,因此,题目中的二叉树总结点数为69+80+70,即219。因此,本题的正确答案是选项A。

16.D

17.C解析:关系中每一个属性都有一个取值范围,称为属性的值域。每—个属性对应一个值域,不同属性可对应同一个值域。对应同一值域的却不一定是不同的属性。属性的值域用DOM(A)表示,A表示属性的名称。

18.C解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。

一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点),

指数形式的小数;指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。

选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字:选项D中,E后面没有数字。最终可以判断选项C正确。

19.B

20.D

21.2424解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1-24。

22.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。

23.数据操作数据操作解析:数据模型就是现实世界的反映,数据模型所描述的内容有3个部分,它们是数据结构、数据操作与数据约束。

24.&s1&s2

25.929,2解析:本题开始定义了一个int型二维数组a,并赋以5个初值,系统使数组的最高维为3,并让a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因为初值不够而初始化为0。然后定义一个行指针t指向数组a的首地址,因为表达式t[1]表示指向元素a[1][0]的int型指针,t[1]+1表示指向a[1][1]的int型指针,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指针,故(*t)[1]返回的是a[0][1]的值2。所以正确答案应该为9,2。

26.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

27.structaa*lhead*rchild;structaa*lhead,*rchild;解析:结构体对链表的定义。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

29.22解析:考查基本表达式的计算,“%”运算符的功能是取余。题中条件s=8,则s%3=2,(s+1)%3=9%3=0,所以表达式s%3+(s+1)%3=2+0=2。

30.86518651解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。

31.bi.dat"w"或"bi.dat""w+"bi.dat,'w'或'bi.dat','w+'解析:根据fopen函数的调用方式fopen(文件名,使用文件方式)和题意可得结果。

32.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。

33.JD

34.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与for语句一起求一个整数的阶乘。

35.有穷性有穷性

36.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值'BCD'并换行,依次执行循环语句。

37.x>=0x<aminx>=0x<amin解析:本题先从键盘接受数值,并分别赋给amax(用于保存最高成绩)和amin(用于保存最低成绩),然后通过while循环控制是否结束输入,并且通过if语句来给amax和amin赋值。

38.白盒白盒解析:按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次:保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。

39.545\u3000\u30004解析:字符串处理函数strlen()返回的是字符数组的实际长度,不包括字符申结束标志‘\\\u30000’。而sizeof运算符则计算的是字符数组的总长度,包括串末尾的结束标志。

40.a=6a=6解析:字符指针p++使指针向后移动一个字符的位置,而*p则是取得指针p所在位置的字符元素。

41.B解析:模块化设计是指把一个大程序按人们能理解的大小规模进行分解。

42.C解析:A、D选项是关系运算表达式,在C语言中,只要关系运算符两边是合法的表达式就可以了。C选项中,%只能对整型进行运算,其中对f进行了强制类型转换,但是转换的表达式错了,应为:(int)(f)。

43.C解析:软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

44.D解析:本题在fun()函数中定义了一个静态局部变量z,在第一次调用此函数时,z被初始化为5,而以后的调用2都会保留上次调用后的值。主函数通过一个for循环,二次调用fun()函数,第1次调用实参表达式a++的值为4,执行z=x++,y++;语句,因运算符“=”的优先级高于“,”,故z的值为表达式x++的值,x++是先对z赋值再对x加1,则z的值为4。第二次调用实参表达式a++的值为5,返回结果也为5,所以最后输出结果是5。D为所选。

45.A解析:题中a1和a2两个结构体变量名所对应的成员相同,可以与运算“++’相结合。结构体变量的输出格式为:printf('要输出变量名;%d\\t',结构变量名.要输出的成员变量名),

46.B解析:本题考查switch语句。因为a=6,所以a%2=0,因此第一个switch语句,执行case0,将m加1,遇到break语句跳出switch语句,输出m值为2。

47.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

48.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

49.B解析:本题考核的知识点是函数调用中值传递和地址传递。函数间的参数的传递有两种情况,第1种情况变量作为形参时的参数传递,变量作为形参时,要求对应的实参应为变量或表达式,变量作为函数的参数其传递方式是“值传递”,该种情况下,形参被赋值为实参的值,然后实参与形参再无联系。也就是说对行参的改变将不再影响实参:第2种情况是地址或数组名作为形参时的参数传递,该种情况下对形参的改变将对实参产生影响。本题中函数swap1()是传递的地址。所以对该形参c的改变将影响实参,分析可知该函数的作用,是使数组c的第一个元素和第二个元素的值互换。主函数中调用该函数将a作为实参传递给形参c,故执行该函数后a的第一个元素和第二个元素的值将交换。分别为5和2.函数swap2()是值传递的,所以该函数执行后对数组b将没有任何改变,此时该数组的第一个和第二个元素依然为3和5,因此最后的输出为5、3,3和5,所以,4个选项中选项B符合题意。

50.A

51.C解析:数组名x为该数组的首地址即第1个元素的地址,x+2表示数组第3个元素的值地址。x[6]表示数组中长度为6,数组元素的下标从0到5,没有x[6]。&为取地址符,取得的是元素的地址。*为间接访问运算符,其运算对象为地址或存放地址的指针变量。*(x+2)为取数组第3个元素的值,因此只有选项C正确引用了数据元素,选项C正确。

52.C

53.D解析:本题考查如何引用数组元素的地址。

选项A)中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用错误;选项B)中,*a+1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。

54.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

55.B解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。在选项A)中在给n1和n2进行赋初值,但变量02没有定义;在选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误:在选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。

56.D解析:本题首先定义了一个一维数组并初始化,接着定义了一个指针变量p指向数组x。因此可以通过指针p的下移,即每次加1引用数组x中的元素,来指向数组中的每个元素,这样循环6次即可引用数组的每个元素。选项A、B和选项C满足要求,而在选项D中表达式为(*p)++,该表达式是先取*p的值然后将其值加1,而没有将指针下移一位。

57.D

58.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。

59.A解析:本题主要考查的知识点是大写字母比它对应的小写字母ASCII码值小32,并且字符可以看作整数进行算术运算等操作。

60.A

61.A【答案】:A

【知识点】:实体完整性与候选关键字

【解析】:在满足数据完整性约束的条件下,一个关系可以有一个或多个候选关键字,但至少有一个候选关键字,故选A。

62.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

63.A计算机能直接执行的程序是二进制的可执行程序,其他的不能直接执行。

64.D本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故选择D。

65.D自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此B错误。笛卡儿积是用R集合中的元素为第一元素,s集合中的元素为第二元素构成的有序对,因此C错误。根据关系T可以很明显地看出是从关系R与是系s中取得相同的关系组,所以使用的是交运算,选择D。

66

温馨提示

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

评论

0/150

提交评论