2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年山东省潍坊市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________一、单选题(20题)1.设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)

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

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

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

A.C语言函数可以嵌套调用,例如:fim(fun(X))

B.C语言程序是由过程和函数组成的

C.C语言函数不可以单独编译

D.C语言中除了main函数外,其他函数不可作为单独文件形式存在

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

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

5.有如下定义:inta[5],*p;p=a;则下列描述错误的是()。

A.表达式p=p+1合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的

6.在非线性结构中,每个结点()。

A.无直接前趋

B.只有一个直接前趋和个数不受限制的直接后继

C.只有一个直接前驱和后继

D.有个数不受限制的直接前驱和后继

7.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.终止当前应用程序的运行

D.退出Windows后重新启动计算机

8.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

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

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

10.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。

A.G中有弧

B.G中有一条从Vi到Vj的路径

C.G中没有弧

D.G中有一条从Vj到Vi的路径

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

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

12.

13.结构化程序所要求的基本结构不包括A.顺序结构B.GOTO跳转C.选择(分支)结构D.重复(循环)结构

14.下列选项中,能正确定义数组的语句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

15.字符串"\\"ABCDEF\"\\”的长度是()。

A.11B.10C.5D.3

16.在关系数据库中,用来表示实体间联系的是()。

A.网状结构B.树状结构C.属性D.二维表

17.

18.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

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

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

20.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

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

main()

{

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

switch(x)

{

case1:

switch(y)

{

case0:a++;break;

case1:b++;break;

case2:a++;b++;break;

}

printf("%d%d\n",a,B);

}

22.下面程序中函数creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。

#include<stdiao.h>

structlist

{chardata;structlist*next;};

structlist*creat()

{

structlist*h,*p,*q;charch;

h=【】malloc(sizeof(structlist));

p=q=h;ch=getchar();

while(ch!='?')

{

p=【】malloc(sizeof(structlist));

p->data=ch;q->next=p;q=p;ch=getchar();

}

p->next='\0';

【】;

}

23.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是:

①第0列元素和主对角线元素均为1;

②其余元素为其左上方和正上方元素之和;

③数据的个数每行递增1。

请将程序补充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=1;

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

{x[i][0]=x[i][i]=1;

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

x[i][j]=【】;

}

}

24.若有如下定义:

int[]={11,24,56,19,29,39),*t=s;

则不移动指针t,且通过指针t引用数组中值为29的元素的表达式是【】。

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

26.已有定义:charc=′′;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【】。

27.以下程序的运行结果为【】。

#defineFORMAT"%u,%u"

main()

{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

printf("\n");

printf(FORMAT,**a,*a[0]);

printf(FORMAT,*(a[0]+1),*&a[0][1]);

printf(FORMAT,a[1][0],*(*(a+1)+0));

}

28.数据库存管理系统常见的灵敏据模型有层次、网状和【】三种。

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

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

30.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

31.结构化分析方法是面向______进行分析的方法。

32.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)fun();

printf("\n");

}

34.以下程序中给指针p分配3个double型动态内存单元,请填空。

#include<stdllb.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

35.最简单的交换排序方法是______。

36.以下程序把从终端读入的20个整数以二进制方式写到一个名为d.dat的新文件中,请填空。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

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

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

{scanf("%d",&j);fwrite(&j,sizeof(int),1,【】);}

fclose(fp);

}

37.栈的基本运算有三种:入栈、退栈和【】。

38.如果有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

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

main()

{inta=177;

printf("%o\n",a);

40.把数学表达式改写成C语言的表达式是【】。

三、1.选择题(20题)41.以下程序的输出结果是

#include<stdio.h>

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};

main()

{p=aa;

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

A.10B.11C.51D.60

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

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

43.下列程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))}break;printf("%d\n",i*i);}

A.49B.36C.25D.64

44.请选出正确的程序段______。

A.int*p

B.int*s,k;scanf(""%d"",p);*s=100;………

C.int*s,k;

D.int*s,k;char*p,c;char*p,e;s=&k;p=&c;p=&c;*p='a';s=p;……*s=1;……

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

A.gets(&s[0]);

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

C.gets(s);

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

46.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

47.设有声明语句chara='\72';,则变量a______。

A.包含1个字符B.包含2个字符C.包含3个字符D.声明不合法

48.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()

A.n+1B.n-1C.2nD.n/2

49.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

50.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储

51.如下程序的输出结果是#include<stdio.h>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

52.SA方法是一种______。

A.自顶向下逐层分解的分析方法B.自底向上逐层分解的分析方法C.面向对象的分析方法D.上述都不对

53.若有以下程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的输出结果是()。

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

54.下列二维数组初始化语句中,不正确的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5),{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

55.设变量x为noat型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第3位四舍五入的是()。

A.X=X*100+0.5/100.0;

B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)*100.0;

56.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为

A.goodabcB.abcdC.abcD.abcgood

57.若有以下说明和语句:intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是()。

A.p+lB.*(p+3)C.*(p+1)+3D.*(p[0]+2)

58.有以下程序main()intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,

A.m=123n=456p=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

59.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A.正当性B.可行性C.确定性D.有穷性

60.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

四、选择题(20题)61.

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

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

63.已定义以下函数:

fun(int*p)

{return&p;}

该函数的返回值是()。

A.不确定的值

B.形参p中存放的值

C.形参p所指存储单元中的值

D.形参p的地址值

64.

65.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A.scanf("%d",pa);B.scanf("%d",a);C.scanf("%d",&pa);D.scanf("%d",*pa);

66.有下列二叉树.对此二叉树前序遍历的结果为()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

67.(60)视图设计一般有3种设计次序,下列不属于视图设计的是()

A.自顶向下

B.由外向内

C.由内向外

D.自底向上

68.一个函数内有数据类型说明语句如下:

doublex,y,z(10)

关于此语句的解释,下面说法正确的是()。

A.z是一个数组,它有10个元素

B.z是一个函数,小括号内的10是它的实参的值

C.x是一个变量,小括号内的10是它的初值

D.语句中有错误,因为“z(10)”应该为“z[10]”

69.

70.(57)下列叙述中,不属于软件需求规格说明书的作用的是______。

A.便于用户、开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

71.

72.以下不能正确定义二维数组的选项是()。

A.

B.

C.

D.

73.设有以下定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则下列能够正确表示数组元素a【1】【2】的表达式是()。

A.*((*ptr+1)[2])

B.*(*(p+5))

C.(*ptr+1)+2

D.*(*(a+1)+2)

74.为了使模块尽可能独立,要求()。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

75.

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

77.设有定义:longx=-123456L;则以下能够正确输出变量x值的语句是_______。

A.printf(“x=%d\n”,x)

B.printf(“x=%ld\n”,x)

C.printf(“x=?l\n”,x)

D.printf(“x=%D\n”,x);

78.(33)分布式数据库系统不具有的特点是______。

A.分布式

B.数据冗余

C.数据分布性和逻辑整体性

D.位置透明性和复制透明性

79.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的运行结果是()。

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

80.

五、程序改错题(1题)81.以下程序可把输入的十进制数以十六进制数的形式输出。请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换成整数的函数)。例如,若输入字符串“-1234”,则函数把它转换成整数值-1234。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){ chars[6]; longn; printf(“Enterastring:\n”); gets(s); n=fun(s); printf(“%ld\n”,n);}

参考答案

1.D

2.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

3.AC语言程序是由函数组成的,所以B选项错误。C语言函数可以单独进行编译,所以C选项错误。每个C语言程序必须包含一个main函数,但不是每个C语言程序文件都必须有一个main函数,用户单独编写的某个函数也可以存储为一个C语言程序文件,所以D选项错误。故本题答案为A选项。

4.D

5.B

6.D

7.C解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止当前应用程序的运行,关闭当前窗口。

8.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

9.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。

10.D若G中有一条从Vj到Vi的路径,则图的拓扑序列中顶点Vj在顶点Vi之前。设G(V,E)是一个具有n个顶点的有向图,V中顶点的序列v1,v2,…,vn称为一个拓扑序列,当且仅当该顶点满足下列条件:若在有向图G中,从顶点vi在vj有一条路径,则在拓扑序列中顶点vi必须排在顶点vj之前。

11.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

12.B

13.BB【解析】1966年Boehm和JaCopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

14.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定元素的个数;C选项错误,N为变量,不能用来定义数组大小。故本题答案为D选项。

15.B解析:本题涉及字符串的两个最基本的概念。①字符串的长度是指字符串中字符的个数,但不包含字符串结束符;②以反斜线“\\”开头的特殊字符序列,意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。

16.D单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

17.D

18.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

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

20.D共用体变量中的所有成员共享一段公共存储区,所有成员的首地址相同。在每一个时刻所有的成员中只有一个有效,即只有最后一个被赋值的成员有效,其余的成员无效。

21.2121解析:本题考核的知识点是switch语句的嵌套应用。外层switch语句后面括号里的x的值为1,所以执行从case1:后面的语句开始执行,而case1:后面语句也为switch语句,这个switch语句后面括号里的y的值为0,所以从该switch语句里的case():开始执行即执行a++,这时a的值变为1,执行完毕,遇到break语句,退出内层switch语句,又回到外层switch语句,继续执行case1:下面的语句即case2:执行完毕后,a自加1变为2,b自加1变1。所以最后输出的a和b的值为21。

22.(structlist*)(structlist*)return(h)

23.x[i-1][j-1]+x[i-1][j]x[i-1][j-1]+x[i-1][j]解析:在程序外层i循环中先将数组的第0列元素和主对角线元素置1,内层j循环的功能是给其余元素赋值,根据题意,空格内应填入x[i-1][j-1)+x[i-1][j]。

24.*(t+4)*(t+4)解析:本题定义了指针变量t,并用数组s的首地址给它赋初值。t+4代表数组第6个元素的地址,*(t+4)是取得该地址中的值即29,而此时并没有移动指针t。

25.010111212010111212解析:本题考查的是静态局部变量的运用。静态局部变量的作用域与普通局部变量一样,但它的生存期将延长到程序运行结束。本题的主函数中使用一个for循环输出循环变量i和fun(a)的值,由于a的值一直没被修改过,所以三次调用的都是fun(5)。第1次调用,b=0,c=3,所以返回值为5+1+4=10;第2次调用,因为c是静态局部变量,它仍然保存着上次调用结束时的值4,而b重新被创建和初始化为0,所以返回值为5+1+5=11;同理,第3次调用返回的是12。所以,程序最终输出为:010111212。

26.11解析:字符空格的ASCII码不为0,所以本题中表达式\ue008!c\ue009的值为0,b=0&&1的结果显然为0。

27.113399

28.关系关系

29.1111解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。

30.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

31.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

32.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

33.2468

34.3*sizeof(double)3*sizeof(double)解析:malloc(size)函数用于申请动态存储空间,故应填3个double型变量在内存中所占的字节数。while循环的功能把字符从第二个元素开始左移一位,并将原第一个元素赋给最后一个元素。

35.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

36."bi.dat"fp'bi.dat'\r\nfp解析:要向文件bi.dat中写数据,所以要打开文件bi.dat。fp是指向文件bi.dat的指针,是将数据写入fp指向的文件中去。

37.读栈顶元素读栈顶元素解析:栈的基本运算有三种:入栈、退栈和读栈顶元素。

入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。

退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针退一(即top减1)。

读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。

38.*(p+5)*(p+5)解析:p+5指向了数组w的第6个元素,再取指针运算。

39.261261解析:在控制格式符中“O”代表的是将数据按八进制输出,十进制数的177代表的八进制数是261,所以该空格处应该填写261。

40.(cosx)*(cosx)*(m+n)/(m-n)

41.C解析:考查结构体成员数据的引用方法。通过指针来引用结构体成员的方法是(指针变量)->结构体成员名。

42.A解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。

43.C解析:本题考查if语句。当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下列的printf语句。

44.C解析:本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量,因此不能进行赋值操作。另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

45.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

46.A解析:在选项A)中,因为!a=0,所以关系表达式!a==1的值为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A)正确。在选项B)中,关系表达式a<b为真,表达式(a<b)&&!c为假,而表达式(a<b)&&!c‖1为真,所以整个表达式的值为真。选项C)中,a&&b的结果为真。在选项D)中,a‖(b+b)&&(c-a)的结果为真。

47.A解析:转文字符常量'\\xx'可以把'\\'后面的数字转换为对应的ASCII字符。

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

49.D解析:在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。

50.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。

51.C解析:通过行指针p来实现数组元素的引用。注意:用格式说明符%s进行整串输入与输出。

52.A解析:SA方法是一种自顶向下逐层分解的结构化分析方法。SA法的具体做法是将整个软件系统分解为若干个子系统或软件成分,将整个软件系统的外部功能分配到软件系统的各个软件成分中去,并详细定义各个软件成分的外部功能和软件成分之间的接口。

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

54.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0:C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。选项D)赋值表达式中对每一维的元素赋初值应用{},而不是()。

55.C解析:选项A中0.5/100.0将保留小数点后六位,不满足题目要求,故选项A不正确;选项B和选项D也将保留小数点后六位,不满足题目要求,故选项B不正确;所以,4个选项中选项C符合题意。

56.C解析:主函数中定义了一个文件指针fp1,然后通过fopen()函数,以写的方式打开文件“fl.txt”,并让指针fp1指向它,接着调用fpfintf()函数将“abc”写到文件fp1所指的文件里,由于开始fp1指向文件的“fl.txt”的开始位置,因此“abc”将把文件“fl.txt”里原来的内容“good”覆盖掉,故文件“fl.txt”里最后的内容为“abc”。

57.D解析:本题中定义了一个二维数组c和一个指针数组p,并初始化让p指向c。显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个二维数组c的长度,故p+l将让p指向c数组后面的元素,不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组C中一行的长度,故p[0]+2代表的是第3行的首地址,而*(p[0]+2)将代表第3行的第一个元素的地址,所以,4个选项中选项D符合题意。

58.A解析:本题考查的是标准输入函数scanf()的运用。scanf函数的第一个参数是格式控制串,若在格式控制串中插入了格式控制符以外的其他字符,则在输入数据时要在对应的位置原样输入这些字符才能正确输入。所以本题若想使变量m的值为123、n为456、p为789,则应该输入的字符串为:用这三个数据按m、n、p出现在scanf()函数中的位置顺序替换掉scanf()函数格式控制串中的格式控制符后所得到的格式控制串,即“m=123n=456p=789”。所以,4个选项中选项A符合题意。

59.C解析:本题考查一个算法应当具有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。

60.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比

温馨提示

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

评论

0/150

提交评论