2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

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

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

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

2.

3.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于捅入和删除操作D.数据元素的物理顺序与逻辑顺序相同

4.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

5.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

6.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

7.

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

A.C语言编译系统对标识符的长度没有规定

B.C语言标识符的规定长度因系统而异

C.C语言规定标识符长度最多允许16个字符,超长报错

D.C语言规定以下划线开头的标识符长度必须大于1

9.直接选择排序的时间复杂度为()。(n为元素个数)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

10.在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

11.以下数据结构中,()是线性结构。

A.有向图B.栈C.线索二叉树D.B树

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

A.5B.6C.7D.8

13.

14.若有语句“typedefstructTT{charc;inta[4];}CIN;”,则下列叙述中正确的是()。

A.CIN是structTT类型的变量

B.TT是struct类型的变量

C.可以用TT定义结构体变量

D.可以用CIN定义结构体变量

15.设有定义“intx[2][3];”,则以下选项中不能表示数组元素x[0][1]的是()。

A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)

16.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

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

}

程序运行后的输出结果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

17.程序运行后的输出结果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3

18.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

19.

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

二、2.填空题(20题)21.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

执行后的输出结果是【】。

22.下述程序的输出结果是【】。

#include<stdio.h>

voidmain()

{

charc1[20]="1234";

charc2[20]="5678";

char*p1,*p2;

p1=c1;

p2=c2;

while(*p1++)

while(*p1++=*p2++);

printf("%s,c1);

}

23.深度为5的满二叉树中,叶子结点的个数为______。

24.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

25.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

26.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

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

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

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

main()

{

intx=10,y=20,t=0

if(x==y)t=x;x=y;y=t;

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

}

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

charstr[]="ABCD",*p=str;

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

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

#include<stdio.h>

voidfun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(3);printf("\n");

}

32.在关系模型中,二维表的行称为______。

33.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

34.有以下说明定义和语句,可用a.day引用结构体成员day,写出引用结构体成员day的其他两种形式【】、【】。

struct{intday;charmouth;intyear;}a,*b;b=&a;

35.如果两个8位二进制数00010101与01000111相加,其结果用十进制表示为【】。

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

37.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。

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

39.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

三、1.选择题(20题)41.下列定义不正确的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);intx,y;{}

D.intmax(int,int);

42.下述程序的输出结果是______。#include<stdio.h>main(){enumteam{Jack,Andy,Sam=10,Bob=Sam+2,Tom};printf("%d,%d",Andy,Tom);}

A.2,13B.1,0C.1,13D.1,12

43.有以下程序main(intarge,char*argv[])intn,i=0;while(argv[1][i]!='\0'){n-fun();i++;}printf("%d\n",n*argc);intfun(){staticints=0;s+=1;returns;}假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令exam123<回车>

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

44.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

45.若有说明:inta[3][4]={0};则下面正确的叙述是

A.只有元素a[0][0]可得到初值0

B.此说明语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

46.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

47.当执行下面的程序时,其输出结果为______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}

A.1B.2C.3D.不确定

48.以下叙述不正确的是______。

A.分号是C语言的必要组成部分

B.C程序的注释可以写在句的后面

C.函数是C程序的基本单位

D.主函数的名字不一定用main表示

49.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是

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

50.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

51.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

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

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

53.有以下程序main(){intx[8]={8,7,6,5,0,0},*9;s=x+3;printf("%d\n",s[2]);}执行后输出结果是

A.随机值B.0C.5D.6

54.下列程序中,正确的为______。

A.main(){int*pb=&b;float1>=15.25;printf("%d\n",*pb);}

B.amin(){inta,*pa;a=10;*pa=a;prinffC%d",*pa);}

C.main(){chars[20];char*ps=&s;scanf("%s",*p);printf("%s",*p);}

D.main(){charstr[10];int*ps=str[0];str="abcdefg";printf("%s",*p);}

55.算法具有5个特性,以下选项中不属于算法特性的是()o

A.有穷性B.简洁性C.可行性D.确定性

56.若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

57.执行语句for(i=1;i++<4;);后变量i的值是______。

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

58.下列程序的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序运行后的输出结果是()。

A.6B.7C.5D.8

60.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

四、选择题(20题)61.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。

A.可以是任意合法的表达式B.只能是整数0或非0整数C.可以是结构体类型的数据D.只能是整数O或l

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

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

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

A.1,2,3.4,5,6,7,8,9,10,

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

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

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

64.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

65.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序运行时从键盘输入9<回车>,则输出结果是()。

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

66.在软件开发中,需求分析阶段产生的主要文档是()。

A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

68.

69.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

70.下列选择中,不能用做标识符的是()。

A.1234B._1_2C.int_2_D.2_int_

71.

72.

有以下函数:

charfun(char*p)

{returnP;}

该函数的返回值是()。

A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

73.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

执行后的输出结果是()。

A.1B.2C.4D.死循环

74.设有以下定义:

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)

75.在URL中,默认的Web服务器的端口是()。

A.80B.8080C.1024D.2048

76..C语言运算对象必须是整型的运算符是

A.%B./C.=D.<

77.下列对队列的叙述正确的是()。

A.队列按“先进后出”原则组织数据

B.队列属于非线性表

C.队列在队尾删除数据

D.队列按“先进先出”原则组织数据

78.

79.在软件设计中不使用的工具是()。

A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图

80.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

执行后的输出结果是()。

A.1B.2C.4D.死循环

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:

****ABCDEFG。

注意:部分源程序在文件PROGl.C中。

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

参考答案

1.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

2.B

3.C数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐.个元素查找,因此查找的时间相对更长。

4.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。

5.C

6.B

7.A

8.B对于标识符的长度(即一个标识符允许的字符个数),C语言编译系统是有规定的,即标识符的前若干个字符有效,超过的字符将不被识别。不同的C语言编译系统所规定的标识符有效长度是不同的。故本题答案为B选项。

9.D

10.C

11.B

12.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。

13.C

14.DCIN为结构体类型名,而不是结构体变量。故本题答案为D选项。

15.B选项A中*x等价于x[0],*x+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确;选项B中,*(x+1)等价于x[1],*(*(x+1))等价于x[1][0],错误;选项C中,*x等价于x[0],(*x)[1]等价于x[0][1],正确;选项D中,&x[0][0]等价于x[0],&[0][0]+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确。故本题答案为B选项。

16.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。

17.D

18.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

19.D

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

21.00解析:for循环执行完成后t=5×4×3×2×1×0=0。

22.1567815678解析:本题使用了双重while循环,外循环的循环条件是*p1++,即每次循环时让p1指向其后面的一个元素,而p1自增之前所指内容为0时循环结束。内循环的循环条件是*p1++=*p2++,即每次循环时让p1和p2指向其后面的一个元素,而将p2自增之前所指的元素复制到p1自增之前所指的地址中去,直到p2自增之前所指内容为0时循环结束。p1本来一开始是指向c1[0],由于外循环判断条件时让p1自增了,所以进入内循环时p1指向c1[1],而内循环将p2所指字符串复制到p1所指位置,所以内循环的结果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分别被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改写成'5'、'6'、'7'、'8'、'\\0'。故程序输出的结果为15678。

23.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

24.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

25.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

26.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

27.*(str+I)或str[I]*(str+I)或str[I]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,I=I+1,继续取下一个元素进行判断,直到*(str+I)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+I)相当于str[I]。

28.*pmax=*px*pmax=*px解析:首先将变量x的值放到max中,然后依次和变量y、z进行比较。若有比max大的数,将该数存放到max中,这样最后在max中的值就是x、y、z中的最大值。

29.20020,0解析:本题考查的知识点是if语句的基本概念。在主函数中首先定义了三个整型变量x、y,t,并分别给它们赋初值为10,20,0,接着执行if语句,在if后面括号内的条件表达式中,条件“x==y”即“10==20”不成立,则不执行其后的语句“t=x”,然后退出if语句,顺序执行语句X=y;y=t;。执行完这两条语句后x的值变为20,y的值变为0,所以最后输出x,y的值为20和0。

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

31.1313解析:函数fun是一个递归函数。执行fun(3);,x=3,x/2=1>0,又调用f(1),此时,x=1,x/2=0,不满足继续递归调用的条件,输出1,返回到fun(3)中,输出3。所以本题的输出结果为13。

32.元组元组解析:在关系型数据库中,用二维表来表示关系,二维表的表名即关系名,二维表的行称为关系的元组,二维表的列,称为关系的属性。

33.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

34.(*B).dat.b->day

35.92

36.数据库系统阶段数据库系统阶段解析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段,其中数据独立性最高的阶段是数据库系统阶段。

37.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。

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

39.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

40.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

41.C解析:定义函数时,函数头后不能加分号。

42.C解析:根据枚举型变量的定义方法,Jack=0,Andy=1,Sam=10,Bob=12,Tom=13。

43.A解析:主函数的第一个参数alzc为整形参数,记下从命令行输入的参数的个数;笫二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为2,argv[0]指向字符串“exam”,argv[1]指向参数字符串“123”。在main()函数中,while循环执行了3次,调用了3次fun()函数;第一次调用了fun()函数时,定义了一个静态变量s并赋初值0,加1后作为函数值返回,n的值为1;第二次调用ram()函数时,静态变量s的值将保留上一次退出时的值1,再加1为2,作为函数值返回,n的值为2;同理第三次调用返回后,n的值为3。输出n*argc的值为6所以,A选项为所选。

44.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。

45.D解析:二维数组初始化时允许只对部分元素赋初值,其余自动为0。

46.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓名,出生年月,性别),学号、姓名…都是属性)选取一列或多列(一个二维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样的表(学号,姓名,系号,系名,主任)。

47.C解析:共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。因此本题起作用的是成员b的值,所以程序打印输出3。

48.D解析:C语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以D是错误的。

49.D解析:C语言中,字符数据参加运算时,实际上是其ASCII码参与运算。大写字母的ASCII码比其对应的小写字母的ASCII码小32。因此大写字母转化为小写字母只需将其加上32即可。所以选项B)、C)都符合条件,因为变量c中存储的是大写字母,所以“c-'A'”的值一定小于26,故选项A)与选项C)的含义相同。

50.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。

51.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。

52.D

53.B解析:指向一维数组的指针变量,通过赋值语句“s=x+3”,使指针变量s指向数组元素x[3],输出语句中的s[2]等价于*(s+2),即x[5]值为0。

54.B

55.B解析:一个算法应当具有以下’5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出。简洁性不属于这5个特性,所以本题应该选择B。

56.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

57.C解析:for语句中的表达式可以部分或全部省略,但两个“;”不能省略,若3个表达式均省略,会因为缺少条件判断,导致循环无限执行,而形成死循环。本题中当i的值为5的时候,循环终止。

58.C

59.A解析:本题将主函数中a[2]的地址传递给了sum函数中的形参a[],使得sum函数中的(a+0)为主函数中a[2]的地址,所以a[-1]即*(a-1)的值为主函数中a[1]的值,故函数sum中a[0]=2+4。由于此函数中的a是指向主函数中的a[2],所以主函数中的a[2]的值即为6。

60.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

61.Ac语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是仨意合法的表达式,因此选择A)。

62.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

63.A本题考查的是结构体成员的引用。在主函数main中定义了一个整型变量i和一个结构体变量s。f函数中,定义了一个结构体类型的指针P,外层循环变量i表示数组的第i个元素,内层循环变量j表示数组的第i+1个元素,调用f函数,通过指针变量P来引用结构体成员。执行if语句,当P一>a[i]>P一>a[j]时进行互换,其作用就是从小到大行排序,最后将排序后的元素输出:l,2,3,4,5,6,7,8,9,10,。

64.C\n软件生命周期可分为软件定义、软件开发和软件运行维护3个阶段。软件开发期包括概要设计、详细设计、实现和测试4个阶段。

\n

65.A\n本题考查简单的运算符操作.当输入9时,(a++<9)为假,所以执行else语句中的printf('%d\n',a--),在执行时此时a经过a++操作a=10,所以答案为A。

\n

66.BA项错误,可行性分析阶段产生可行性分析报告。C项错误,概要设计说明书是总体设计阶段产生的文档。D项错误,集成测试计划是在概要设计阶段编写的文档。B项正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。

67.B本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

68.C

69.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。

70.DC语言规定标识符是由字母、数字和下划线组成的,且必须以字母或下划线开头,因此可知D选项错误。

71.C

72.B

73.A解析:因为在while循环的循环条件中,一运算符是前缀形式,所以表达式—k的值是k自减之后的值。程序开始时,将k的值初始化为5,然后进入while循环,因为—k的值为4(非零),所以执行循环体输出k-=3的值1,此时k的值也变为1。第2次执行循环条件,—k的值为0,所以循环结束。因此最后输出的结果是1,故应该选择A。

74.Da[1][2]的值为6.*ptr的值为1,*ptr+1=2是一个数组,所以(*ptr+1)[2]表示不正确。P=a,指向1,p+5是指针向后移动5个单元,即指向6,*(p+5)即是6,C项解释同A,

75.A

76.A本题主要考查C语言中一些常见运算符的基本知识。在题目中,给出了四种不同的运算符,分别如下:

“/”是除法运算符。在C语言中,该运算符的作用是将两操作数进行除法运算,在更改运算符时,两操作数可以是同类型的数值类型,也可以是不同类型的数值类型。

“=”是赋值运算符。在C语言中,该运算符的作用是将运算符左边的结果值复制到右边的变量中保存,该运算符可以操作整型数据,也可以操作其他类型的数据。

“<”是小于关系运算符。如果左边的操作数小于右边,则返回真,否则返回假。该运算符可以操作整型数据,也可以操作其他类型的数据。

“%”是取余运算符。该运算符的作用是求两操作数相除后的余数,该运算符要求两操作数都不能为实数。

\r\n\r\n\r\n

77.D\n队列是一种操作受限的线性表。它只允许性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队酋(front)。队列具有先进先出的特点,它是按”先进先出”的

\n原则组织数据的。

\n

78.B

79.C在软件开发的各个阶段经常会使用到一些图形工具,如在需求分析阶段使用数据流图,在概要设计阶段使用系统结构图,在详细设计阶段使用程序流程图、N-S图或者PAD图等。

80.A

\n在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

\n

81.(1)错误:*t=calloe(m,sizeof(STU));

正确:(structss*)calloc(m,sizeof(STU));

(2)错误:for(i=j=0;i<M;j++)

正确:for(i=j=0;i<M;i++)

(3)错误:t[k].s=b[j].s;

正确:t[k]=b[j];

【解析】由函数proc()可知,变量t是指向动态存储空间的变量,因此不能间接访问运算符,而函数calloc的返回值类型为void*,要进行显式类型转换,因此“*t=calloc(m,si-zeof(STU));”应改为“(structss*)calloc(m,sizeof(STU));”。

由程序可知,变量i为控制学生个数的变量,因此“for(i=j=

82.

程序设计题解析:

【考点分析】

本题考查:指针型变量定义;while循环语句;if语句条件表达式;字符串结束标识‘\\0’。

【解题思路】

函数fun的功能:除了字符串前导的*号之外,将串中其他。号全部删除。解答本题,(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符’\\0’。

【解题宝典】

要删除字符串中的指定字符,通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。2021年甘肃省武威市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

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

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

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

2.

3.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于捅入和删除操作D.数据元素的物理顺序与逻辑顺序相同

4.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

5.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

6.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

7.

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

A.C语言编译系统对标识符的长度没有规定

B.C语言标识符的规定长度因系统而异

C.C语言规定标识符长度最多允许16个字符,超长报错

D.C语言规定以下划线开头的标识符长度必须大于1

9.直接选择排序的时间复杂度为()。(n为元素个数)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

10.在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

11.以下数据结构中,()是线性结构。

A.有向图B.栈C.线索二叉树D.B树

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

A.5B.6C.7D.8

13.

14.若有语句“typedefstructTT{charc;inta[4];}CIN;”,则下列叙述中正确的是()。

A.CIN是structTT类型的变量

B.TT是struct类型的变量

C.可以用TT定义结构体变量

D.可以用CIN定义结构体变量

15.设有定义“intx[2][3];”,则以下选项中不能表示数组元素x[0][1]的是()。

A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)

16.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

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

}

程序运行后的输出结果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

17.程序运行后的输出结果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3

18.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

19.

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

二、2.填空题(20题)21.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

执行后的输出结果是【】。

22.下述程序的输出结果是【】。

#include<stdio.h>

voidmain()

{

charc1[20]="1234";

charc2[20]="5678";

char*p1,*p2;

p1=c1;

p2=c2;

while(*p1++)

while(*p1++=*p2++);

printf("%s,c1);

}

23.深度为5的满二叉树中,叶子结点的个数为______。

24.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

25.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

26.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

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

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

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

main()

{

intx=10,y=20,t=0

if(x==y)t=x;x=y;y=t;

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

}

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

charstr[]="ABCD",*p=str;

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

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

#include<stdio.h>

voidfun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(3);printf("\n");

}

32.在关系模型中,二维表的行称为______。

33.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

34.有以下说明定义和语句,可用a.day引用结构体成员day,写出引用结构体成员day的其他两种形式【】、【】。

struct{intday;charmouth;intyear;}a,*b;b=&a;

35.如果两个8位二进制数00010101与01000111相加,其结果用十进制表示为【】。

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

37.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。

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

39.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

三、1.选择题(20题)41.下列定义不正确的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);intx,y;{}

D.intmax(int,int);

42.下述程序的输出结果是______。#include<stdio.h>main(){enumteam{Jack,Andy,Sam=10,Bob=Sam+2,Tom};printf("%d,%d",Andy,Tom);}

A.2,13B.1,0C.1,13D.1,12

43.有以下程序main(intarge,char*argv[])intn,i=0;while(argv[1][i]!='\0'){n-fun();i++;}printf("%d\n",n*argc);intfun(){staticints=0;s+=1;returns;}假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令exam123<回车>

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

44.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

45.若有说明:inta[3][4]={0};则下面正确的叙述是

A.只有元素a[0][0]可得到初值0

B.此说明语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

46.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

47.当执行下面的程序时,其输出结果为______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}

A.1B.2C.3D.不确定

48.以下叙述不正确的是______。

A.分号是C语言的必要组成部分

B.C程序的注释可以写在句的后面

C.函数是C程序的基本单位

D.主函数的名字不一定用main表示

49.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是

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

50.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

51.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

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

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

53.有以下程序main(){intx[8]={8,7,6,5,0,0},*9;s=x+3;printf("%d\n",s[2]);}执行后输出结果是

A.随机值B.0C.5D.6

54.下列程序中,正确的为______。

A.main(){int*pb=&b;float1>=15.25;printf("%d\n",*pb);}

B.amin(){inta,*pa;a=10;*pa=a;prinffC%d",*pa);}

C.main(){chars[20];char*ps=&s;scanf("%s",*p);printf("%s",*p);}

D.main(){charstr[10];int*ps=str[0];str="abcdefg";printf("%s",*p);}

55.算法具有5个特性,以下选项中不属于算法特性的是()o

A.有穷性B.简洁性C.可行性D.确定性

56.若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

57.执行语句for(i=1;i++<4;);后变量i的值是______。

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

58.下列程序的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);return(d);}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序运行后的输出结果是()。

A.6B.7C.5D.8

60.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

四、选择题(20题)61.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。

A.可以是任意合法的表达式B.只能是整数0或非0整数C.可以是结构体类型的数据D.只能是整数O或l

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

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

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

A.1,2,3.4,5,6,7,8,9,10,

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

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

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

64.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

65.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序运行时从键盘输入9<回车>,则输出结果是()。

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

66.在软件开发中,需求分析阶段产生的主要文档是()。

A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

68.

69.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

70.下列选择中,不能用做标识符的是()。

A.1234B._1_2C.int_2_D.2_int_

71.

72.

有以下函数:

charfun(char*p)

{returnP;}

该函数的返回值是()。

A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

73.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

执行后的输出结果是()。

A.1B.2C.4D.死循环

74.设有以下定义:

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)

75.在URL中,默认的Web服务器的端口是()。

A.80B.8080C.1024D.2048

76..C语言运算对象必须是整型的运算符是

A.%B./C.=D.<

77.下列对队列的叙述正确的是()。

A.队列按“先进后出”原则组织数据

B.队列属于非线性表

C.队列在队尾删除数据

D.队列按“先进先出”原则组织数据

78.

79.在软件设计中不使用的工具是()。

A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图

80.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

执行后的输出结果是()。

A.1B.2C.4D.死循环

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:

****ABCDEFG。

注意:部分源程序在文件PROGl.C中。

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

参考答案

1.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

2.B

3.C数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐.个元素查找,因此查找的时间相对更长。

4.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。

5.C

6.B

7.A

8.B对于标识符的长度(即一个标识符允许的字符个数),C语言编译系统是有规定的,即标识符的前若干个字符有效,超过的字符将不被识别。不同的C语言编译系统所规定的标识符有效长度是不同的。故本题答案为B选项。

9.D

10.C

11.B

12.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。

13.C

14.DCIN为结构体类型名,而不是结构体变量。故本题答案为D选项。

15.B选项A中*x等价于x[0],*x+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确;选项B中,*(x+1)等价于x[1],*(*(x+1))等价于x[1][0],错误;选项C中,*x等价于x[0],(*x)[1]等价于x[0][1],正确;选项D中,&x[0][0]等价于x[0],&[0][0]+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确。故本题答案为B选项。

16.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。

17.D

18.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

19.D

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

21.00解析:for循环执行完成后t=5×4×3×2×1×0=0。

22.1567815678解析:本题使用了双重while循环,外循环的循环条件是*p1++,即每次循环时让p1指向其后面的一个元素,而p1自增之前所指内容为0时循环结束。内循环的循环条件是*p1++=*p2++,即每次循环时让p1和p2指向其后面的一个元素,而将p2自增之前所指的元素复制到p1自增之前所指的地址中去,直到p2自增之前所指内容为0时循环结束。p1本来一开始是指向c1[0],由于外循环判断条件时让p1自增了,所以进入内循环时p1指向c1[1],而内循环将p2所指字符串复制到p1所指位置,所以内循环的结果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分别被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改写成'5'、'6'、'7'、'8'、'\\0'。故程序输出的结果为15678。

23.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

24.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n

温馨提示

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

评论

0/150

提交评论