2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年甘肃省平凉市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列选项中,当X为大于1的奇数时,值为0的表达式是()。

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

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

3.串是一种特殊的线性表,其特殊性体现在()。

A.可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符

4.c源程序中不能表示的数制是()。

A.二进制B.八进制C.十进制D.十六进制

5.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()

A.scanf(“%d”,pa);

B.scanf(“%d”,a);

C.scanf(“%d”,&pa);

D.scanf(“%d”,*pa);

6.已知有结构体:structsk{inta;floatb;}data,*p;若有p=&data,则对data的成员a的正确引用是()。

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

B.st是结构体类型名

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

D.structstr是结构体类型名

7.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A.INPUTx、v、z;

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

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

8.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法A.A.对象B.数据结构C.数据流D.目标

9.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。A.n2B.O(nlgn)C.O(n)D.O(n2)

10.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

11.与单链表相比,双链表的优点之一是()。

A.插入、删除操作更简单B.可以进行随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更灵活

12.以下能正确定义一维数组的选项是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

13.以下对结构体类型变量的定义中,不正确的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

14.下面程序的输出结果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}

A.SOB.SPC.SPOPKD.SHOB

15.在数据流图(DFD)中,带有名字的箭头表示

A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

16.有以下程序:#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;

17.对一个有A,B,C,D随机组成的序列进行哈夫曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits。

A.1.45B.1.74C.1.85D.1.92

18.为了隐藏在文本框中输入的信息,用占位符代替显示用户输入的字符,需要设置的属性是()。

A.ValueB.ControlSoureeC.InputMaskD.PasswordChar

19.有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序的运行结果是()。

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

20.

二、2.填空题(20题)21.按照“先进先出”的原则组织数据的结构是______。

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

intt(intx,inty,intcp,intdp)

{cp=x%y+y*y;

dp=x+x-y*y;

}

main()

{ima=4,b=3,c=9,d=8;

t(a,b,c,D);

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

}

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

main()

{

intx=0210;

printf("%X\n",x);

}

24.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main()

{intx[10],a[9],i;

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

for([11];i<10;i++)

a[i-1]=x[i]+[12];.

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

printf("");

}

25.下面的程序实现的是从指针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;}

26.下面程序的运行结果是【】。

#include<stdio.h>

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

27.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

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

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

31.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

32.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

for(i=0;i<100;i++)a[i]=i+1;

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

for(i=0;i<100;i++)printf("%d\n",b[i]);

}

33.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为【】。

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

charstr口="ABCD",*p=str;

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

35.以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。

#include<stdio.h>

main()

{inta[3][4]={13,-2,7,5},{1,0,4,-3},{6,8,0,2}};

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

inti,j,c[3][4];

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

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

c[i][j]=【】;

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

{for(j=0;j<4;j++)

printf("%3d",c[i][j]);

printf("\n");}}

36.以下条件表达式可计算:1+|a|的值,请填空。

a>=0?【】:【】

37.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

39.若有以下程序

main()

{inta[4][4]={{1,2;-3,-4},{0,-12,-13,14},{21,23,0,-24},{-31,32,-33;0}};

inti,j,s=0;

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

{for(j=0;j<4;j++)

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

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

}

执行后输出结果是______。

40.有两个C程序文件T18.c和myfun.c同在VC系统目录(文件夹)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();prinff("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!:'\n')s[n++]=c;

n--;

while(n>=0)prinff("%c",s[n--]);

}

当编译连接通过后,运行程序T18时,输入"Thank!”,则输出结果是【】。

三、1.选择题(20题)41.下面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

42.有以下程序:intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s[i]);i++)d+=s[i];printf("%d\n",d);}程序运行后的输出结果是()。

A.9B.11C.19D.21

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

A.'a'&&'b',

B.a<=b

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

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

44.下列程序的输出结果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

45.下列判断正确的是()。

A.chara="ABCD";等价于char*a;*a="ABCD";

B.charstr[10]={"ABCD"};等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD";等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD";等价于charc[5]=d[5]="ABCD";

46.在数据库设计中,将E-R图转换为关系模式的过程属于()。

A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

47.请读程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的输出结果是______。

A.68B.0C.字符'D'的地址D.不确定的值

48.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。

A.cedbaB.acbedC.dccabD.deabc

49.视图设计一般有3种设计次序,下列不属于视图设计的是______。

A.自顶向下B.由外向内C.由内向外D.自底向上

50.下面各被调用函数首部书写正确的是()

A.voidsub(floatx;floaty);

B.voidsub(floatx,y)

C.voidsub(floatx,floaty)

D.voidsub(floatx,floaty);

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

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

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

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

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

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

A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句PILEfp;定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

53.以下数据结构中不属于线性数据结构的是______。

A.队列B.线性表C.二叉树D.栈

54.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。

A.地址传递B.值传递C.由实参传给形参,并由形参传回给实参D.由用户指定传递方式

55.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

56.对于建立良好的程序设计风格,下面描述正确的是()。

A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法即可C.充分考虑程序的执行效率D.程序的注释可有可无

57.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

58.假定当前盘符下有两个如下文本文件:文件名a1.txta2.txt内容123#321#则下面程序段执行后的结果为#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);fp=fopen("a2.txt","r");fc(fp);fclose(fp);putchar('\n');}

A.123321B.123C.321D.以上答案都不正确

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

#include<stdio.h>

voidmain()

{intb[6]-<2,4,6,8,10,12};

int*p=b,**q=&p;

printf("%d",*(p++));

printf("%d,",**q);

}

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

60.以下不能正确定义二维数组的选项是A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4}};

四、选择题(20题)61.下列叙述中正确的是()。

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

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

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

D.上述三种说法都不对

62.

63.下列是用户自定义标识符的是

A._w1B.3_xyC.intD.LINE-3

64.

65.下列选项中,能够满足“若字符串sl等于字符串s2,则执行ST”要求的是()。

A.if(stremp(s2,s1)==0)ST;

B.if(s1==s2)ST;

C.if(strcpy(sl,s2)==l)ST;

D.if(sl,s2==O)ST;

66.有下列程序

main()

{

inta[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

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

}

运行该程序,其输出结果是

A.4B.22

C.24D.46

67.

68.

有下列程序:

#include<stdio.h>

main

{intx=0;

inty=0;

while(x<7&&++v)

{y--;

x++;}

printf("%d,%d",y,x);

}

程序的输出结果是()。

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

69.

有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

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

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main

{intc[10]={1,2,3,4,5,6,7,8,9,0),i;

fun(c+4,6);

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

printf("\n");

}

程序运行的结果是()。

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

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

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

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

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

A.算法是指对解题方案的准确而完整的描述

B.算法的有穷性是指算法程序的长度是有限的

C.算法是否有效与拥有的情报无关

D.算法的基本特征有可行性、确定性和有穷性

71.

72.阅读以下程序:

该程序在编译时产生错误,原因是()。

A.定义语句出错,Case是关键字,不能用作用户自定义标识符

B.定义语句出错,printF不能用作用户自定义标识符

C.定义语句无错,sCanf不能作为输入函数使用

D.定义语句无错,printf不能输出Case的值

73.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

74.

75.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

76.若有如下说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是

A.12B.16

C.14D.9

77.

78.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

79.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

80.

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。例如,当S所指字符串为“ABCD”时,t所指字符串中的内容应为“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A算术运算符的优先级高于关系运算符的优先级。所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。0选项的值为真,即1。故本题答案为A选项。

2.C

3.B

4.AA。【解析】C语言源程序不能表示八进制,在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、二进制、十六进制3种形式表示,故A不正确。

5.A

6.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字;structstr是结构体类型名;x、y、z都是结构体成员名;st是结构变量名。

7.B解析:scanf函数的一般格式是:

scanf(格式控制,地址表列)

该格式中,地址表列中应是变量地址,而不是变量名。注意:调用putchar和getchar函输出和输入字符。

8.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

9.D

10.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。

11.D

12.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

13.C解析:定义结构体类型的变量有如下几种方法:

①定义结构体类型的同时,定义结构体类型的变量,如:

stractaa

{…}tdl;

选项B)中将宏名AA用宏体structaa替换后,与该定义形式一样,因此是正确的。在这一定义形式中,结构体类型名aa是可以省略的,因此,D)项也是正确的。

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{…};

strnctaatdl;

这种定义形式也可演变为:先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA定义一个结构体变量(这时不再需要使用关键字struct)。因此选项A)正确。

14.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串中的第一个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。

15.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。

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

17.C

18.DD。【解析】本框的PasswordChar属性用来指定文本框是显示用户输入的字符还是显示占位符,指定用做占位符的字符。

19.D在main函数中,调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c)),即调用f(3,6)函数返回9。故本题答案为D选项。

20.D

21.队列队列解析:队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。

22.9898解析:本题的考查点是函数的调用。本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是98。

23.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880

24.对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空14处应填入i=1。相邻的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空15处应填入x[i-1]。\r\n\r\n

25.

26.1-21,-2解析:考查嵌套的循环结构。题中外层while循环的循环条件是\ue008y--!=-1\ue009,即y>=0;内层do厀hile循环的循环条件是y--,即y-->0,y>=1。

27.0。0。解析:表达式中将实型常量2.5和算术表达式1.25*(3.7+2.3)的值强制转换为整型后参与运算。

28.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。

29.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

30.9292解析:本题考查循环的嵌套。

①当i=0时执行while语句,i++<4成立,这时i=1,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)j=0时,s=0+a[1][0]=5,j=j+1=1。

b)j=1时,s=5+a[1][1]=5+6=11,j=j+1=2。

c)j=2时,s=11+a[1][2]=11+7=18,j=j+1=3。

d)j=3时,s=18+a[1][3]=18+8=26,j=j+1=4。终止循环。

②当i=1时执行while语句,i++<4成立,这时i=2,执行continue语句,结束本次循环。

③当i=2时执行while语句,i++<4成立,这时i=3,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)s=26+a[3][0]=26+15=41,j+1=1。

b)s=41+a[3][1]=41+16=57,j+1=2。

c)s=57+a[3][2]=57+17=74,j+1=3。

d)s=74+a[3][3]=74+18=92,j+1=4。终止循环。

④i=3时,执行while语句,i++<4成立,这时i=4,执行continue语句,结束本次循环。

⑤当i=4时,执行while语句,i++<4不成立,结束while循环。输出s的结果92。

31.x=2

32.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

33.1313解析:在任意一棵二叉树中,叶子结点总是比度为2的结点多一个。本题中的二叉树有3个叶子结点,所以,该二叉树有3-1=2个度为2的结点;又知本题中的二叉树有8个度为1的结点。所以,本题中的二叉树总结点数为:叶子结点数+度为l的结点数+度为2的结点数=3+8+2=13。所以,本题的正确答案为13。

34.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

35.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:此题是双重for循环结构应用在了二维数组中。外层for循环用来控制二维数组的行,内层for循环控制二维数组的列。

36.1+a1-a1+a\r\n1-a解析:因为题目中求的是1+|a|的值,即1和a的绝对值之和。所以根据数学中求绝对值的规则,当a>=0时,绝对值取本身,当a<0时,绝对值取相反数,再结合条件运算符的计算规则可得到本题的答案为a>=0。注意:逗号表达式的求值规则。

37.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个订语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>4O,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

38.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。

39.5858解析:本题中处理二维数组元素用了两重循环,外循环变量i表示数组的行,内层循环变量j表示数组的列。在第二重循环中首先判断数组元素的值是否小于0,若是则处理该行的下一个元素:若不是则判断a[i][j],田的值是否等于0,若等于0则退出内层循环开始处理下一行;其他情况下,把a[i][j]的值加到变量s中。所以本程序段的功能是把每行值为0的元素前面的所有大于。的元素值加到变量s中。

40.!knahT!knahT解析:程序中myfun.c被包含在T18.c中进行编译。fun函数中用getehar函数输入字符并赋给数组s,每输入一个字符,数组下标n加1,直到遇到回车键时输入结束。while(n>=0)循环反序输出字符中。所以myfun.c文件用于实现字符串反序的功能。

41.A解析:在C语言中,数组元素是从0开始的。指针变量p指向数组的首地址,(p+2)就会指向数组中的第3个元素。题目中要求输出的是元素的值。

42.A解析:函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、s[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6。其他没有赋值的数组元素将自动赋值为0。for循环中,当s[i]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s[0]+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。

43.D

44.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。

45.D解析:a='ABCD'书写错误,因为“;”左边不能出现常量;数组名s是代表s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。

46.BB。【解析】数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。其中逻辑设计的主要工作是将E-R图转换为关系模式。

47.B解析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\\0”,故指向字符数组的指针p的*(p+4)的值为“\\0”。由于“\\0”的编码值就是0,所以本题输出为0。

48.A解析:二叉树BT的后序遍历序列为dabec,故BT的根结点为c;而BT的中序遍历序列是debac,即遍历序列中最后—个结点为跟结点,说明BT的右子树为空。由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序列和中序遍历序列分别为dabe和deba(树是递归定义的):故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。因此BT的前序遍历序列为cedba。

49.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内

向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以

单独使用也可混合使用。

注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后

对局部视图进行集成得到概念模式。

50.C

51.C解析:一个算法应该具有以下5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。因此一个算法可以没有输入(程序的功能确定),但必须要有输出,没有输出的算法是没有意义的。

52.C解析:FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量。用FILE定义的变量必须是数组或指针,选项C)中的fP应该改为*fP。

53.C解析:线性表、栈和队列所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,又称后进先出表(LastInFirstOut);队列是插入在一端进行,删除在另一端进行的线性表,又称先进先出表(FirstInFirstOut)。

54.B解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参.

55.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[im][j])。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa=[1][1]=pa[1][1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故prinff语句输入的值为2+4+1=7。所以,A选项为所选。

56.A解析:选项B错误:符号名的命名除了要符合语法之外,还应具有一定的实际含义,以便理解程序功能;选项C错误:程序设计风格强调清晰第一,效率第二;选项D错误:程序注释能帮助读者理解程序,是提高程序可读性的重要手段。所以选项A正确。

57.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

58.A解析:本题的功能是顺序的读两个文本文件;依次输出。当打开文件时出现错误,fopen函数将返回NULL。

59.D解析:首先定义了一个指向一维数组b的指针p,一个指向指针p的指针变量q,输出*(p++)是先输出*p即b[0]的值,再将指针p指向数组的下一个元素b[1],输出**q是输出指针p所指单元的内容,即b[1]的值。

60.D解析:选项A)定义的数组按行各数组元素分别是:1,0,2,0;选项B)定义的数组按行各数组元素分别是:1,2,3,4;选项C)定义的数组按行各数组元素分别是:1,0,2,3;因为定义数组时,第一维的长度可以不指定,第二维的长度必须指定,所以选项D)错。

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

62.A

63.A本题主要考查标识符的定义。对标识符的定义是考试中常考的内容之一。标识符主要由数字、下画线和字母组成,其中数字不能放在首位,另外,用户自定义标识符时,不能将标识符定义为C语言中已定义的关键字,如int、wh

温馨提示

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

评论

0/150

提交评论