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

下载本文档

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

文档简介

2022-2023年河北省保定市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在执行完下列的C语句段之后,则B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

2.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975

3.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为()。

A.7B.8C.9D.10

4.以下各选项中的代码段执行后,变量y的值不为1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

5.索引属于()。

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

6.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式值为11的是()。

A.++p->xB.pt->xC.*pt->yD.(pt++)->x

7.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

8.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。

A.floatB.charC.intD.double

9.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

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

A.c语言是一种结构化程序设计语言

B.使用三种基本结构构成的程序只能解决简单问题

C.结构化程序设计提倡模块化的设计方法

D.结构化程序由顺序、分支、循环三种基本结构组成

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

A.continue语句的作用是使程序的执行流程跳出包含它的所有循环

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

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

D.break语句只能用于switch语句体中

12.有说明语句“inta,b;”,如果输入111222333,使得a的值为111,b的值为333,则以下正确的语句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

13.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。

A.5.5B.5C.3D.4.0

14.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其输出结果是()。

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

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

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

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

15.若有下列定义(设int类型变量占2个字节):

inti=8;

则下列语句:

printf("i=%08d",i);

输出的结果是()。A.A.i=8B.i=00000008C.i=08D.8

16.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19

17.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

A.控制流B.加工C.数据存储D.源和潭

18.以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循环,不能确定次数

19.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

20.设有定义“intk=3,i=2;”,以下选项中,变量k的值与其他3个不同的是()。

A.k-=i;B.k=--i;C.k=i-1;D.k=i--;

二、2.填空题(20题)21.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

22.下述函数用于统计—行字符中的单词个数,单词之间用空格分隔。

word_num(str)

charstr[];

{int,num=O,word=O;

for(i=0;str[i]!=【】;i++)

if(【】=")wprd=0

elseif(word=O)

{

word=1:

【】;

}

return(num);

}

23.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

word_num(str)

for(i=0;str[i]!=【】;i++)

if(【】='')word=0;

【】;

}

return(num);

}

24.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

25.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

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

#include<string.h>

char*huiwen(char*str)

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

p1=str;p2=();

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

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

if(t==0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

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

printf("%s\n",huiwen(str));

}

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

28.以下条件表达式可计算:1+|a|的值,请填空。a>=0?[6]:[7]

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

main()

{unsignedshorta=65536;intb;

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

}

30.若有程序:

main()

{inti,j;

scanq("i=%d,j=%d",&i,&j);

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

}

要求给i赋10,给j赋20,则应该从键盘输入【】。

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

32.若输入字符串:abcde<回车>,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

33.为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该使用命令【】。

34.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控。

35.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

36.mysulen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

37.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=2)

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

#include"stdio.h"

FILE*fp;

main()

{charch;

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

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

fclose(fp);

}

39.下面程序的功能是:输出100以内能被3整除且个位数为9的所有整数,清填空。main(){inti,j;for(i=0;();i++){j=i*10+9;if(j%3!=0)continue;printf("%d",j);}}

40.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是______。

三、1.选择题(20题)41.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch):

42.在深度为7的满二叉树中,叶子结点的个数为______。A.32B.31C.64D.63

43.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

44.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是

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

45.以下程序的输出结果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=0;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

46.执行以下的程序段后,m的值是______。inta[2][3]={1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.3不确定

47.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和

48.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

49.设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值是

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

50.在C语言中,可以把整数以二进制形式存放到文件中的函数是()

A.fprintf()函数B.fread()函数C.fwrite()函数D.fputc()函数

51.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。

A.if((a>b)&&(b>c))k=1;elsek=0;

B.f((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

52.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

53.有以下程序:main(){charstr[][10]={"China","Beijing"),*p=str;printf("%s\n",p+10);}程序运行后的输出结果是()。

A.ChinaB.BeijngC.ngD.ing

54.

执行下列程序中的输出语句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

55.若执行下面的程序时,从键盘上输入5和2,则输出结果是main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}

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

56.以下程序的输出结果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,B;elseprintf("%d,%d\n",b,A);}

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

57.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序运行后的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

58.数据库技术的根本目标是要解决数据的()。

A.存储问题B.共享问题C.安全问题D.保护问题

59.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetme<回车>

则程序输出的结果是

#include"stdio.h"

main(argc,argv)

intargc;char*argv[];

{inti;

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

A.3B.4C.2D.以上答案都不正确

60.以下程序的输出结果是()。#include<stdio.h>main(){inta=21,b=11;printf("%d\n",--a+b,--b+a);}

A.30B.31C.32D.33

四、选择题(20题)61.以下选项中,合法的是()。

A.charstr3[]={d,e,b,u,g,\0};

B.charstr4;str4="helloworld";

C.charname[10];name="china";

D.charstrl[5]="pass",str2[6];str2=strl;

62.

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

A.耦合度B.内聚度C.复杂度D.数据传输特性

64.

若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

65.

66.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3

67.有以下程序程序运托舌的输出结果是()。

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

68.有以下程序:#include<stdio.h>main(){chars[]={"012xy"};inti,n=o;for(i=0;s[i]!='0';i++)if(s[i]>=as[i]<=z)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.2C.3D.5

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

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

B.eotinue语句的作用是结束整个循环的执行

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

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

70.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。

若有以下程序段:

该程序段实现的功能是()。

A.删除尾结点B.尾结点成为首结点C.删除首结点D.首结点成为尾结点

71.

72.下列定义数组的语句中,正确的是()。

73.下面的程序段运行后,输出结果是()。

A.9B.不确定值C.0D.18

74.若k是int类型变量,且有以下for语句:

for(k=-1;k<O;k++)printf("****\n");

下面关于语句执行情况的叙述中正确的是()。、

A.循环体执行一次

B.循环体执行两次

C.循环体一次也不执行

D.构成无限循环‘

75.

76.若有定义inta[2][3];,则对a数组的第i行第j列(假设i,j已正确说明并赋值.元素值的正确引用为()。

A.*(*(a+i.+j.B.(a+i.[j]C.*(a+i+j.D.*(a+i.+j

77.有以下程序:

voidmain()

{inta=15,b=21,m=0;

switch(a%3)

{case0:m++;break;

case1:m++;

switch(b%2)

{defaule:m++;

case0:m++;break;

}

}

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

}

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

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

78.

79.

80.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.sets(&s[0]);

B.scarf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*str,chart[])

{

}

voidmain

{

charstr[100],t[100];

system("CLS");

printf("\nPleaseenterstringstr:");

scanf("%S",str);

proc(str,t);

printf("\nTheresultiS:%s\n",t);

参考答案

1.A解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

2.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

3.A

4.C选项A的if条件表达式的值是5,结果为真,执行“y=1”,y的值为1;选项B的if条件表达式x的值为5,结果也是真,执行“y=1”,y的值为1;选项C的if条件表达式“x=y”是赋值语句,将y的值0赋给x,表达式的值为0,if语句不执行,y的值为0;选项D的if条件表达式“x=y”是赋值语句,将y的值10赋给x,表达式的值为10,执行“y=1”,y的值为1。故本题答案为C选项。

5.B解析:内模式(InternalSchemA)又称物理模式(PhysicalSchemA),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

6.A题目中定义了一个结构体数组c并初始化,指针pt指向c的第1个元素。则“++pt->x”为11,“pt->x”为10,“*pt->y”为1,“(pt++)->x”为20。故本题答案为A选项。

7.A解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符\'g\');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使\'g\'+1,使\'g\'变成了\'h\';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到\'\\0\'结束循环,返回形参。最终得到的结果是从字符串'Program\'的第4个字符开始,每个字符加1。

8.D

9.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。

10.BC语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有三种基本结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。

11.Bcontinue语句的作用是跳过循环体中剩余的语句而进行下一次循环,所以A选项错误。break语句的作用是终止正在执行的switch语句体,跳出switch语句体或者强制终止当前循环,从当前执行的循环中跳出,所以C、D选项错误。故本题答案为B选项。

12.A根据题意,要使a的值为111,b的值为333,必须在读入时指定a的读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加%*控制符,用于跳过中间的3位输入数字,选项A正确。本题答案为A选项。

13.C

14.C解析:sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。

15.B解析:本题考查printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”;“8”表示指定数据的输出宽度为8位。

16.Bfun(x+2)表示的是结构体数组中的第3个元素即{03,"Zhao",l8),而输出的是name元素,所以答案为B。

17.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。

18.D解析:break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体.而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句.因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。所以,4个选项中D为所选。

19.B根据ASCII码可知大写字符A与小写字符a的ASCIl码相差32,而D中应该是加上'a',选项A和C左侧的表达式都是大写字符C与大写字符A的差与'a'的ASCIl代码的和就是小写字符c的ASCII代码。

20.D选项A是复合的赋值运算符,等价于“k=k-i”,所以k的值为1;选项B中前缀自减运算符首先将i的值自减1,然后将自减后的值赋给k,所以k和i的值都是1;选项C中k的值为1;选项D中后缀自减运算符将i的值先赋给k,然后i自减1,所以k的值为2。故本题答案为D选项。

21.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。

22.\0'或0或NULLstr[i]num++或num=num+1或mum+=l\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或mum+=l解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串str中的第i+1个字符;

③整型变量num的值是要记录的单词的个数。

C语言中规定字和会串的最后一个字和会是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通地变量num的加1累加到字符串中的单词个数。

23.\O'或0或NULLstr[i]num++或num=num+1或num+=1\\O'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串str中的第i+1个字符;

③整形变量num的值是要记录的单词的个数。

C语言中规定字符串的最后一个字符是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通过变量num的加1累加得到字符串中的单词个数。

24.52

25.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

26.str+strlen(str)-1str+strlen(str)-1解析:检查一个字符串是否是回文,函数huiwen中定义了两个字符指针,pl=str指向字符串头,p2应该指向字符串尾,因此该处应该填入:str+strlen(str)-1或&str[strlen(str)-1]。

27.概要概要

28.

29.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。

30.i=0j=20i=0,j=20解析:该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。

31.efghefgh解析:本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”把P的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址,最后输出,指向的字符中,是“efgh”。

32.0

33.DIR??C*.*

34.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

35.xx解析:函数的定义形式为;

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求得变量的Y次方。

36.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串长度的算法是:用一个变量i表示字符串中字符的位置,一开始赋值为0,取出i位置的字符,判断是否为'\\0',若不是则i的值加1,如此循环直到取出的字符是'\\0'为止,此时i的值就是字符串的长度。由此可知,第一个空处应填第i位置上的字符*(str+i);第二个空格应该填字符串的长度i。

37.6

38.dat""w"或"bi.dat""w+"或"bi.dat""r+"dat','w'或'bi.dat','w+'或'bi.dat','r+'解析:本题的考点是fopen()函数,此函数的格式是fopen(文件名,使用文件方式),题目的要求是将从键盘读入的文本写到文件中,因此选择的打开方式应该是'w'(只写)。或者是读写“r+”或“w+”。

39.i<10i<10解析:分析程序,当(i=0,1,2,…)时,“j=i*10+9”语句的运行结果是(9,39,69,99)个位数为9的所有整数;题中要求是100以内的整数,所以i<10;“if(j%3!=0)continue;”语句的功能是当条件不能被3整除时,继续循环不执行操作,直到能被3整除时输出该数,即输出的数满足条件100以内能被3整除且个位数为9。

40.数据库系统或数据库系统阶段或数据库或数据库阶段或数据库管理技术阶段数据库系统或数据库系统阶段或数据库或数据库阶段或数据库管理技术阶段解析:在数据库系统管理阶段,数据是结构化的,是面向系统的,数据的冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性,同时提高了数据的可扩充性和数据应用的灵活性;数据具有独立性,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性,二是逻辑独立性;保证了数据的完整性、安全性和并发性-综上所述,数据独立性最高的阶段是数据库系统管理阶段。

41.A解析:因为while是以条件为假时结束循环,因此选项C、D不正确。“!=”的优先级比“=”高,因此“ch=getchar()!='N'”相当于“ch=(getchar!='N')”,ch并不能得到输入的字符,只能得到true或者false值。

42.C在满二叉树中每层的结点数都达到最大值,而且叶子结点全部出现在最底层。第l层(根结点所在的层)有20个结点,第2层有21个结点,……第n层有2n-1个结点。在深度为7的满二叉树中,第7层有27-l=64个结点(全部是叶子结点)、在深度为7的满二叉树中,共有27—1=127个结点、因此本题的正确答案是C

43.B解析:考查结构体数组对结构体成员的引用。结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素。

44.D解析:非常明显,选项A)与选项C)含义相同,表示k除以2的余数非零,但要注意的是,任何整数除以2的余数只有两个结果,0和1。选项A)与选项C)的含义表示k除以2的余数为1,也与选项B)的含义相同,所以答案为选项D)。

45.B解析:本题函数的功能是计算并输出一个二维数组对角线及对角线下面的元素之和。

46.B解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

47.D解析:第一个while循环是字符串a的长度,第二个while是将字符串b接在a的后面,num在a串长度上继续累计,为两个字符串长度之和。

48.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

49.B解析:本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假后,计算机将不再执行后面表达式的运算。

本题中,由于前一个表达式的值为“假”,所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。

50.C

51.A解析:本题是先比较a,b,如果a>b成立则执行(b>c?1:0),如果b>c成立则结果为1,否则为0。也就是说只有a>b与b>c同时成立时k值才能为1。选项A)正确。选项B)是a>b与b>c之一成立时k=1;选项C)是b<=c时k=1;选项D)与B)类似。所以B)、C)、D)均不对。

52.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

53.B解析:本题中首先定义了一个字符串数组并初始化,初始化后使得str[0]='China',str[1]='Beijng',然后定义一个指针变量p并让其指向str,而在该二维数组中定义每个字符串的长度为10,所以p+10将指向str[1],因此最后输出*(p+10)的值为Beijng。所以,4个选项中选项B符合题意。

54.C解析:本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。

55.C解析:本题考查简单的if...else语句。先执行条件if(a<b),显然不成立,则执行else语句。

56.C

57.D解析:本题中首先定义一个字符数组s,并将字符串'ABCD'存到数组s中,定义了一个字符指针变量p,在接下来for循环中,循环体共执行了三次,第一次p指向s[1],所以此时输出的p所指字符串的值为BCD,第二次循环p指向s[2],此时输出p所指的字符串的值为CD,第三次循环p指向s[3],此时输出的p所指的字符串的值为D。所以,4个选项中选项D符合题意。

58.B解析:数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数据共享的要求越来越高。共享的含义是多个用户、多种语言、多个应用程序相互覆盖的使用一些公用的数据集合。在这样的背景下,为了满足多用户、多应用共,享数据的要求,就出现了数据库技术,以便对数据库进行管理。因此,数据库技术的根本目标就是解决数据的共享问题。故选项B正确。

59.B解析:argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

60.A解析:该题考查的是C语言中自减运算符和逗号表达式的应用。自减运算符作为前缀时,先使变量的值减1,再进行赋值运算。逗号表达式的形式为:表达式1,表达式2,其求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。

61.A选项B不能把一个字符串赋值给一个字符变量,选项c和D犯了同样的错误是把字符串赋给了数组名。

62.A

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

64.C

\n从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

\n

65.A

66.A虽为嵌套的for循环,但“m

温馨提示

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

评论

0/150

提交评论