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

下载本文档

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

文档简介

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

一、单选题(20题)1.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

2.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

3.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

4.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。

A.11,11B.29,29C.26,29D.121,121

5.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

6.程序运行后的输出结果是()。A.3B.4C.5D.6

7.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

8.若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

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

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

10.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是A.A.45B.20C.25D.36

11.若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

12.以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入的正确选项是

abs(intx)

{if(x>=0)returnx;

elsereturn-x;}

main()

{inty,z,(*p)(intx)=abs;

scanf("%d",&y);

z=(*p)(y);

;}

A.printf("%d%d\n",&p,z)

B.printf("%d%d\n",p,z)

C.printf("%d%d\n",*p,z)

D.printf("%d%d\n",p,*z)

13.程序中头文件typel.h的内容是:#defineN5#defineM1N*3程序如下:#include“typel.h”#defineM2N*2main(){inti;i=M1+M2;Printf(“%d\n”,0;}程序编译后运行的输出结果是:

A.10B.20C.25D.30

14.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

15.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。

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

16.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序运行后的输出结果是()。

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

17.

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

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

18.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化

19.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

20.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

二、2.填空题(20题)21.已有定义如下:

structnode

{

intdata;

structnode*next;

}*p;

以下语句调用malloc函数,使指针p指向一个具有stmctnode类型的动态存储空间。

请填空。

p=(structnode*)malloc();

22.通常将软件产品从提出、实现、使用维护到不再使用的过程称为【】。

23.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

24.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

25.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,b);

}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

27.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\n,p+9);

}

28.以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。

doublefun(intn)

{

doubles=0.0,fac=1.0;inti;

for(i=1,i<=n;i++)

{

fac=fac______;

s=s+fac;

}

returns;

}

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

intk=0;

voidfun(intm)

{m+=k;k+=m;

printf("m=%dk=%d",m,k++)

}

main()

{inti=4;

fun(i++);

printf("i=%dk=%d\n",i,k);

}

30.软件结构是以【】为基础而组成的一种控制层次结构。

31.fun1函数的功能是将3个整数按由大到小的顺序调整后依次放入a、b、c3个变量中,a中放最大数,fun2函数的功能是交换两个变量中的值。补足所缺语句。

fun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

fun1(int*p1,int*p2,int*p3)

{if(*p3>*p2)fun2(*P2,*p3);

if(*p1<*p3)fun2(______);

if(*p1<*p2)fun2(______);

}

main()

{inta,b,c;

scanf("%d%d%d",&a,&b,&c);

fun1(&a,&b,&c);

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

}

32.一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析与研究阶段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结构设计属于数据库设计的【】阶段。

33.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

35.下面程序的输出是【】。

main()

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

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

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

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

38.软件是程序、数据和【】的集合。

39.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

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

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

{for(j=0;j<30++)

______;

}

}

40.设a、b、c为整数,且a=2、b=3、c=4,则执行完以下语句后,a的值是【】。

a*=18+(b++)-(++c);

三、1.选择题(20题)41.以下数组定义中不正确的是_______。

A.inta[2][3];

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

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

42.执行下面程序段的结果是()。intx=23;do{printf("%2d",x--);}while(!x);

A.输出321B.输出23C.不输出任何内容D.陷入死循环

43.已知下面的程序段,正确的判断是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序错误,不允许嵌套定义B.X=93C.X=81D.程序错误,宏定义不允许有参数

44.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

45.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于5的整数B.大于0且不等5的整数C.大于0或等于5的整数D.小于5的整数

46.不合法的main函数命令行参数表示形式是______。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

47.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件—组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数。请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if(______)printf("%d",i);}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

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

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

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

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

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

49.阅读如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

输入后输出结果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

50.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

51.已有定义int(*q)(),指针q可以()。

A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型

52.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

53.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

54.设有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()

A.$8B.@10C.$9D.@9

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

56.在深度为5的满二叉树中,结点的个数为

A.32B.31C.16D.15

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

A.在同一C程序文件中,不同函数中可以使用名字相同的变量

B.在main()函数体内定义的变量是全局变量

C.形参是局部变量,函数调用完成即失去意义

D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用

58.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

59.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。

A.12B.15C.16D.20

60.下列特征中不是面向对象方法的主要特征的是()。

A.多态性B.继承C.封装性D.模块化

四、选择题(20题)61.有以下程序:

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

A.16B.1C.32D.0

62.

63.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:

该语句所表示的含义是()。

A.

B.

C.

D.

64.

65.

66.

67.有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是()

A.变量a的地址

B.变量b中的值

C.变量a中的值

D.变量b的地址

68.

69.有以下程序段程序的输出结果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

70.

有以下程序:

main

{inti,n=0:

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

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

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

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

71.

72.以下程序中函数sCmp的功能是返回形参指针sl和s2所指字符串中较小字符串的首地址。

若运行时依次输入:abCd、abba和abC三个字符串,则输出结果是()。

A.abCdB.abbaC.abCD.abCa

73.有以下程序程序运行后的输出结果是()。A.24B.28C.32D.36

74.

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

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

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

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

77.有以下程序:

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

A.有运行错误B.输出ll.10C.输出l2.10D.输出21.10

78.

79.

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已在主函数中放入结构体数组s中,请编写函数fun(),其功能是把低于平均分的学生记录放入b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{ charnum[10]; doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}voidmain(){ STRECs[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf(“The%dstudentdatawhichislowerthan%7.3f:\n”,n,ave); for(i=0;i<n;i++)<p=""></n;i++)<> /*输出成绩低于平均分的学生记录*/ printf(“%s%4.1f\n”,h[i].num,h[i].s); printf(“\n”);}

参考答案

1.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

2.B

3.C

4.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。题目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,经计算可得29。“S(j+k+2)=j+k+2*k+j+2/j+k+2”,经计算可得29。因此输出为29,29。故本题答案为B选项。

5.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

6.B[解析]&按位与,如果两个相应的二进制位都为1.则该位的结果值为1.否则为0.按位或两个相应的二进制位中只要有一个为1.该位的结果值为1.2的二进制为0000010.4的二进制为000000所以做或运算结果为0000110.该数与5即00000101做与操作结果为0000100.即4.

7.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

8.A解析:p+i是数组s的第i+1行的首地址,而*(p+i)则是数组第i+1行第1列的元素的地址,*(p+i)+j则是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是数组元素s[i][j]的值。注意:通过建立一个指针数组来引用二维数组元素。

9.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

10.C解析:统计1~9九个数中的奇数和,此题考察指向数组的指针,C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。

11.A符号<>不是C语言中的运算符,所以不能替代。

12.B解析:考查函数指针的使用方法。可以使用函数指针来调用函数。调用形式为:(*指针变量)(实参表列)。

13.C解析:编译预处理时,用“typel.h”中的内容替代命令#include“typel.h”。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即i=25,所以最后输出的i的值为25。

14.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。

15.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。

16.Bfun函数的功能是获取2个数的平均值,注意平均值是整型数,小数会被截断。调用函数“fun(2*4,fun(5,6))”相当于调用函数“fun(8,5)”,平均值是6。故本题答案为B选项。

17.B

\n本题考查结构体指针变量的赋值方法,要把结点b连接到结点;l的后面,必须把b的地址给a的next指针。故8正确。

\n

18.C栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来完成,因此本题答案为c)。

19.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

20.A

21.sizeof(structnode)或4sizeof(structnode)或4解析:本题考核的知识点是动态存储分配函数malloc()的用法。C标准规定malloc()函数返回值的类型为void*,函数的调用形式为:malloc(size)。要求aize的类型为unsignedint,所以该空格处应该填sizeof(structnode)或4。

22.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期都属于软件生命周期,一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等。

23.数据存储数据存储

24.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

25.1B1B解析:从键盘输入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在输出时均需要把a,b转化为字符型,因此输出为1B。

26.1515解析:s=f(aa,5)=f(aa,4)+a[4]=f(aa,3)+a[3]+a[4]=f(aa,2)+a[2]+a[3]+a[4]

=f(aa,1)+a[1]+a[2]+a[3]|a[4]=0+a[0]+a[1]+a[2]+a[3]+a[4]=15。

27.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

28./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函数中首先定义了两个double型的变量s和fac,并给它们赋初值为0.0和1.0,在函数中s和fac的作用是存放和以及要加到的那一项的值。通过分析可知,第i项的值可以由第i-1项的值得到,即第i项是第i-1项的值除以i。可见横线处应添“/i”或与它等价的表达式。

29.m=4k=4i=5k=5m=4k=4i=5k=5解析:main()函数首先定义了1个变量i,并初始化为4。然后用表达式i++的值为实参调用函数fun(),因为后缀”表达式的值为增1之前的值,故此时传递给函数的参数m值为4。fun()函数中,首先让形参m自增k,由于此时k还是0,所以m不变,然后让k自增m,执行后k的值和m相同为4。最后fun()函数输出m和k廿的值,两个值都是4,故首先输出了“m=4k=4”,输出完后,k自增1(k变为5)。fun()函数执行完毕,返回main()函数中,此时i会被自增1变为5,故接着又输出的i和k的值都是5。故最终输出结果是“m=4k=4i=5k=5”。

30.模块模块

31.*p1*p3*p1*p2。*p1,*p3*p1,*p2。解析:本题考查的知识点有3个,①指针变量作为形参,②函数的嵌套调用,③排序的基本方法。

32.系统设计系统设计解析:系统设计阶段是系统的具体设计过程,主要包括概念设计、逻辑结构设计、物理结构设计3个步骤。这3个不同层次上的设计过程,是把实体以及相互之间的联系转换为“数据”并落实于计算机中。

33.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。strcpy(t,s)函数的功能是把字符数组s所指字符串的内容复制到字符数组t所指的存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环.s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的存储空间中,然后输出字符数组t。

34.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

35.1212解析:本题首先通过第一个for语句把0~9(包含0和9)间的整数依次赋值给数组arr,第二个for语句用于实现将满足条件的数组元素与对应的下标值求和并累加,并用变量k保存。

36.JD

37.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。

38.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

39.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。

40.3232解析:a*=18+(b++)-(++c)即a=a*(18+(b++)-(++c)),++c的值为5,a=2*(18+3-5)=32。b++是先使用b的值在对b加1,++c是先对c加1再使用c的值。

41.D解析:一维数组的定义方式为:

类型说明符数组名[常量表达式];

选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。

42.B解析:x--是先使用x的值,后进行自减运算,所以输出的结果应当为23。

43.C解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

44.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

45.B解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于0且不等于5时将其打印出来。

46.C解析:main()函数可以带有参数,并且参数只能有两个,第一个参数类型为整型,用来记下命令行的参数个数;第二个参数为一个字符型指针数组,或字符型二级指针变量(指向一个数组,数组元素又是一个一级字符指针),其各个元素用来记下从命令行各参数字符中的首地址。故本题只有C选项不符合要求。

47.D解析:本题中需要填空的是for循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并与9取余为0即可满足本题的条件。

48.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

49.D解析:本题的功能是求出输入序列的最大值和最小值,并打印输出。

50.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

51.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。

52.B解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说得函数调用为函数的间接递归调用。所以,4个选项中选项B符合题意。

53.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

54.D

55.B解析:选项A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式。

在判断选项B)时首先应该建立这杆的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数。

选项C),执行表达式a=b后,将把变量b存储单元中的值赋给变量a,从而覆盖a中原有的值,但b中原有的值并不改变。

选项D),在C程序中,求余运算符“%”两边的类型均为整型数据。

56.B解析:二叉树有如下性质:深度为m的二叉树最多有2的m次方再减1个结点,也就是2m-1=25-1=32-1=31。由此可知答案为B。

57.B解析:本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就失去意义了,所以在同一个C程序文件中,不同的函数体中可以使用名字相同的局部变量。注意:在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其他函数所共用。它的有效范围为:从定义变量的位置开始到本源文件结束.

58.C2(n-1)

=2(5-1)=16

59.A解析:本题的考查点是宏定义。a++的形式应当先使用a值,然后a才进行自加1运算,所以程序在进行SUB()乘法运算的时候,仍取a,b的原值,最后输出的结果是12。

60.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。

61.B无符号整型变量a的值为8,二进制表示为00001000,右移3位后为00000001,即十进制的l,所以输出1。

62.B

63.C考查if语句的使用。整个语句都是以a<b为假设的,在a<b的情况下,如果c=d,则y=0;否则y=1。所以答案为选项C)。

64.C

65.A

66.C

67.C*c表示c间接指向的对象的地址,而**c是c间接指向的对象的值。在c=&b中,已经把b的地址存放在c里了,*c就指向了b的地址,b里存放的就是a的地址,那么**c应该是变量a的值,而且也可以用排除法排除选项A、B,由b=&a可知,这两个选项是同一个意思,变量b中的值就是变量a的地址,所以可以排除。故本题答案为C。

68.D

69.A本题中a>b的!条件不满足,因此不执行逗号表达式“a=b,b=-c;”的操作,而是执行“c=a”的操作,即c的值为10。’故本题答案为A)。

70.D

\ncontinue语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

\n

71.D

72.Bmain函数将输入的三个字符串存在二维数组str中,并通过两次streW函数调用,将最小的一个字符串复制到string中。abcd、abba、abc中最小的字符串为abba。

73.A第一次循环返回l2,第二次循环返回l2,累加结果为24。

74.D

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

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

77.Acalloe(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。s在函数fun()申请了内存空间,但是在调用fun()函数后会释放掉,因此,最后q指向NULL,因此运行是打印出错。答案为A选项。

78.A

79.A

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

81.(1)错误:if(strcmp((pstr+i),(pstr+j))>o)

正确:if(strcmp(*(pstr+i),*(pstr+j))>0)

(2)错误:*(pstr+j)=*P

正确:*(pstr+j)=p

【解析】变量pstr表示的是字符串数组的首地址,pstr+i表示的是字符串首地址偏移量为i处的地址。程序中要比较的是字符,因此,“if(strcmp((pstr+i),(pstr+j))>0)”应改为“if(strcmp(*(pstr+i),*(pstr+j))>0)”;根据程序可知,要交换的是字符串的首地址而不是字符串的内容,因此,“*(pstr+j)=*p”应改为“*(pstr+j)=P”。

82.doublefun(STREC*a,STREC*b,int*n){ inti,j=0; doubleav=0.0; for(i=0;i<=""p=""> av=av+a[i].s; av=av/N; /*求平均分*/ for(i=0;i<=""p=""> if(a[i].s<av)<p=""></av)<> b[j++]=a[i];/*将低于平均分的学生记录存入结构体数组b中*/ *n=j;/*传回低于平均分的学生人数*/ returnav;/*返回平均分*/}本题使用循环语句和条件判断语句来实现题目要求。第1个循环语句的作用是求出总分,然后求出平均分av。第2个循环语句的作用是将分数低于平均分的学生记录存入结构体数组b中。2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

2.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

3.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

4.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。

A.11,11B.29,29C.26,29D.121,121

5.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

6.程序运行后的输出结果是()。A.3B.4C.5D.6

7.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

8.若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为ints[2][3]={0},(*p)[3];p=s;

A.*(*(p+i)+j)B.*(p[i]+j)C.(p+i)+jD.(*(p+i))[j]

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

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

10.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是A.A.45B.20C.25D.36

11.若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是()。

A.ab+cB.ch=getcharC.a==b+CD.a++

12.以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入的正确选项是

abs(intx)

{if(x>=0)returnx;

elsereturn-x;}

main()

{inty,z,(*p)(intx)=abs;

scanf("%d",&y);

z=(*p)(y);

;}

A.printf("%d%d\n",&p,z)

B.printf("%d%d\n",p,z)

C.printf("%d%d\n",*p,z)

D.printf("%d%d\n",p,*z)

13.程序中头文件typel.h的内容是:#defineN5#defineM1N*3程序如下:#include“typel.h”#defineM2N*2main(){inti;i=M1+M2;Printf(“%d\n”,0;}程序编译后运行的输出结果是:

A.10B.20C.25D.30

14.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

15.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。

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

16.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序运行后的输出结果是()。

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

17.

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

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

18.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化

19.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

20.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

二、2.填空题(20题)21.已有定义如下:

structnode

{

intdata;

structnode*next;

}*p;

以下语句调用malloc函数,使指针p指向一个具有stmctnode类型的动态存储空间。

请填空。

p=(structnode*)malloc();

22.通常将软件产品从提出、实现、使用维护到不再使用的过程称为【】。

23.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

24.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

25.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,b);

}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

{intaa[5]=(1,2,3,4,5),s;

s=f(aa,5);printf("%d\n",s);

}

27.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%x\n,p+9);

}

28.以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。

doublefun(intn)

{

doubles=0.0,fac=1.0;inti;

for(i=1,i<=n;i++)

{

fac=fac______;

s=s+fac;

}

returns;

}

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

intk=0;

voidfun(intm)

{m+=k;k+=m;

printf("m=%dk=%d",m,k++)

}

main()

{inti=4;

fun(i++);

printf("i=%dk=%d\n",i,k);

}

30.软件结构是以【】为基础而组成的一种控制层次结构。

31.fun1函数的功能是将3个整数按由大到小的顺序调整后依次放入a、b、c3个变量中,a中放最大数,fun2函数的功能是交换两个变量中的值。补足所缺语句。

fun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

fun1(int*p1,int*p2,int*p3)

{if(*p3>*p2)fun2(*P2,*p3);

if(*p1<*p3)fun2(______);

if(*p1<*p2)fun2(______);

}

main()

{inta,b,c;

scanf("%d%d%d",&a,&b,&c);

fun1(&a,&b,&c);

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

}

32.一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析与研究阶段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结构设计属于数据库设计的【】阶段。

33.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

35.下面程序的输出是【】。

main()

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

for(i=0;i,10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

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

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

38.软件是程序、数据和【】的集合。

39.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

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

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

{for(j=0;j<30++)

______;

}

}

40.设a、b、c为整数,且a=2、b=3、c=4,则执行完以下语句后,a的值是【】。

a*=18+(b++)-(++c);

三、1.选择题(20题)41.以下数组定义中不正确的是_______。

A.inta[2][3];

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

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

42.执行下面程序段的结果是()。intx=23;do{printf("%2d",x--);}while(!x);

A.输出321B.输出23C.不输出任何内容D.陷入死循环

43.已知下面的程序段,正确的判断是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序错误,不允许嵌套定义B.X=93C.X=81D.程序错误,宏定义不允许有参数

44.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

45.有以下程序:#include<stdio.h>main(){intx;scanf("%d",&x);if(x<=0);elseif(x!=5)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于5的整数B.大于0且不等5的整数C.大于0或等于5的整数D.小于5的整数

46.不合法的main函数命令行参数表示形式是______。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

47.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件—组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数。请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if(______)printf("%d",i);}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

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

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

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

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

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

49.阅读如下程序段#include"stdio.h"main(){intx,a,b;scanf("%d",&x);a=b=x;for(;x!=0;){if(x<b)b=x;if(x>a)a=x;scanf("%d",&x);}printf("a=%d,b=%d\n",a,b);}

输入后输出结果是

A.a=7569,b=789B.a=5,b=365C.a=7,b=789D.a=7569,b=5

50.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

51.已有定义int(*q)(),指针q可以()。

A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型

52.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

53.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

54.设有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()

A.$8B.@10C.$9D.@9

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

56.在深度为5的满二叉树中,结点的个数为

A.32B.31C.16D.15

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

A.在同一C程序文件中,不同函数中可以使用名字相同的变量

B.在main()函数体内定义的变量是全局变量

C.形参是局部变量,函数调用完成即失去意义

D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用

58.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

59.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。

A.12B.15C.16D.20

60.下列特征中不是面向对象方法的主要特征的是()。

A.多态性B.继承C.封装性D.模块化

四、选择题(20题)61.有以下程序:

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

A.16B.1C.32D.0

62.

63.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:

该语句所表示的含义是()。

A.

B.

C.

D.

64.

65.

66.

67.有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是()

A.变量a的地址

B.变量b中的值

C.变量a中的值

D.变量b的地址

68.

69.有以下程序段程序的输出结果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

70.

有以下程序:

main

{inti,n=0:

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

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

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

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

71.

72.以下程序中函数sCmp的功能是返回形参指针sl和s2所指字符串中较小字符串的首地址。

若运行时依次输入:abCd、abba和abC三个字符串,则输出结果是()。

A.abCdB.abbaC.abCD.abCa

73.有以下程序程序运行后的输出结果是()。A.24B.28C.32D.36

74.

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

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

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

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

77.有以下程序:

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

A.有运行错误B.输出ll.10C.输出l2.10D.输出21.10

78.

79.

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已在主函数中放入结构体数组s中,请编写函数fun(),其功能是把低于平均分的学生记录放入b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{ charnum[10]; doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}voidmain(){ STRECs[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf(“The%dstudentdatawhichislowerthan%7.3f:\n”,n,ave); for(i=0;i<n;i++)<p=""></n;i++)<> /*输出成绩低于平均分的学生记录*/ printf(“%s%4.1f\n”,h[i].num,h[i].s); printf(“\n”);}

参考答案

1.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

2.B

3.C

4.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替

温馨提示

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

评论

0/150

提交评论