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

下载本文档

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

文档简介

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

一、单选题(20题)1.和顺序栈相比,链栈有一个比较明显的优势是()。

A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现

2.

3.以下选项中的表达式调用库函数依次求-4.5的绝对值、-4.0的平方根值、30°角的正弦值和2的3次方值。正确的调用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序运行后的输出结果是()。

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

5.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

6.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值

7.以下程序的输出结果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

8.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

10.下面程序的输出结果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

11.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

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

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

13.在位运算中,操作数每右移一位,其结果相当于()

A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16

14.在最坏情况下比较次数相同的是()。A.冒泡排序与快速排序B.简单插入排序与希尔排序C.简单选择排序与堆排序D.快速排序与希尔排序

15.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称______。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

16.

17.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

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

18.以下正确的字符串常量是()。A.“\\\”B.‘abc’C.OlympicGamesD.“”

19.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________。

A.eB.2e9C.n2-eD.n2-2e

20.用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是()。

A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域

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

main()

{inti,a[10];

a[0]=a[1]=1;

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

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

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

{if(i%2==0)printf("\n");

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

}

}

22.在树形结构中,树根结点没有______。

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

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

}

24.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<;y++)

z=(*(ptr+y)<x?*(ptr+y);x;

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

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

29.若有定义语句chars[100],d[100];intj=0,i==0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

while(s[i]=【】;j++;}

d[j]=0;

30.设有以下定义

struetss

{intinfo;struetss*link;}x,y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句【】。

31.以下程序用来输出结构体变量ex所占存储单元的字节数:

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

32.数据流的类型有______和事务型。

33.算法复杂度主要包括时间复杂度和【】复杂度。

34.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

main{)

{inta;

scanf("%d",&a);

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

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

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

}

36.若a是血型变量,且a的初值为4,则计算a+=a-=a*a表达式后a的值为______。

37.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

main()

{charm;

m='B'+32;printf("%c\n",m);

39.在面向对象方法中,类的实例称为______。

40.在面向对象方法中,对象之间进行通信的构造称为()。

三、1.选择题(20题)41.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

42.以下正确的数组定义语句是()

A.inty[1][4]={1,2,3,4,5,}

B.floatx[3][]={{1},{2},{3}}

C.longs[2][3]={{1},{1,2}{1,2,3,}}

D.doublet[][3]={0}

43.6.C语言中下列叙述正确的是()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环,必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

44.下列队列的描述中,正确的是()

A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作

45.有下列二叉树,对此二叉树中序遍历的结果为()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

47.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

main()

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

f(a);

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

}

程序运行后的输出结果是

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

48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序运行后的输出结果是

A.9,9B.8,9C.1,8D.9,8

49.在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是

A.1B.2C.7D.11

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

A.用E—R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E—R图只能表示实体集之间一对一的联系

C.用E—R图只能表示实体集之间一对多的联系

D.用E—R图表示的概念数据模型只能转换为关系数据模型

51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);为使程序不陷入死循环,从键盘输入的数据应该是______。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

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

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

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

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

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

53.下列叙述中正确的是A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

54.若有下面的说明和定义,则sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

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

A.在C语言中的保留字必须小写

B.变量的存储类型决定了变量的存储位置及其生存期

C.宏定义以#define开头,行末必须加分号

D.在C语言中的注释行可以出现在程序的任何位置

56.一个源文件中的外部变量的作用域为()。

A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束

57.若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。

A.20,10B.20,20C.10,20D.10,10

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

A.C程序中注释部分可以出现在程序中任意合适的地方

B.花括号"{"和"}"只能作为函数体的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C语句之间的分隔符,不是语句的一部分

59.以下程序的输出结果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}

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

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

四、选择题(20题)61.下列函数的类型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

62.

63.

64.阅读下面程序段,则执行后的结果为()。

A.64B.8C.56D.0

65.下列选项中,能够满足“只要字符串sl等于字符串s2,则执行sT”要求的是()。程序执行后的输出结果是()。

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

66.

67.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

68.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

69.

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

main

{inti=0,S=0;

for(;;)

{

if(i==3||i==5)continue;

if(i==6)break;

i++;

s+=i:

};

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

}

A.10B.13C.21D.程序陷入死循环

70.以下程序的输出结果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

71.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析

72.有以下程序:

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

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

73.对于循环队列,下列叙述中正确的是()。A.队头指针是固定不变的

B.队头指针—定大于队尾指针

C.队头指针_定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

74.若有以下函数首部:

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是()。

A.intfun(double,int);

B.intfun(double木,int*);

C.intmn(double*x,intn);

D.intfun(doublex,intint*n)

75.C语言的基本单位是()。

A.函数B.过程C.子程序D.子函数

76.(74)用链表表示线性表的优点是()

A.便于插入和删除操作

B.数据元素的物理顺序与逻辑顺序相同

C.花费的存储空间较顺序存储少

D.便于随机存取

77.有以下程序:

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

A.5,11B.5,5C.11,11D.11,5

78.若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是()。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

79.

80.结构化分析可以使用的工具是()。

A.N—s图B.DFD图C.PAD图D.程序流程图

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串的最前端加入m个*号,形成新串,并且覆盖原串。例如,用户输入字符串abcd(以Enter键结束),然后输入m值为3,则结果为***abcd。注意:字符串的长度最长允许为79。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A

2.D

3.C

4.A“--k”是先自减再使用,所以第1次判断条件即while(4),条件为真输出k的值,k=4-3,结果为1;第2次判断条件即while(0),条件为假,结束循环,输出回车换行符。故本题答案为A选项。

5.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

6.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。

7.B第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。

8.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

9.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

10.A解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,输出字符串'ABCD'。p++,第二次循环,p的值为字符数组s的首地址加1,输出字符串'BCD'。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串'CD'。p++,第4次循环,p的值为字符数组s的首地址加3,输出字符串\'D'。

11.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

12.A数组定义的一般形式为:类型说明符数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。C选项中数组长度是一串非法的数字。定义数组时必须为其指明长度,D选项中的数组长度为空,所以非法。故本题答案为A选项。

13.B

14.A冒泡排序、快速排序、简单插入排序、简单选择排序在最坏情况下比较次数均为n(n-1)/2,堆排序在最坏情况下比较次数为nlog2n,希尔排序在最坏情况下需要比较的次数是nr(1﹤r﹤2)。本题答案为A选项。

15.A解析:希尔排序法的基本思想是:将整个无序列分割成若干小的子序列分别进行插入排序。

16.A

17.C

18.D在C语言中,字符串常量是用双引号标注的字符序列,因此B选项和C选项不正确。字符序列中可包含一些转义字符,转义字符以“\\”开头。A选项中包含3个前两个(\\\\)代表一个“\\”字符,后面一个为“””。因为\\”被看作一个“””,所以该字符串缺少一个结束的“””。因此A选项不正确。D选项的两个“”之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确。B选项的abc应该使用双引号标注。故本题答案为D选项。

19.D

20.B

21.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。

22.前件前件

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

24.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:题目要求排序的元素是下标值为偶数的元素,外循环循环4次,i的值分别为0、2、4、6,所以内循环也循环4次,i的值就应为2、4、6、8,在循环体中已经有了对j加1的操作,因此for后括号中的语句应再对j加1,保证下标为偶数。if语句的功能是如果后一个数比前一个数小则交换位置。

25.2468

26.55解析:分析程序,当a=3;b=4;c=5时,判断语句a>b不成立,所以不执行后面的语句,直接执行“printf('%d\\n',c);”语句,输出c的值,输出结果为5。

27.66解析:条件运算符的优选级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y=1时,*(ptr+y)=4,(*ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4:当y=2时,*(ptr+y)=6,(*(ptr+y)<x条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

28.852852解析:循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。

29.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。

30.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:链表中结点的删除,要删除结点y,只需要让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此只需把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

31.ex或structstex或structst解析:求一个变量所占的存储单元数,用sizeof函数,参数为该变量名或其变量类型。

32.变换型变换型

33.空间空间解析:程序在计算机上运行时所耗费的时间由程序运行时所需输入的数据总量、对源程序进行编译所需时间、计算机执行每条指令所需时间、程序中的指令重复执行的次数等决定。习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。

34.软件工程学软件工程学

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

36.-24-24解析:本题考查赋值运算符a+=b等价于a=a+b;a-=a*a等价于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

37.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

38.bb解析:在ASCII码表中,至少有3个值考生得记住:,0,的ASCII码为48;‘A’的ASCII码为65;‘a’的ASCII码为97。因为记住这3个后,其他字母和数字的ASCII码就可以很容易推出来了。本题中,“B”的ASCII码为‘A’+1=66,所以,字符类型m的ASCII为66+32=98=97+1=‘a’+1,所以最后输出的结果为字符‘b’。

39.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

40.消息消息解析:对象之间进行通信的构造叫做消息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

41.B数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,只不过这个仓库在计算机的大容量存储器上,例如,硬盘就是一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,而且还要便于查找和使用。

数据库管理系统(DBMS)是位于用户与操作系统之间的完成数据管理的系统软件。它是用户与数据库的接口。应用程序一般要通过DBMS才能访问数据库。在数据库建立、运用和维护时对数据库进行统一控制。

数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。数据库是整个数据库系统最基本的成分。数据库管理系统是数据库系统的核心。数据库管理员是数据库系统的责任维护者,负责对数据库系统的整体维护。

综上所述,本题中只有B选项的描述是正确的。

42.D解析:选项A二维数组行下标为1,即数组有一行元素,列下标为4表示一行中包含4个元素,而初值列表中有5个元素,故A错。选项B省略了列下标故错误。选项C二维数组行下标为2,数组有2行元素,而初值列表中有3行元素,故C错误。故D为所选。

43.D解析:本题考查do-while语句。C语言支持do-while语句,选项A)错误;do-while构成的循环,当while语句中的表达式值为零时结束循环,故选项B)、C)都是错误的。

44.DD)【解析】队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

45.B对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。本题的遍历顺序是这样的:①首先访问左予树:BDEY;②在左子树BDEY中,也按中序遍历,先访问左子树DY;在左子树DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点D,然后访问右子树Y;③接着访问根B,再访问右子树E;④访问左子树BDEY后,接着访问根结点A,接着访问右子树CFXZ;⑤右子树CFXZ的访问顺序同理可得:FCZX。

46.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

47.B解析:调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为'6,2,3,4,5'。

48.D解析:本题中首先定义了字符数组a,由于它的长度省略,所以其长度由初值个数确定,为9。接着将sizeof()函数返回的值赋给i(SIZeof()函数的作用是返回运算对象占用的字符数),所以i值为9。然后将strlen()函数的返回值赋给j(strlen()函数的作用是返回字符串的长度,不包括字符串的结束标记'\\0'),所以j值为8,所以最后输出的i,j的值为9,8。所以4个选项中D正确。

49.D解析:结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

50.A\n两个实体之间的联系实际上是实体集问的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

\n

51.D解析:do-while循环是先执行循环体再进行条件判断,当执行了一次循环以后,t变成了-1,每次循环后t都减2,t将永远为负奇数,又循环结束的条件是n=t,因此只有当n为负奇数时才不会陷入死循环。

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

53.C解析:软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件没计是确定系统的物理模型。软件测试即使用人工或自动手段来运行或测定某个系统的过程,其日的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件调试后要进行回归测试,防止引进新的错误。

54.D解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用伸变量所占的内存长度等于最长的成员的长度。结构件变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。

55.C解析:本题涉及C语言最基本的4个知识点:①C语言的保留字必须小写;②变量的存储类型不同,其存储位置和生存期也不一样:③C语言允许其注释部分出现在程序中的任何位置;④宏定义以#define开头,行末不需要加分号。

56.D解析:一个源文件中的外部变量的作用域是从定义该变量的位置开始到本文件结束。

57.D解析:本题考查指针变量的赋值。

**pp是定义了一个指向指针的指针变量,语句pp=&p的意思是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。

58.A解析:/*与*/之间的信息称为注释信息,在C语言中,允许在任何能够插入空格符的位置插入注释,但C语言的注释不能进行嵌套,故选项A正确:在C语言中,函数体是从花括号{开始,到花括号}结束。但没有规定花括号{和}只能作为函数体定界符,故选项B错误;选项C中前半句是正确的,C程序由一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数,比如主函数main()就不能由用户来命名,故选C不正确;在C语言中明确规定每条语句以分号;结束,分号是语句不可缺少的一部分,故选项D不正确。所以,4个选项中选项A符合题意。

59.B

60.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

61.A本题考查函数值的类型。在函数调用时,尽管Y的类型是float.x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。

62.A

63.A

64.C函数之间的数据传递。如果没有指明函数值类型,则默认函数返回值的类型为int型。

65.A比较两个字符串的大小可以用strCmp函数,选项A)正确。

66.C

67.AB项定义格式不对,tt[2]只有两个元素,C项缺少了结构体名,而结构体名不可少,D项一样缺少了结构体名。

68.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

69.D

\n当i一0时,两个if都不满足,所以都不执行,直接执行i++语句,此时i为1,S为l,返回for循环中;当i=1时,同样不执行两个if语句,执行i++后,i=2,s=3,返回for循环中;i=2时也不执行if语句,执行i++后,i=3,s=6,接着又执行for循环,此时符合第一个if语句,执行到continue时不再执行i++了,continue是跳出本次循环,接着下次循环。永远这样执行下去,i的值永远为3,故选择D选项。

\n

70.C解析:C语言规定如果全局变量与局部变量同名,则在局部变量的作用域内全局变量不起作用。程序开头定义的变量x为全局变量,函数incre中定义的变量x是局部静态变量,存放在静态存储区,incre调用结束后不释放x占据的存储单元。main函数中使用的x是全局变量x=3,所以main函数中调用函数incre两次。调用过程如下。第1次调用:x=x*(x+1)=1×(1+1)=2,printf函数输出2;第2次调用:x=x*(x+1)=2×(2+1)=6,printf函数输出6。

71.D通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

软件生命周期的主要活动阶段为:

①可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。

②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件,规格说明书及初步的用户手册,提交评审。

③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。

④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。

⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。

⑥运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。

72.A题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第-次调用函数执行n+=a++;时a先与n相加在再进行自增。n的值为4,a的值为2,且a变量执行完后空间没有释放。再执行s:。+f(a)时,s的值为4,调用f(a)函数时n的返回值为n=3+2=5,且此时a的值为3了。所以s的值为9。

73.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以对头指针有时可能大于队尾指针有时也可能小于队尾指针,故本题答案为D)。

74.B函数声明的一般形式为:“类型说明符被调函数名(类型形参,类型形参,……);”或“类型说明符被调函数名(类型,类型,……);”由于函数首部为intfun(doublex[10],int*n),因此B选项正确。

75.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。

76.A注:因为不需要移动元素

77.A声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数tim中的变量i和m均为静态局部变量。所以第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,nl的值已经是5了,所以执行i+=m+1,i的值变为9,nl=i+x+Y=9+1+l=11。

78.B

79.C

80.B\n数据流图(DFD)、数据字典、判定表和判定树是结构化分析常用的工具。程序流程图、N—S图、PAD图是详细设计过程中常用的图形工具。

\n

81.(1)错误:str=P;

正确:p=str;

(2)错误:i++;

正确:i++;p++;

(3)错误:a[i]=0;

正确:a[i]=ˊ\0ˊ;

【解析】由函数proc()可知,变量p是指向字符串的指针,其初始化应为字符串首地址,因此,“str=p;”应改为“p=str;”;将P指向的字符串中的每一个字符插在m个*之后,并存放在字符串数组a中,因此,“i++;”应改为“i++;p++;”;操作完成后要为字符串数组添加结束符,因此“a[i]=0;”应改为“a[i]=ˊ\0ˊ;”。

82.

题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,最后为字符串str加上结束符。

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

一、单选题(20题)1.和顺序栈相比,链栈有一个比较明显的优势是()。

A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现

2.

3.以下选项中的表达式调用库函数依次求-4.5的绝对值、-4.0的平方根值、30°角的正弦值和2的3次方值。正确的调用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序运行后的输出结果是()。

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

5.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

6.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值

7.以下程序的输出结果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

8.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

10.下面程序的输出结果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

11.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

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

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

13.在位运算中,操作数每右移一位,其结果相当于()

A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16

14.在最坏情况下比较次数相同的是()。A.冒泡排序与快速排序B.简单插入排序与希尔排序C.简单选择排序与堆排序D.快速排序与希尔排序

15.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称______。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

16.

17.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

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

18.以下正确的字符串常量是()。A.“\\\”B.‘abc’C.OlympicGamesD.“”

19.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________。

A.eB.2e9C.n2-eD.n2-2e

20.用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是()。

A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域

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

main()

{inti,a[10];

a[0]=a[1]=1;

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

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

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

{if(i%2==0)printf("\n");

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

}

}

22.在树形结构中,树根结点没有______。

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

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

}

24.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<;y++)

z=(*(ptr+y)<x?*(ptr+y);x;

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

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

29.若有定义语句chars[100],d[100];intj=0,i==0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

while(s[i]=【】;j++;}

d[j]=0;

30.设有以下定义

struetss

{intinfo;struetss*link;}x,y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句【】。

31.以下程序用来输出结构体变量ex所占存储单元的字节数:

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

32.数据流的类型有______和事务型。

33.算法复杂度主要包括时间复杂度和【】复杂度。

34.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

main{)

{inta;

scanf("%d",&a);

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

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

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

}

36.若a是血型变量,且a的初值为4,则计算a+=a-=a*a表达式后a的值为______。

37.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

main()

{charm;

m='B'+32;printf("%c\n",m);

39.在面向对象方法中,类的实例称为______。

40.在面向对象方法中,对象之间进行通信的构造称为()。

三、1.选择题(20题)41.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

42.以下正确的数组定义语句是()

A.inty[1][4]={1,2,3,4,5,}

B.floatx[3][]={{1},{2},{3}}

C.longs[2][3]={{1},{1,2}{1,2,3,}}

D.doublet[][3]={0}

43.6.C语言中下列叙述正确的是()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环,必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

44.下列队列的描述中,正确的是()

A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作

45.有下列二叉树,对此二叉树中序遍历的结果为()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

47.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

main()

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

f(a);

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

}

程序运行后的输出结果是

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

48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序运行后的输出结果是

A.9,9B.8,9C.1,8D.9,8

49.在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是

A.1B.2C.7D.11

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

A.用E—R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E—R图只能表示实体集之间一对一的联系

C.用E—R图只能表示实体集之间一对多的联系

D.用E—R图表示的概念数据模型只能转换为关系数据模型

51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);为使程序不陷入死循环,从键盘输入的数据应该是______。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

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

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

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

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

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

53.下列叙述中正确的是A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

54.若有下面的说明和定义,则sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

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

A.在C语言中的保留字必须小写

B.变量的存储类型决定了变量的存储位置及其生存期

C.宏定义以#define开头,行末必须加分号

D.在C语言中的注释行可以出现在程序的任何位置

56.一个源文件中的外部变量的作用域为()。

A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束

57.若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。

A.20,10B.20,20C.10,20D.10,10

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

A.C程序中注释部分可以出现在程序中任意合适的地方

B.花括号"{"和"}"只能作为函数体的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C语句之间的分隔符,不是语句的一部分

59.以下程序的输出结果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}

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

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

四、选择题(20题)61.下列函数的类型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

62.

63.

64.阅读下面程序段,则执行后的结果为()。

A.64B.8C.56D.0

65.下列选项中,能够满足“只要字符串sl等于字符串s2,则执行sT”要求的是()。程序执行后的输出结果是()。

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

66.

67.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

68.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

69.

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

main

{inti=0,S=0;

for(;;)

{

if(i==3||i==5)continue;

if(i==6)break;

i++;

s+=i:

};

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

}

A.10B.13C.21D.程序陷入死循环

70.以下程序的输出结果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}

A.33B.22C.26D.25

71.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析

72.有以下程序:

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

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

73.对于循环队列,下列叙述中正确的是()。A.队头指针是固定不变的

B.队头指针—定大于队尾指针

C.队头指针_定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

74.若有以下函数首部:

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是()。

A.intfun(double,int);

B.intfun(double木,int*);

C.intmn(double*x,intn);

D.intfun(doublex,intint*n)

75.C语言的基本单位是()。

A.函数B.过程C.子程序D.子函数

76.(74)用链表表示线性表的优点是()

A.便于插入和删除操作

B.数据元素的物理顺序与逻辑顺序相同

C.花费的存储空间较顺序存储少

D.便于随机存取

77.有以下程序:

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

A.5,11B.5,5C.11,11D.11,5

78.若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是()。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

79.

80.结构化分析可以使用的工具是()。

A.N—s图B.DFD图C.PAD图D.程序流程图

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串的最前端加入m个*号,形成新串,并且覆盖原串。例如,用户输入字符串abcd(以Enter键结束),然后输入m值为3,则结果为***abcd。注意:字符串的长度最长允许为79。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A

2.D

3.C

4.A“--k”是先自减再使用,所以第1次判断条件即while(4),条件为真输出k的值,k=4-3,结果为1;第2次判断条件即while(0),条件为假,结束循环,输出回车换行符。故本题答案为A选项。

5.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

6.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。

7.B第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。

8.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

9.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

10.A解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,输出字符串'ABCD'。p++,第二次循环,p的值为字符数组s的首地址加1,输出字符串'BCD'。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串'CD'。p++,第4次循环,p的值为字符数组s的首地址加3,输出字符串\'D'。

11.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的

温馨提示

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

评论

0/150

提交评论