2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.软盘上第()磁道最重要,一旦损坏,该盘就不能使用了。

A.0B.40C.1D.80

2.采用深度优先搜索或拓扑排序算法可以判断出一个有向图中是否有环(回路)()

A.对B.错

3.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值

4.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

5.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);

B.scallf("%d%s",&b,c);

C.scanf("%d%s",b,c)

D.scanf("%d%s",b,&c);

6.算法的效率的分析主要包括两个方面()。

A.时间复杂度和空间复杂度B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性

7.设有定义“intx,y,z;”,且各变量已经赋正整数值,则以下能正确表示代数式“”的C语言表达式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

8.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

9.

10.已知一个无向图(边为正数)中顶点A,B的一条最短路P,如果把各个边的权重(即相邻两个顶点的距离)变为原来的2倍,那么在新图中,P仍然是A,B之间的最短路,以上说法是()A.错误B.正确

11.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。

A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段

12.下列说法正确的是()。

A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B.在c语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数

13.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环

14.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

15.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。

A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针

16.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用直接选择大值开始排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

17.以下不能作为合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

18.

19.从一个长度为100的顺序表中删除第30个元素时需向前移动()个元素

A.70B.71C.69D.30

20.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

二、2.填空题(20题)21.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

22.下列软件系统结构图的宽度为[]。

23.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

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

25.以下程序运行后输入3,abcde<回车>,则输出结果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

scanf("%d,%s",&n,s);

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

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

}

26.设有如下宏定义

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a,b内容交换,请填空。

floata=5,b=16,c;

MYSWAP(【】a,b);

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

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

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

29.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

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

main()

{inta=l,b=3,c=5;

if(C=a+b)printf("yes\n");

elseprintf("no\n");

}

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

32.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,队列属于______。

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

34.下列程序的运行结果为【】。

main()

{inta,b,c,x,y,z;

a=10;b=2;

c=!(a%b);x=!(a/b);

y=(a<b)&&(b>=0);

z=(a<b)||(b>=0);

printf("c=%d,x=%d,y=%d,z=%d\n",c,x,y,z);

}

35.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

36.下面程序的功能是两个整数进行交换,请填空。

sub(int*x,int*y)

{【】

z=*x;*x=*y;*y=z;

return;}

main()

{intm,n,*t1,*t2;

scanf("%d,%d",&m,&n);

t1=&m;t2=&n;

【】

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

37.定义长度为12的数组,下面四种方法中正确的有【】。

①intx[12];②intn=12;③constintn=12;④intx[]={1,2};

intx[n];intx[n];

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

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

printf("\n");

}

}

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

voidfun(int*n)

{while((*n)--);

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

}

main()

{inta=1000;

fun(&a);

}

40.以下程序的运行结果是【】。

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

三、1.选择题(20题)41.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

42.对下述程序的判断中,正确的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

43.设有以下语句:chara=3,b=6,c;c=ab<<2;则c的二进制值是()。

A.11011B.10100C.11100D.11000

44.以下选项中可作为C语言合法常量的是______。

A.-80B.-80C.-8e1.0D.-80.0e

45.有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%d\n",s);}执行后的输出结果是______。

A.16B.12C.28D.21

46.有以下程序:#include<stdio.h>voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d,%d\n",x,y,z);}执行后的输出结果()。

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

47.下列程序的输出结果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}

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

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

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

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

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

D.上述3种说法都不对

49.下列司用于C语言用户标识符的一组是______。

A.voiddefineWORD

B.a3_b3_123Car

C.For_abcIFCase

D.2aDOsizeof

50.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是()。

A.b%(c%4)B.b%(c-a%5)C.b%a-a%5D.(b%A)-(a%4)

51.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

52.有下列二叉树,

对此二叉树前序遍历的结果为()。

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

53.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

54.关于结构化程序设计原则和方法描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOTO语句

D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

55.设有下列语句inta=1,b=2,c;c=a^(b《2);执行后,C的值为()。

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

56.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

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

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

58.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

59.若有下列定义(设int类型变量占2个字节):floatx=123.4567;则下列语句:printf("x=%5.2f",x);输出的结果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

60.有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

四、选择题(20题)61.在结构化分析方法中,数据字典的作用是()。

A.存放所有需要处理的原始数据

B.存放所有处理的结果

C.存放所有程序文件

D.描述系统中所用到的全部数据和文件的有关信息

62.在以下选项中,能正确调用对象属性的语句是()。

A.对象名(属性名)B.对象名一>属性名C.对象名属性名D.对象名.属性名

63.

64.有以下程序:

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

A.0304B.2050C.3344D.3040

65.

66.

67.有以下程序

68.下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A.循环队列B.栈C.队列D.二叉树

69.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

70.

71.有如下程序:main(){intn[5]={0,0,0},i,k=2;for(i=0;i&printf("%d\n",n[k]););}该程序的输出结果是()。A.不确定的值B.2C.1D.0

72.下面四个选项中,均是不正确的8进制数或16进制数的选项是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

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

74.下列数据结构中属于非线性结构的是()。

A.队列

B.线性表

C.二叉树

D.栈

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

A.C程序对预处理命令行的处理是在程序执行的过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.在程序中凡是以“#”开始的语句行都是预处理命令行

76.

77.设整型变量a为5,使b不为2的表达式是()。

A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1

78.

79.下面对C语言的描述中,正确的是

A.函数一定有返回值,否则无法使用函数

B.C语言函数既可以嵌套定义又可以递归调用

C.在C语言中,调用函数时,只能将实参的值传递给形参

D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

80.以下选项中可用做C程序合法实数的是()。

A..leOB.3.0e0.2C.E9D.9.12E

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为l3579。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)例如,若输入10,则输出为S=3.597740。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A

2.A

3.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c。

4.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

5.B解析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。

6.D

7.A代数式“”的结果为小数,转为C语言的表达式必须是浮点数。A选项由于1.0为浮点数,计算结果自动转换为浮点数。选项B、C、D的表达式均为0,因此只有选项A正确。故本题答案为A选项。

8.C

9.D

10.B

11.B解析:软件生命周期由软件定义、软件开发和软件维护三个阶段组成。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发阶段由5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。选项B正确。

12.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。

13.C本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

14.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

15.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。

16.A

17.A字符常量是使用单引号标注的单个字符,选项A错误;选项B属于浮点数常量,正确;选项C属于转义字符常量,正确;选项D属于转义字符,代表八进制数011的ASCII值的字符,正确。本题答案为A选项。

18.A

19.A

20.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

21.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。

22.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

23.20

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

25.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。

26.cc解析:该题考查以下两个知识点:

(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符字符串

(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。

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

28.yesyes解析:if语句的条件语句为c=a+b=1+3=4,即条件为真,执行语句printf('yes\\n');,输出结果为yes。

29.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

30.yesyes解析:本题中,if后面括号里的表达式为c=a+b为真(即c=1+3=4为真),所以,执行printf('yes\\n'),最后输出yes。

31.1616解析:在程序中首先将8赋值给变量a,然后再进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

32.线性结构线性结构解析:队列有且只有一个根结点,而且每一个结点最多有一个前件,也最多有一个后件,满足线性结构的条件,所以属于线性结构。

33.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

34.c=1x=Oy=Oz=1

35.JD

36.intz;sub(t1t2);

37.①③

38.123056009123\r\n056\r\n009解析:数组a中元素的初值为:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。执行第1个for循环后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2个for循环的功能是将数组元素按照3行3列的格式输出。

39.00解析:while循环的条件为即当*n非零时执行循环,(*n)一是先使用*n的值再对*n减1,结束while循环后*n的值为-1。++(*n)是先对*n加1再使用*n的值,-1+1=0,输出*n的值即输出0。

40.2002shangxian2002shangxian解析:\'B\'的ASCII值是66。本题中指针变量p指向d,执行第一个if语句时,条件成立,d=b;执行第二个if语句时,条件不成立,故d=b,所以d.sno=2002,p->name'Shangxian'。

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

42.B解析:此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,即strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。

43.A解析:“<<”是C语言中规定的左移运算符,例如,a=a<<2,是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;“^”是异或运算符,所以,c的二进制值应为00011011。

44.A解析:选项B中,以0开头表示是一个八进制数,而八进制数的取值范围是0~7,所以-080是不合法的;选项C和D中,e后面的指数必须是整数,所以也不合法。

45.A解析:continue语句的作用是结束本次循环,程序中while循环语句的功能是计算1~7之间奇数之和,即s=1+3+5+7=16。

46.C解析:程序中if语句的条件只有y>z为真,所以执行f(y,z)。函数f的功能是交换两形参的值,但由于实参和形参都是一般变量,因此形参变量值的交换不能影响实参的值,main函数中的y和z并来互换,因此输出结果为:1,3,2。

47.B解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

48.DD。【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。

49.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除C和D。C语言坯规定标识符不能为C语言的关键字,从而选项A(void是关键字)是错误的。

50.D选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。

51.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

52.C解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。

53.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

54.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

55.D解析:变量b的初值等于2,所以表达式b<<2表示b的值二进制左移两位,即扩大4倍,所以变量b的等于8。然后与a的值1进行异或运算,得9。

56.D在最坏情况下,冒泡排序和快速排序的比较次数都是n(n一1)/2。【知识拓展】所谓冒泡排序,就是将相邻的两个数据比较,如前面的数据大于后面的,则位置互换。这样不停地比较、互换,其实就是把大的数往后排,小的数往前排(就像冒泡一样冒出来了)。

57.C

58.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

59.A解析:本题考查printf函数的格式。“%5.2f”格式符中的“f”表示以带小数点的形式输出单精度或者双精度数:“5”表示指定数据输出宽度为5;“.2”表示指定输出数据小数位占2位数,并对截去的第一位小数做四舍五入处理。

60.D解析:本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。

61.D在c语言中.结构化分析方法中的数据字典的作用是描述系统中所用到的全部数据和文件的有关信息。

62.D

63.B

64.D第一次循环i为0,i%2为o,执行switch(a[O]%2)中的ca∞0语句后内容即a[0]++,a[0]的值变成3;第二次循环i的值为l,i%2为1,执行ca∞1:a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的ca∞1语句后的内容a[2]一一,8[2]的值变成4;第四次循环i的值为3,i%2为1,执行casel:a[i]=0;所以a[3]的值变成0。

65.D

66.D

67.Af函数是值传递,不会改变main函数中结构体a的值,所以选择A)。

68.BB。【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。

69.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。

70.A

71.D本题for循环中,当i=0时,判断条件i&printf("%d\n",n[k]),此时i的值是0,输出n[k]的值也为0,0&0结果还是0,条件不成立,退出循环。所以最后输出结果为0。

72.D本题主要考查八进制数和十六进制数的正确表示。八进制数的特点是以0开头,而且数据中的每个数都要小于8;而十六进制数的特点是以0X开头,数据中的元素除了0~9这些数字外,还可以是A、B、C、D、E、F这些字符。

在选项A中,018的表示是错误的,因为八进制数中不应该出现8这个数字元素。另外两个表示正确。

在选项B中,0ABC的表示不正确,八进制数中根本不应该出现ABC这些数字元素。另外两个正确。

在选项C中,没有不正确的表示方法。

在选项D中,0A12的表示不正确,而7FF和-123根本就不是八进制或十六进制数,因此本题正确答案选D。

73.A数组定义的长度必须为常量,所以A)选项正确。

74.C线性结构满足两个条件:有且只有一个根结点;每个节点最多只有一个前件,也最多只有一个后件。栈、队列、线性表都属于线性结构,二叉树是一种非线性结构,因为它除叶子节点外,每个节点都有两个后件,不满足线性结构的条件。

75.AC程序对预处理命令行的处理是在程序编译的过程中进行的,所以选择A)。

76.C

77.C

78.C

79.CA选项“函数一定有返回值,否则无法使用函数”,该选项是错误的。使用一个函数并不一定要使用该函数的返回值。C语言中用void定义“无类型”的函数,即禁止在调用函数中使用被调用函数的返回值。

B选项“C语言函数既可以嵌套定义,又可以递归调用”,该选项是错误的。嵌套定义是指在定义一个函数时,其函数体内又包含另一个函数的完整定义,这个内嵌的函数只能被包含它的函数所调用。而C语言规定每个函数都是平行、独立的,不允许嵌套定义的情况出现。C语言不能嵌套定义函数,但能够嵌套调用函数,也就是在调用一个函数的过程中,又调用另一个函数。C语言允许函数的递归调用,即在调用一个函数的过程中又直接或间接地调用该函数本身。

C选项“在C语言中,调用函数时,只能将实参的值传递给形参”,该选项是正确的。函数的形参是指定义函数时函数名后面括弧中的变量名,实参是指在主调函数中调用一个函数时,函数名后面括弧中的参数。调用时将实参的值赋给形参,形参的修改不会影响实参的值。注意,这里仅仅指的是传递数值,如果以地址的方式传递参数,则形参的改变也会改变实参的值。

D选项“C语言程序中有调用关系的所有函数都必须放在同一源程序文件中”,该选项是错误的。被调用的函数可以是库函数或用户自己定义的函数,使用库函数时,应该在本文件开头用“#include”命令将调用有关库函数时所需用到的信息“包含”到本文件中,使用用户自己定义的函数时,主调函数与被调函数要在同一个文件下,并要在主调函数中对被调函数进行声明。

80.AC语言中实数的指数计数表示格式为字母e或者E之前必须有数字,且e或E后面的指数必须为整数。所以选项A正确。

81.(1)错误:intproc(10ngS,long*t)

正确:voidproc(10ngs,long*t)

(2)错误:s=s%0100;

正确:s=s/100;

【解析】由主函数中的函数调用可知,函数proc()没有返回值,因此,“intproc(longs,long*t)”应改为“voidproc(longs,long*t)”。题目要求是把奇数位上的数找出构成

一个新的数组,因此把“s=s%100;”改为“s=s/100;”。

82.

【解析】首先定义一个变量来存放表达式的和,根据题目中提供的多项式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当中。

2021-2022年吉林省通化市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.软盘上第()磁道最重要,一旦损坏,该盘就不能使用了。

A.0B.40C.1D.80

2.采用深度优先搜索或拓扑排序算法可以判断出一个有向图中是否有环(回路)()

A.对B.错

3.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值

4.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

5.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);

B.scallf("%d%s",&b,c);

C.scanf("%d%s",b,c)

D.scanf("%d%s",b,&c);

6.算法的效率的分析主要包括两个方面()。

A.时间复杂度和空间复杂度B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性

7.设有定义“intx,y,z;”,且各变量已经赋正整数值,则以下能正确表示代数式“”的C语言表达式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

8.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

9.

10.已知一个无向图(边为正数)中顶点A,B的一条最短路P,如果把各个边的权重(即相邻两个顶点的距离)变为原来的2倍,那么在新图中,P仍然是A,B之间的最短路,以上说法是()A.错误B.正确

11.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。

A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段

12.下列说法正确的是()。

A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B.在c语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数

13.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环

14.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

15.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。

A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针

16.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用直接选择大值开始排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

17.以下不能作为合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

18.

19.从一个长度为100的顺序表中删除第30个元素时需向前移动()个元素

A.70B.71C.69D.30

20.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

二、2.填空题(20题)21.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

22.下列软件系统结构图的宽度为[]。

23.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

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

25.以下程序运行后输入3,abcde<回车>,则输出结果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

scanf("%d,%s",&n,s);

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

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

}

26.设有如下宏定义

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a,b内容交换,请填空。

floata=5,b=16,c;

MYSWAP(【】a,b);

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

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

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

29.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

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

main()

{inta=l,b=3,c=5;

if(C=a+b)printf("yes\n");

elseprintf("no\n");

}

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

32.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,队列属于______。

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

34.下列程序的运行结果为【】。

main()

{inta,b,c,x,y,z;

a=10;b=2;

c=!(a%b);x=!(a/b);

y=(a<b)&&(b>=0);

z=(a<b)||(b>=0);

printf("c=%d,x=%d,y=%d,z=%d\n",c,x,y,z);

}

35.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

36.下面程序的功能是两个整数进行交换,请填空。

sub(int*x,int*y)

{【】

z=*x;*x=*y;*y=z;

return;}

main()

{intm,n,*t1,*t2;

scanf("%d,%d",&m,&n);

t1=&m;t2=&n;

【】

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

37.定义长度为12的数组,下面四种方法中正确的有【】。

①intx[12];②intn=12;③constintn=12;④intx[]={1,2};

intx[n];intx[n];

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

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

printf("\n");

}

}

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

voidfun(int*n)

{while((*n)--);

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

}

main()

{inta=1000;

fun(&a);

}

40.以下程序的运行结果是【】。

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

三、1.选择题(20题)41.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

42.对下述程序的判断中,正确的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

43.设有以下语句:chara=3,b=6,c;c=ab<<2;则c的二进制值是()。

A.11011B.10100C.11100D.11000

44.以下选项中可作为C语言合法常量的是______。

A.-80B.-80C.-8e1.0D.-80.0e

45.有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);printf("%d\n",s);}执行后的输出结果是______。

A.16B.12C.28D.21

46.有以下程序:#include<stdio.h>voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d,%d\n",x,y,z);}执行后的输出结果()。

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

47.下列程序的输出结果是()。#include<stdio.h>voidp(int*x){printf("%d",++*x);}voidmain(){inty=3;p(&y);}

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

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

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

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

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

D.上述3种说法都不对

49.下列司用于C语言用户标识符的一组是______。

A.voiddefineWORD

B.a3_b3_123Car

C.For_abcIFCase

D.2aDOsizeof

50.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是()。

A.b%(c%4)B.b%(c-a%5)C.b%a-a%5D.(b%A)-(a%4)

51.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

52.有下列二叉树,

对此二叉树前序遍历的结果为()。

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

53.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

54.关于结构化程序设计原则和方法描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOTO语句

D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

55.设有下列语句inta=1,b=2,c;c=a^(b《2);执行后,C的值为()。

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

56.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

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

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

58.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

59.若有下列定义(设int类型变量占2个字节):floatx=123.4567;则下列语句:printf("x=%5.2f",x);输出的结果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

60.有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

四、选择题(20题)61.在结构化分析方法中,数据字典的作用是()。

A.存放所有需要处理的原始数据

B.存放所有处理的结果

C.存放所有程序文件

D.描述系统中所用到的全部数据和文件的有关信息

62.在以下选项中,能正确调用对象属性的语句是()。

A.对象名(属性名)B.对象名一>属性名C.对象名属性名D.对象名.属性名

63.

64.有以下程序:

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

A.0304B.2050C.3344D.3040

65.

66.

67.有以下程序

68.下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A.循环队列B.栈C.队列D.二叉树

69.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

70.

71.有如下程序:main(){intn[5]={0,0,0},i,k=2;for(i=0;i&printf("%d\n",n[k]););}该程序的输出结果是()。A.不确定的值B.2C.1D.0

72.下面四个选项中,均是不正确的8进制数或16进制数的选项是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

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

74.下列数据结构中属于非线性结构的是()。

A.队列

B.线性表

C.二叉树

D.栈

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

A.C程序对预处理命令行的处理是在程序执行的过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.在程序中凡是以“#”开始的语句行都是预处理命令行

76.

77.设整型变量a为5,使b不为2的表达式是()。

A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1

78.

79.下面对C语言的描述中,正确的是

A.函数一定有返回值,否则无法使用函数

B.C语言函数既可以嵌套定义又可以递归调用

C.在C语言中,调用函数时,只能将实参的值传递给形参

D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

80.以下选项中可用做C程序合法实数的是()。

A..leOB.3.0e0.2C.E9D.9.12E

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为l3579。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)例如,若输入10,则输出为S=3.597740。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A

2.A

3.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c。

4.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

5.B解析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。

6.D

7.A代数式“”的结果为小数,转为C语言的表达式必须是浮点数。A选项由于1.0为浮点数,计算结果自动转换为浮点数。选项B、C、D的表达式均为0,因此只有选项A正确。故本题答案为A选项。

8.C

9.D

10.B

11.B解析:软件生命周期由软件定义、软件开发和软件维护三个阶段组成。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发阶段由5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。选项B正确。

12.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。

13.C本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

14.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

15.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。

16.A

17.A字符常量是使用单引号标注的单个字符,选项A错误;选项B属于浮点数常量,正确;选项C属于转义字符常量,正确;选项D属于转义字符,代表八进制数011的ASCII值的字符,正确。本题答案为A选项。

18.A

19.A

20.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

21.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。

22.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

23.20

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

25.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。

26.cc解析:该题考查以下两个知识点:

(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符字符串

(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。

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

28.yesyes解析:if语句的条件语句为c=a+b=1+3=4,即条件为真,执行语句printf('yes\\n');,输出结果为yes。

29.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

30.yesyes解析:本题中,if后面括号里的表达式为c=a+b为真(即c=1+3=4为真),所以,执行printf('yes\\n'),最后输出yes。

31.1616解析:在程序中首先将8赋值给变量a,然后再进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

32.线性结构线性结构解析:队列有且只有一个根结点,而且每一个结点最多有一个前件,也最多有一个后件,满足线性结构的条件,所以属于线性结构。

33.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

34.c=1x=Oy=Oz=1

35.JD

36.intz;sub(t1t2);

37.①③

38.123056009123\r\n056\r\n009解析:数组a中元素的初值为:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。执行第1个for循环后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2个for循环的功能是将数组元素按照3行3列的格式输出。

39.00解析:while循环的条件为即当*n非零时执行循环,(*n)一是先使用*n的值再对*n减1,结束while循环后*n的值为-1。++(*n)是先对*n加1再使用*n的值,-1+1=0,输出*n的值即输出0。

40.2002shangxian2002shangxian解析:\'B\'的ASCII值是66。本题中指针变量p指向d,执行第一个if语句时,条件成立,d=b;执行第二个if语句时,条件不成立,故d=b,所以d.sno=2002,p->name'

温馨提示

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

评论

0/150

提交评论