2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年山西省长治市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之问的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

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

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

3.

4.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

A.(rear-front+m)%m

B.rear-front+1

C.(front-rear+m)%m

D.(rear-front)%m

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

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

6.以下叙述中正确的是()。

A.结构体变量中的成员可以是简单变量、数组或指针变量

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型可以是本结构体类型

D.结构体定义时,类型不同的成员项之间可以用逗号隔开

7.设计软件结构是在软件生命周期的()。

A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是

8.下面函数的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的长度B.比较两个字符串的大小C.将字符串x复制到字符串y中D.将字符串x连接到字符串y后面

9.在1,2,3,......1000中,有()个数各位乘积为0。

A.100B.101C.172D.181E.190F.191

10.用链接方式存储的队列,在进行删除运算时()。

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

11.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

12.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

13.C语言提供的合法的数据类型关键字是()。

A.DoubleB.shortC.integerD.Char

14.下列程序的输出结果是()

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

15.

16.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

17.下面程序运行的结果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

18.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是

A.12B.123C.234D.345

19.两个或两个以上模块之间关联的紧密程度称为()。

A.耦合度

B.内聚度

C.复杂度

D.数据传输特性

20.设有定义:“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;)

二、2.填空题(20题)21.软件开发过程中所使用的资源一般包括:【】、软件资源和硬件资源。

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

23.软件是程序、数据和【】的集合。

24.数据结构分为逻辑结构与()。

25.以下程序的功能是:输出x、y、z三个变量中的最大值,请填空。

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

26.数据库管理系统是位于用户与______之间的软件系统。

27.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)g,结果是______。

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

main()

{

inti,n[]={0,0,0,0,0};

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

n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

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.数据库的设计通常可以分为这样四个步骤:需求分析、概念设计、______、和物理设计。

31.以下程序的运行结果是()。main(){inta=1,b=2,c;if(a>B)c=1;elseif(a==B)c=0;elsec=-1;printf("%d\n",C);}

32.若有如下程序:

main()

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

t=a;

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

}

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

33.以下函数的功能是删除字符串s中的所有数字字符。请填空。

voiddele(char*s)

{

intn=0,i;

for(i=0,s[i];i++)

if(【】)

s[n++]=s[i];

s[n]=【】;

}

34.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

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

main()

{inta[]={31,27,20,12,6,1),*p=a;

p++;

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

}

36.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}

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

#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);

}

38.下列程序段的输出结果是【】。

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf(”pass");

case'd':case'D':printf(”warn");

}

39.以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

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

40.下面的程序实现字符串的复制。

voidcopy_string(from,to)

【】;

{for(;*from;from++,to++)

*to=*from;

【】;

}

main()

{char*a="Iamwang",*b="youareLi";

printf("%s\n%s\n",a,b);

【】;

printf("%s\n%s\n\n",a,b);

}

三、1.选择题(20题)41.在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段

42.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

43.设有以下说明语句:structex{intx;flocty;charz;}example;则下面的叙述中不正确的是()

A.struct是结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型

44.对于下列定义,不正确的叙述是()。uniondata{inta;charb;doublec;}x=y;

A.变量x所占内存的长度等于成员c的长度

B.变量x的地址和它的各成员地址都是相同的

C.可以在定义时对x初始化

D.不能对变量x赋值,故x=y非法

45.下面程序的输出结果是()。#include<stdio.h>intx=1;voidmain(){intx=2;printf("%d,",x);if(x==1){intx=4;printf("%d,",x++);}printf("%d",x++);}

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

46.若有以下定义和语句;inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;

A.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

47.有以下程序:main(){inta=0,b=0,C=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,D);}程序输出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

48.在下列语句中,其含义为“q为一个指针的函数,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q)();C.int*q;D.int*q();

49.以下各选项企图说明—种新的类型名,其中正确的是______。

A.typedefviint;

B.typedefV2=int;

C.typedefintv3;

D.lypedefv4:int

50.设有下列二叉树:

对此二叉树后序遍历的结果为

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

51.数据的存储结构是指______。

A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据

52.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

53.以下叙述中正确的是()。

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

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

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

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

54.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

55.如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是()

A.选择B.投影C.连接D.并

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

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

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

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

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

57.若有说明:int*p,m=5,n;以下正确的程序段是()。

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=6;

D.p=&n;*p=m;

58.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()

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

59.下列程序的输出结果是()。main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}

A.6,1B.2,1C.6,0D.2,0

60.设有如下的程序段:charstr[]="Hello";char*ptr;ptr=str;执行完上面的程序段后,*(ptr+5)的值为()。

A.'o'B.'\0'C.不确定的值D.'o'的地址

四、选择题(20题)61.

62.有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x)

}

执行程序时,给变量x输入10,程序的输出结果是

A.55B.54C.65D.45

63.

有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的运行结果是()。

A.AfternoonB.fternoonC.MorningD.orning

64.以下选项中正确的语句组是()。

A.char*s;s={f.BOOK!”};

B.char*s;s:”BOOK!”:

C.chars[10];s=”BOOK!”;

D.cbars[];s:”BOOK!n:

65.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

66.

67.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

68.

69.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。

A.\bB.\tC.\vD.\f

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

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

71.在单链表中,增加头结点的目的是______。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

72.(66)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为()

A.PAD图

B.N-S图

C.结构图

D.数据流图

73.计算机能直接执行的程序是()。

A.源程序B.目标程序C.汇编程序D.可执行程序

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

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

75.有以下程序

#defineN15

fun(inta[],intn,intm)

{inti,j;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

main()

{inti,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,3,7);

for(i=3;i<8;i++)

printf("%d",a[i]);

}

程序的运行结果是A.A.45678

B.44567

C.45567

D.45677

76.以下程序的输出结果是()。

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

77.

78.

设变量已正确定义,则以下能正确计算f=n!的程序是()。

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

B.F=1:for(i=l;i<2n;i++)f*=i:

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

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

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

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

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值。

例如,若n=12,则应输出0.618026。

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

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

试题程序:

六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+1)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}

参考答案

1.C对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

2.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

3.C

4.A

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

6.A结构体变量中的成员可以是简单变量、数组、指针变量或者结构体变量,选项A正确;不同结构体成员名可以相同,选项B错误;结构体定义时,其成员的数据类型不能是本结构体类型,选项C错误;结构体定义时,类型不同的成员项之间使用分号隔开,选项D错误。本题答案为A选项。

7.BB。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。

8.A

9.D

10.D

11.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。

12.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。

13.Bdouble,char,int,第一个字母都是小写。

14.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

15.D

16.C

\n题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

\n

17.C解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。

18.D解析:本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快.例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。

19.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。

20.C本题判断结果。选项A中,如果(a>b),则执行“c=a,a=b,b=c”这个语句(注意分号的位置,如果条件成立,将会执行第一个分号前的语句),显然if不成立,则a,b,C原样输出。选项B和选项D是同理,而选项C因为条件不成立,则不执行第一条语句“c=a”,接着执行“a=b”,将b的值赋给a,a的值为2;“b=C”,b的值为3,C的值原样输出,结果为2,3,3。

21.人员资源人员资源

22.4.0或44.0或4

23.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

24.存储结构存储结构解析:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。它分为数据的逻辑结构和数据的存储结构。

25.x>yz>u

26.操作系统操作系统解析:数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

27.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

28.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,pnntf函数输出1,然后i的值加1,比较i<4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。

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.逻辑设计逻辑设计解析:数据库设计的四个阶段为:需求分析、概念设计、逻辑设计和物理设计。

31.-1-1解析:if~else语句的形式:if(表达式)语句1elseif语句2else语句3它的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断;a=1,b=2,条件a>b不成立,继续判断a==b,仍不成立,则执行c=-1,输出-1。

32.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。

33.s[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigis[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigi解析:从一个字符串中删除某字符的力‘法是从字符串的第一个字符开始一一判断该字符是否是要被删除,若不是则把它放到结果字符串中,若是则不放入结果字符串中。本题的第一个空应判断s[i]是否为数字字符,只有在不是数字字符的情况下才存入结果字符串,所以应填入s[i]<'0'||s[i]>'9'。最后应在结果字符串的末尾填上字符串结束标志\\0。

34.1011

35.1212解析:本题考查如何用指针引用数组元素。分析程序,首先定义了一个指向数组a的指针p,p指向数组的首地址,通过p++,将p指向a[1],p+2是将指针后移2位指向a[3],*(p+2)即是取a[3]的值12。

36.

37.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时,判断条件不满足,退出循环。

38.passwarnpasswarn解析:n++是在执行完其所在的语句后再加1,因此,在执行case的时候,n的值依然为'c',执行case'c'后面的语句,先打印出“pass”;在执行完case'c'后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是passwarn。

39.

40.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函数copy_string()用到了形参from,to是指针变量,实参a、b是字符串指针,第一个空格应填形参说明语句“char*from,*to”。当from所指的字符串全部复制给to所指的字符串时,有可能to所指原字符串长度大于from所指字符串长度,即可能to所指串的后面字符仍留在复制后的to所指串中。为避免这种情况,必须在from所指串复制完后,马上给to所指串加上串结束符。因此,第二个空格应填*to='\\0'。main()函数应调用copy_string()函数,第三个空格应填copy_string(a,b)。

41.CE-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。

42.B

43.B

44.C解析:本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。不能在定义共用体变量时对它初始化。

45.A解析:虽然全局变量的作用域是整个程序,但如果某个函数或语句块中又声明了同名的局部变量,则全局变量被屏蔽,在该函数或语句块中所用到的该变量都是那个同名的局部变量。所以,本题程序第二行定义的全局变量intx=1;可完全忽略,故程序输出结果为2,2,故应该选择A。

46.A解析:引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、C的内容为a[3],D将a[2]前自加,结果为4。

47.D解析:C语言规定最左边变量所得到的新值就是赋值表达式的值,故“if(a=1)”条件表达式为真,b=1;else总是与上面最近的没有被使用的if配对,导致不合法的if-else结构,if语句后面的两条语句应用“{)”括起来。

48.B解析:本题考查的是指针函数。指针函数定义的基本格式为:类型说明符(*函数名)()。其中,类型说明符表示返回的指针值指向的数据类型。

49.C解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于数据类型取个别名。

50.D解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求后序遍历,其遍历顺序应该为:后序遍历左子树→后序遍历右子树→访问根结点。按照定义,后序遍历序列是DBEFCA,故答案为D。

51.B解析:数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般不可能相同。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据的物理结构。

52.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。

53.C解析:根据算法的特性,算法必须有。个或多个输入,和1个或多个输出。

54.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

55.B解析:本题考核对几种关系代数运算的掌握。其中选择和投影的区别在于:如果将一个关系看作一张表,那么选择操作就是从这张表中选出一些行而丢弃另一些行。而投影操作则是从这张表中选出某些列而丢弃另一些列。如果只对一个关系中的某些属性感兴趣,那么就需要在这些属性上使用投影操作投影该关系。并操作的结果表示为Rus,它是一个关系,包括或者在R中、或者在S中、或者同时在R和S中的所有元组,新的关系中属性个数多于原来关系中属性个数。连接操作用于将两个关系中的相关元组组合成单个元组。

56.D

57.D解析:“&”是求址运算符,“*”是指针变量说明符。选项A),B)应改为scanf('%d',p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,这样做很危险,建议不使用。

58.A

59.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

60.B解析:本题考查字符数组的结束标志。ptr=str是将串str的首地址赋给了指针变量ptr,所以ptr+5指向字符串str的第六个数组元素,即是串的隐含结束标志'\\0',*(ptr+5)='\\0',最后的结果为'\\0'。

61.C

62.A本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。

在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。

在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。

变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。

63.A

\n执行fun(a)语句时,P指向的是字符串数组a的第一个字符串“Morning”,p自加1之后,p指向字符串数组a的第2个字符串“Afternoon”。

\n

64.B^选项去掉大括号就正确了;c选项和D|选项应在定义时赋初值。因此B选项正确。

65.C根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。

66.C

67.B

\n函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排序。在主函数main中,调用f(P,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]={'aab-dfg','abbd','abc','cd','dcdbe'),因此P[1]='abdb',strlen(p[1])=4。

\n

68.D

69.C本题考查C语言转义字符的含义。我们归类了常用的转义字符及其含义,如下,根据这些不难选出正确答案

转义字符的意义:\n回车换行、\t横向跳到下一制表位置、\v竖向跳格、\b退格、\r回车、\f走纸换页、\\反斜线符、“\”\′单引号符、\\ddd1~3位八进制数所代表的字符、\xhh1~2位十六进制数所代表的字符。

70.Dif语句中的表达式可以是任意合法的数值,如常量、变量表达式。所以D选项正确。

71.A\nA。【解析】头结点不仅标识了表中首结点的位置,而且根据单

温馨提示

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

评论

0/150

提交评论