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

下载本文档

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

文档简介

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

一、单选题(20题)1.若已知一个栈的入栈序列是1,2,3,......,n,其输出序列为p1,p2,p3,..,pn,若p1=n-1,则pi可能为()

A.nB.n-iC.n-i+1D.不确定

2.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

3.数据的不可分割的基本单位是()。

A.元素B.结点C.数据类型D.数据项

4.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}

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

5.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

6.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

7.以下程序的输出结果是

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;}

main()

{printf("%ld\n",fun(3));}

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

8.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

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

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

10.下列说法中错误的是A.A.只能在循环体内使用break语句

B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C.在while和do…while循环中,continue语句并没有使整个循环终止

D.continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

11.有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(“%d\n”,m);}intf(intx){returnx*2;}程序的运行结果是()。

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

12.a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是()

A.'a'&&'b

B.a<=b

C.ab+c&&b-c

D.!((a<b)&&!c1)

13.在单链表中,增加头结点的目的是()。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

14.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

15.则以下函数调用语句错误的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);

16.下列语句组中正确的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

17.在堆栈中存取数据的原则是。A.先进先出B.后进先出C.先进后出D.随意进出

18.下列不属于C语言关键字的是()。A.A.default

B.register

C.enum

D.external

19.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串

A.12B.14C.18D.24

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

A.无直接前趋

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

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

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

二、2.填空题(20题)21.下面程序的输出是【】。

main()

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

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

22.已知字母A的ASCⅡ码为65。以下程序运行后的输出结果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

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

}

23.以下说明语句中,【】是结构体类型名。

typedefstruct

{intn;

charch[8];

}PER;

24.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。

structnode

{chardata;

structnode*next;}a,b

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

voidfun(ints[])

{inti;

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

printf("\n\n");

}

main()

{inta[3][4]={{99,2},{3,4,5},{6,7,8}};

fun(a[0]);

}

26.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

27.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。

28.诊断和改正程序中错误的工作通常称为【】。

29.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

30.一张3.5英寸软盘大约能存储140万个ASCⅡ字符,若存放汉字大约能存放【】个。

31.面向对象的模型中,最基本的概念是对象和______。

32.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

33.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

34.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

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

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

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

37.以下函数fun用于求两个整数a和b的最大公约数。

fun(a,B)

inta,b;

{inti,j,m,n;

if(a>B)

{m=a;a=b;【】;}

i=a;j=b;

while((n=【】)!=0)

{j=i;i=【】;}

return(i);

}

38.设有以下定义和语句,则*(*(p+2)+1)的值为【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

40.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

三、1.选择题(20题)41.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}

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

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

43.软件开发模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

44.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表

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

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

46.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

47.以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

48.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

49.下面程序的输出是______。main(){intx=3,y=6,a=0;,while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

50.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

51.设有下列二叉树:对此二叉树前序遍历的结果为()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

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

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

53.在下列字符序列中,合法的标识符是()

A.P12&.aB.stud_100C.$water.12D.88sum

54.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其输出为______。

A.不确定B.编译错误C.gD.输出null字符

55.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",a|b);}

A.66B.98C.bD.B

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

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

57.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。

A.charstr[]="string";c=str;

B.scanf("%s",C);

C.c=getchar();

D.charstr[]="string";strcpy("C,str")

58.有以下程序:main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k):}程序运行后的输出结果是()。

A.123B.234C.223D.233

59.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf"\n");}假定以上程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROGABCDEFGHIJKL↓,则输出结果为______。

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

60.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

四、选择题(20题)61.

62.下列语句中,正确地执行当i等于5时执行一些语句的条件语句是()。

A.if(i==5)B.ifi=5thenC.ifi=5D.ifi==5then

63.有以下程序:

#include<stdio.h>

main()

{inti,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j>3)break;

m*=i+j;

}

}

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

}

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

A.m=6

B.m=2

C.m=4

D.m=3

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

65.

66.

67.下列程序的输出结果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

68.以下能正确定义一维数组的选项是()。

A.

B.

C.

D.

69.

70.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是():

A.学生成绩管理系统B.ERP系统C.办公自动化系统D.UNIX系统

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

72.在满足实体完整性约束的条件下()。

A.一个关系中应该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

73.

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

75.

76.有以下程序:

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

A.MtemoonB.AftemoonC.MorningD.orning

77.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

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

78.若变量已正确定义,有以下程序段其输出结果是()。

A.0,1B.0,0C.1,1D.程序进入无限循环

79.

80.关系数据库管理系统所管理的关系是()。A.若干个二维表B.一个DBF文件C.一个DBC文件D.若干个DBC文件

五、程序改错题(1题)81.改正下列程序中不正确的语句。

main()

{inta;

scanf(“%d”,a);if(a=1)printf(“One\n”);}

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将str所指字符串中ASCⅡ值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若str所指字符串中的内容为aBcdef9789,其中字符8的ASCⅡ码值为偶数……字符8的ASCⅡ码值为偶数……都应当删除,其他依此类推。最后t所指的数组中的内容应是ace979。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D

2.A数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。故答案为A选项。

3.D

4.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。

5.C选项A是先将a的值赋给变量b,再将变量b的值赋给变量c,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于c选项,表达式a=c的值为1,再求表达式b=c的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给e,故选择C选项。

6.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

7.A解析:该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3s=3-fun(2);第二次调用时:fun(2)n=2s=2返回第一次调用后,s=3-2=1。

8.C在C语言中,二维数组的名字表示的是二维数组的地址,表达式*(W+1)表示的是二维数组的第一行的第二个元素。在其前面再加上*(*(w+1))就是错误的表达式。

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

10.A解析:只能在循环体内和switch语句体内使用break语句,当break出现在循环体中的switch语句体时,其作用是跳出该switch语句体。当break出现在循环体中,但不在switch语句体中时,则在执行break后,跳出本层循环体。continue语句的作用是,跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

11.A第1次调用为m=f(f(f(1))),第2次调用为m=f(f(2)),第3次调用为m=f(4),即返回值为8。故本题答案为A选项。

12.D

13.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

14.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;

表示逻辑条件。

15.DD选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

16.BA选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

17.C

18.Dregister声明寄存器变量enum声明枚举类型default开关语句中的“其他”分支

19.B

20.D

21.66解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]

22.67G67G解析:根据题意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即为字母G的ASCⅡ码值。程序要求按十进制形式输出a,按字符形式输出b,所以结果为67G。

23.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

24.a.next=aba.next=ab解析:选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。

25.9920O345067

26.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

27.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。

28.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

29.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第—空应填:str[i],第二空应填str[i+1]最终打印输出得到的字符串str,所以第三空应填'%s',str。

30.70万70万

31.类类

32.关系关系

33.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。

34.tc

35.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。

36.前件前件

37.b=mj%i.nb=m\r\nj%i.\r\nn解析:函数中的变量i和j分别存放两个形参的最小数和最大数,在语句i=a和j=b执行之前,要将a和b分别变为最小数和最大数,当a>b时,程序使用中间变量将两者交换,所以题中第—个空中应当填写“b=m”;为求两个整数的最大公约数,程序的where循环条件必须为j整除i成立,所以题中第二个空中应当填写“j%i”;程序要通过i的值返回最大公约数,因此在循环中要将每次整除的公钓数赋给i,以保证最后返回的是两个,整数的最大公约数,所以第三个空中应当填写“n”。

38.6060解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+1)中的p+2指向二维数组a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

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

40.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。

41.C

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

43.C解析:软件开发模型包括瀑布模型、快速原型法模型和螺旋模型。

44.A\nA。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。

\n

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

46.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

47.D解析:feof函数的功能是判断文件指针是否已指到了文件末尾,是则返回非零值,否则返回零;ftell函数的功能是得到流式文件中文件指针的当前位置,用相对于文件开头的位移量来表示;fgetc函数的功能是从指定文件读人一个字符;rewind函数的功能是使文件指针重新返回文件的开头。fseek函数用于改变文件的位置指针,调用形式为:fseek(文件类型指针,位移量,起始点),“起始点”取值0(SEEK_SET)、1(SEEK_CUR)、2(SEEK_END)分别表示文件开始、文件当前位置、文件末尾。“位移量”是以“起始点”为基点,向前移动的字节数。函数fseek(fp,OL,SEEK_SET)的作用是将位置指针移到文件头,所以选项D)正确。

48.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

49.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体抽打过程如下:

第一次while循环:条件为真,执行a=a+1=1此时,x的值已为4,判断y<x不成立,继续执行循环;

第二次while循环:条件为假,此时x的值已为5,退出while循环,执行printf。

50.C队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项A和选项B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

51.B解析:所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根-左-右”。故该二叉树的前序遍历结果为“ATBZXCYP”。对于本题,若使用后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。

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

53.B

54.A解析:由于s[2][6]表示字符串已超出了数组s的表示范围,在C中不会刘数组越界进行检查,当数组越界时,会得到一个不确定的值。

55.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

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

57.A在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla'字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。

58.D解析:本题的考点是关于C语言的逻辑表达式的计算规则。对于逻辑表达式“i++==1&&(++j==3||k++==3)”,首先判断“i++==1”,由于i初值为1,“i++==1”为真,同时i加1值为2。由于第一项为真,对于“&&”运算符,结果取决于后一项“(++j==3||k++==3)”。而逻辑表达式“(++j==3||k++==3)”计算时,首先判断“++j==3”,由于j初值为2,++j后j值为3,“++j==3”为真,对于“||”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k++==3”并没有进行判断,k++也未执行,k仍是初值3,输出结果应该是233。正确选项是D。

59.C解析:本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Argc中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定argv[0]存放命令字字符串,argv[1]用来存放第一个参数的字符串,argv[2]用来存放第2个参数的字符串,依此类推。题中argc的值是2,执行完-argc后为1,输出argv[1],此数组存在第一个参数的字符串ABCDEFGHIJKL。

60.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。

61.B

62.A

63.A\n本题考查了多重for循环。当(i*j)>3时,跳出循环,本题中i=1,j=3,i*J后值为3,所以执行下边语句:m*=i+j,也可写成m=m*i+j,这时要注意优先级,所以m的值为6。

\n

64.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

65.A

66.B

67.C本题考查do-while循环,在fun函数中,首先定义了静态变量i=0,do-while循环要实现的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不变的规则重新给b数组赋值。在主函数中,通过调用fun函数,按上面的规则对数组a重新赋值,最后输出数组a。

68.B解析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项C不符合数组定义形式,数组名后应加上“[]”;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表示对应字符的\u3000ASCII码,所以选项B是正确的。

69.B

70.D系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。选项D属于系统软件。选项A、B、C属于应用软件。故选D选项。

71.D在表达式a*b+d-c中,double的类型最高,C语言中,由低类型自动向高类型转换,所以最后的结果一定是double型。

72.A【答案】:A

【知识点】:实体完整性与候选关键字

【解析】:在满足数据完整性约束的条件下,一个关系可以有一个或多个候选关键字,但至少有一个候选关键字,故选A。

73.B

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

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

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

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

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

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

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

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

75.C

76.B语句voidfun(char**P)中的形参是一个指向指针的指针,在调用函数fun(a)后,指针数组a加1,

77.D根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,因此本题中度为2的结点为l一1=0个,据此可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即深度为7,选择D)。

78.A循环语句中输出o,i为。循环结束,执行循环条件后i为l,输出1,所以选择A)。

79.B

80.A解析:VisualFoxPro就是一种关系数据库管理系统,一个“表”就是一个关系,一个关系就是一个二维表。关系数据库管理系统可管理若干个二维表。

81.

82.

【解析】要把字符串str中ASCⅡ码值为偶数的字符删除,需要判断字符串str中每一个字符的ASCⅡ值,将ASCⅡ码值为奇数的字符放入字符串t中,ASCⅡ码值为偶数的字符不予处理。最后为新的字符串t加上结束符。

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

一、单选题(20题)1.若已知一个栈的入栈序列是1,2,3,......,n,其输出序列为p1,p2,p3,..,pn,若p1=n-1,则pi可能为()

A.nB.n-iC.n-i+1D.不确定

2.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

3.数据的不可分割的基本单位是()。

A.元素B.结点C.数据类型D.数据项

4.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}

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

5.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

6.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

7.以下程序的输出结果是

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;}

main()

{printf("%ld\n",fun(3));}

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

8.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

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

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

10.下列说法中错误的是A.A.只能在循环体内使用break语句

B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C.在while和do…while循环中,continue语句并没有使整个循环终止

D.continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

11.有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(“%d\n”,m);}intf(intx){returnx*2;}程序的运行结果是()。

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

12.a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是()

A.'a'&&'b

B.a<=b

C.ab+c&&b-c

D.!((a<b)&&!c1)

13.在单链表中,增加头结点的目的是()。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

14.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

15.则以下函数调用语句错误的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);

16.下列语句组中正确的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

17.在堆栈中存取数据的原则是。A.先进先出B.后进先出C.先进后出D.随意进出

18.下列不属于C语言关键字的是()。A.A.default

B.register

C.enum

D.external

19.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串

A.12B.14C.18D.24

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

A.无直接前趋

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

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

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

二、2.填空题(20题)21.下面程序的输出是【】。

main()

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

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

22.已知字母A的ASCⅡ码为65。以下程序运行后的输出结果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

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

}

23.以下说明语句中,【】是结构体类型名。

typedefstruct

{intn;

charch[8];

}PER;

24.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。

structnode

{chardata;

structnode*next;}a,b

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

voidfun(ints[])

{inti;

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

printf("\n\n");

}

main()

{inta[3][4]={{99,2},{3,4,5},{6,7,8}};

fun(a[0]);

}

26.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

27.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。

28.诊断和改正程序中错误的工作通常称为【】。

29.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

30.一张3.5英寸软盘大约能存储140万个ASCⅡ字符,若存放汉字大约能存放【】个。

31.面向对象的模型中,最基本的概念是对象和______。

32.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

33.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

34.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

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

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

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

37.以下函数fun用于求两个整数a和b的最大公约数。

fun(a,B)

inta,b;

{inti,j,m,n;

if(a>B)

{m=a;a=b;【】;}

i=a;j=b;

while((n=【】)!=0)

{j=i;i=【】;}

return(i);

}

38.设有以下定义和语句,则*(*(p+2)+1)的值为【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

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

main()

{charb[]="Hello,you";

b[5]=0;

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

}

40.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

三、1.选择题(20题)41.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}

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

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

43.软件开发模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

44.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表

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

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

46.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

47.以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

48.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

49.下面程序的输出是______。main(){intx=3,y=6,a=0;,while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

50.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

51.设有下列二叉树:对此二叉树前序遍历的结果为()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

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

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

53.在下列字符序列中,合法的标识符是()

A.P12&.aB.stud_100C.$water.12D.88sum

54.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其输出为______。

A.不确定B.编译错误C.gD.输出null字符

55.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",a|b);}

A.66B.98C.bD.B

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

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

57.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。

A.charstr[]="string";c=str;

B.scanf("%s",C);

C.c=getchar();

D.charstr[]="string";strcpy("C,str")

58.有以下程序:main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k):}程序运行后的输出结果是()。

A.123B.234C.223D.233

59.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf"\n");}假定以上程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROGABCDEFGHIJKL↓,则输出结果为______。

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

60.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

四、选择题(20题)61.

62.下列语句中,正确地执行当i等于5时执行一些语句的条件语句是()。

A.if(i==5)B.ifi=5thenC.ifi=5D.ifi==5then

63.有以下程序:

#include<stdio.h>

main()

{inti,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j>3)break;

m*=i+j;

}

}

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

}

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

A.m=6

B.m=2

C.m=4

D.m=3

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

65.

66.

67.下列程序的输出结果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

68.以下能正确定义一维数组的选项是()。

A.

B.

C.

D.

69.

70.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是():

A.学生成绩管理系统B.ERP系统C.办公自动化系统D.UNIX系统

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

72.在满足实体完整性约束的条件下()。

A.一个关系中应该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

73.

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

75.

76.有以下程序:

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

A.MtemoonB.AftemoonC.MorningD.orning

77.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

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

78.若变量已正确定义,有以下程序段其输出结果是()。

A.0,1B.0,0C.1,1D.程序进入无限循环

79.

80.关系数据库管理系统所管理的关系是()。A.若干个二维表B.一个DBF文件C.一个DBC文件D.若干个DBC文件

五、程序改错题(1题)81.改正下列程序中不正确的语句。

main()

{inta;

scanf(“%d”,a);if(a=1)printf(“One\n”);}

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将str所指字符串中ASCⅡ值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若str所指字符串中的内容为aBcdef9789,其中字符8的ASCⅡ码值为偶数……字符8的ASCⅡ码值为偶数……都应当删除,其他依此类推。最后t所指的数组中的内容应是ace979。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D

2.A数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。故答案为A选项。

3.D

4.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。

5.C选项A是先将a的值赋给变量b,再将变量b的值赋给变量c,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于c选项,表达式a=c的值为1,再求表达式b=c的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给e,故选择C选项。

6.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

7.A解析:该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3s=3-fun(2);第二次调用时:fun(2)n=2s=2返回第一次调用后,s=3-2=1。

8.C在C语言中,二维数组的名字表示的是二维数组的地址,表达式*(W+1)表示的是二维数组的第一行的第二个元素。在其前面再加上*(*(w+1))就是错误的表达式。

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

10.A解析:只能在循环体内和switch语句体内使用break语句,当break出现在循环体中的switch语句体时,其作用是跳出该switch语句体。当break出现在循环体中,但不在switch语句体中时,则在执行break后,跳出本层循环体。continue语句的作用是,跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

11.A第1次调用为m=f(f(f(1))),第2次调用为m=f(f(2)),第3次调用为m=f(4),即返回值为8。故本题答案为A选项。

12.D

13.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

14.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;

表示逻辑条件。

15.DD选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

16.BA选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

17.C

18.Dregister声明寄存器变量enum声明枚举类型default开关语句中的“其他”分支

19.B

20.D

21.66解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]

22.67G67G解析:根据题意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即为字母G的ASCⅡ码值。程序要求按十进制形式输出a,按字符形式输出b,所以结果为67G。

23.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

24.a.next=aba.next=ab解析:选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。

25.9920O345067

26.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

27.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。

28.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

29.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第—空应填:str[i],第二空应填str[i+1]最终打印输出得到的字符串str,所以第三空应填'%s',str。

30.70万70万

31.类类

32.关系关系

33.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。

34.tc

35.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。

36.前件前件

37.b=mj%i.nb=m\r\nj%i.\r\nn解析:函数中的变量i和j分别存放两个形参的最小数和最大数,在语句i=a和j=b执行之前,要将a和b分别变为最小数和最大数,当a>b时,程序使用中间变量将两者交换,所以题中第—个空中应当填写“b=m”;为求两个整数的最大公约数,程序的where循环条件必须为j整除i成立,所以题中第二个空中应当填写“j%i”;程序要通过i的值返回最大公

温馨提示

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

评论

0/150

提交评论