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

下载本文档

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

文档简介

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

一、单选题(20题)1.在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。

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

2.若有定义“inta=5,b=7;”,则表达式a%-(b%2)运算后,a的值为()。

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

3.

4.下面程序运行的结果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

5.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

6.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

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

8.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的运行结果是()。

A.1,1,2,0B.0,0,0,3C.编译有错D.0,1,2,0

9.

10.

11.若希望下列的程序运行后输出25,程序空白处的正确选项是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

12.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

13.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

14.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序运行后的输出结果是()。

A.DB.BC.CD.A

15.若有以下程序段,w和k都是整型变量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇则不能与上面程序段等价的循环语句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

16.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序运行后的输出结果是()。

A.0101B.1000C.1100D.1010

17.下列关于函数的叙述中正确的是()。A.A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

18.已知a、b、c为整型变量,若从键盘输入5<空格>6<空格>7<回车>,使a的值为5,b的值为6,c的值为7,则下列选项中正确的输入语句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

19.设有以下语句charchl,ch2;scanf("%c%C",&chl,&ch2);若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔

20.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

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

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

d[j]=0;

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

main()

{inti,j,row=0,colum=0,max,

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

max=a[0][0];

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

for(j=0;j<4;j++)

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

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

main()

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

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

25.执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。

26.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

28.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

29.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

30.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

31.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

32.下面程序的运行结果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

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

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

36.下列语句能循环______次。

ints=12;

while(s);

--s;

37.结构化设计主要分为系统设计和模块设计,【】的任务是决定系统的模块结构。

38.软件工程研究的内容主要包括:【】技术和软件工程管理。

39.以下程序的功能是:输出x、y、z三个变量中的最大值,请填空。

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

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

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

三、1.选择题(20题)41.

执行下列程序中的输出语句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

42.以下正确的说法是

A.定义函数时,形参的类型说明可以放在函数体内

B.return后边的值不能为表达式

C.如果函数值的类型与返回值类型不一致,以函数值类型为准

D.如果形参与实参类型不一致,以实参类型为准

43.有以下程序main(){chara,b,C,*d;a='\';b=\\xbc';c='\0xab';d="\0127";princf("%c%c%c%c\n",a,b,c,*D);}编译时出现错误,以下叙述中正确的是

A.程序中只有a='\';语句不正确

B.b='\xbc';语句不正确

C.d="\0127":语句不正确

D.a='\';和c='\0xab';语句都不正确

44.需求分析最终结果是产生

A.项目开发计划B.需求规格说明书C.设计说明书D.可行性分析报告

45.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

46.下列选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0’'-'0'

47.在C语言中,引用数组元素时,其数组下标的数据类型允许是()

A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式

48.以下选项中,正确运用指针变量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;scanf("%d",i);*f=10.5;

C.chart='m',*C=&t;

D.long*L;*C=&t;L='0';

49.

下列程序的运行结果是()。

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

50.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式正确的是(注:□代表空格字符)()。

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>

D.10X<回车>20□Y<回车>20Y<回车>

51.以下程序的输出结果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

52.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

53.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

54.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

55.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为

A.21B.78C.23D.28

56.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

57.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是()。

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

58.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

59.有以下函数定义:voidfun(intn,doublex){......}若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用语句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

60.以下叙述中不正确的是()

A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C中,外部变量的隐含类别是自动存储类别

D.在C中,函数形参可以说明为register变量

四、选择题(20题)61.(64)在单链表中,增加头结点的目的是()

A.方便运算的实现

B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性表的链式存储实现

62.

63.有以下程序:

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

A.2B.0C.元素ch[5]的地址D.字符y的地址

64.

65.

66.下列排序方法中,最坏情况下比较次数最少的是()。

A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序

67.设有以下语句:typedefstructTY{charC;inta{41;}CIN;

则下面叙述中正确的是()。

A.CIN是structTr类型的变量

B.TT是struct类型的变量

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

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

68.

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

A.软件测试B.概要设计C.软件维护D.详细设计

70.

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

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

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

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

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

72.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式

73.有以下程序:

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

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

74.以下程序段中,与语句:k=a>;b?(b>;c?1:O):0;功能相同的是()。

75.

76.

77.在黑盒测试方法中,设计测试用例的主要根据是()。

A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图

78.

有以下计算公式

若程序前面已在命令中包含math.h文件,不能够正确

计算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

79.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序执行后变量w中的值是()。A.5.21B.5C.5.0D.0.0

80.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的运行结果是

A.*7B.*3*5

C.*5D.*2*6

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

六、程序设计题(1题)82.下列程序定义了M×M的二维数组,并在主函数中赋值。请编写函数proc(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如,若a数组中的值为则返回主程序后s的值应为310。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D

2.A本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。

3.C

4.C解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。

5.D

6.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

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

8.C本题中“if(a=1)b=1”与“elsed=3;”之间多了语句“c=2;”,所以会出现else语句的位置错误的编译失败提示。故本题答案为C选项。

9.D

10.D

11.D要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i=4跳出,循环结束。

12.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

13.D解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。

14.D题干中,字符变量a、b、c、d都是大写字母字符。C语言中,大写字母的ASCII值是按照字母顺序连续递增的,所以a小于b,b小于c,c小于d。则表达式“x=(a<b)?a:b”等价于“x=a”;“x=(x>c)?c:x”等价于“x=(a>c)?c:a”,等价于“x=a”;“x=(d>x)?x:d”等价于“x=(d>a)?a:d”,等价于“x=a”;所以程序输出x的值为A。故本题答案为D选项。

15.C当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择c选项。

16.D函数fun的作用是求一个十进制数的二进制数。通过辗转相除法获取这个整数的二进制数。因此(10)10=(1010)2。故本题答案为D选项。

17.B在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main函数不能被调用,选项A)错误;C程序从main函数开始执行,当main数执行完毕时,整个程序就结束了。C程序的执行必须从main函数开始,选项C)选项错误;函数不能嵌套定义,选项D)错误。

18.C解析:通过scanf()函数从键盘读入数据时,接收参数的使用变量的地址值,所以选项A和B是错误的。选项D要求输入时以逗号间隔,故按题目要求的输入方式不能正确读取到3个数,也是错误的。所以正确答案是C。

19.Bscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf("%c%c",&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。

20.B关系具有以下7个性质。①元组个数有限性:二维表中元组的个数是有限的。②元组的唯一性:二维表中任意两个元组不能完全相同。③元组的次序无关性:二维表中元组的次序,即行的次序可以任意交换。④元组分量的原子性:二维表中元组的分量是不可分割的基本数据项。⑤属性名唯一性:二维表中不同的属性要有不同的属性名。⑥属性的次序无关性.二维表中属性的次序可以任意交换。⑦分量值域的同一性:二维表属性的分量具有与该属性相同的值域,或者说列是同质的。满足以上7个性质的二维表称为关系,以二维表为基本结构所建立的模型称为关系模型。本题答案为B选项。

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

22.max=10row=2colum=1

23.11解析:本题是一个陷阱题。在if语句的判断表达式中,使用的不是逻辑运算符==而是赋值运算符=,使该表达式返回的结果正好相反。如果是c==a,则结果为假。但是c=a则是将a赋给c,且表达式的结果是赋值之后的c的值,因此结果为1是真.故最后输出c的值1。

24.101091101091解析:for(表达式1;表达式2:表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环:第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。

25.6

26.doublemax或externdoublemaxdoublemax或externdoublemax解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递.函数声明的一般格式为:类型标识符函数名(类型标识符形参,…);这些信息就是函数定义中的第一行的内容。本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。

27.efghefgh解析:本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”把P的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址,最后输出,指向的字符中,是“efgh”。

28.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

29.概念(或概念级)概念(或概念级)

30.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第13空应填*s++;如果某个字符不是空格,则必须判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第14空应填flag=0或*(s-1)='';最后一个空格需填写的是返回的单词的个数,即num。

31.fopen(fname"w")chfopen(fname,'w')\r\nch解析:数组fname用来存放终端输入的一个文件的文件名;文件使用方式'w'是为写而打开文本文件。若文件不存在,系统将用在fopen调用中以指定的文件名建立一个新文件;若存在,则覆盖原有内容;fputs(ch,fp)的功能是将字符ch写到文件指针fp所指的文件中去。

32.babcdbabcd解析:c语言中\\0表示字符串的结束。程序将D指针指向字符串“AbabCDcd”的首地址,循环开始后,若指针当前不是指向字符串结束标志位,则进入循环体。循环中每次检验字符串中字母是否在a与z之间,若满足则将当前值赋于数组a,最后给数组添加字符结束标志。此程序可以筛选出字符串中的小写字母。

33.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

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

35.55解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空.输出语句不在for循环体内,所以在循环执行完毕后才输出s的值.s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

36.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

37.系统设计系统设计解析:结构化设计主要分为系统设计和模块设计。系统设计决定系统的模块结构,模块设计具体考虑每个模块内部的算法、模块输入、输出及模块功能。

38.软件开发

39.x>yz>u

40.ABCDBCDCDD

41.C解析:本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。

42.C解析:选项A)中定义函数时,形参的类型说明应该放在形参表列内说明。老版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1行的括号内指定形参的类型,而在括号外单独指定。选项B)中return后面的值可以是一个表达式。选项D)中实参与形参的类型应相同或赋值兼容。如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,以形参类型为准。

43.D解析:给字符变量赋值只能赋一个字符,包括转义字符,语句“a=\'\\\'”是错误的,因为“\\”是转义字符,应该用“\\\\”来表示,语句“B=\'\\xbc\';”是正确的,它是将一个用十六进制表示的转义字符赋给一个字符型变量,故选项B不为所选;语句“c=\\0xab;”是正确的,反斜线后的十六进制只可由小写x开头,不能用Ox。语句“d='\\0127';”是正确的,可以给字符型指针变量赋一个字符串,其作用是让该指针变量指向该字符串,故选项C不正确。所以,D选项为所选。

44.B解析:本题考核软件工程中的需求分析环节。需求分析应交付的主要文档就是需求规格说明书。

45.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

46.B解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASCII码值再参与整数运算。字符'1'对应的ASCII码值是49,字符,'0'对应的ASCII码值是48,字符'\\0'是字符串结束标识符NULL,其对应的ASCII码值是0。

47.C解析:C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为数组名[下标],下标可以是整型常量或整型表达式。

48.D解析:选项A定义了一个整型变量i,并且初始化让它指向NULL,接着通过scarnf()函数,改变i指向的存储空间的值,选项A中首先定义了整型指针变量i并初始化为NULL,即表示指针i不指向任何存储单元,即此时还没有为i在内存中开辟存储单元,而在scanf()函数中第二个参数是地址参数,显然在这里i不表示地址,所以下面的scanf('%d',i)语句是不正确的,故选项A不正确。选项B定义了一个实型指针变量f并初始化使它指向NULL,即还没有为f在内存中开辟存储单元,不能向*f代表的存储单元(不存在)中写数据,故选项B错误;选项C中首先定义了一个字符变量t并给它赋初值\'m\',然后定义一个字符型指针c并让它指向了变量t,这一部分正确,然后接着用了一个语句“*c=&t;”应该将该语句中c前的*去掉,故选项C运用指针变量不正确。选项D中的\'\\0\'是一个转移字符,称作“空值”,可以给指针变量L赋值。所以,4个选项中选项D符合题意。

49.C解析:逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。

表达式(x=3*y,x+1)中,第一个表达式x=3*y=3*5=15;第二个表达式x+1=16,但没有给x或y赋值,所以x还是等于15;第3个表达式x-1=15-1=14,所以y的值为14。

50.D解析:当从键盘输入字符,并且在格式说明中未制定宽度时,输入字符(包括空格符、回车符、Tab符)将按顺序赋予各输入项。也就是说,输入字符之间没有间隔符,所以选项D是正确的。

51.A解析:本题两次执行fun函数,第一次执行得f(3)=s=n-f(n-1)=3-f(2):第二次执行得s=2,通过传递返回值f(2)=2,所以s=3-2=1,即f(3)=1。

52.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

53.A解析:while循环的执行过程如下:(1)计算while后面圆括号中表达式的值.当值为非0时,执行步骤(2);当值为0时,执行步骤(4)。(2)执行循环体一次。(3)转去执行步骤(1)。(4)退出循环。在选项A)中,表达式(ch=getchar())!='N'表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环.所以选项A)为正确答案。

54.A解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。

55.A解析:通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。

56.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

57.A解析:选项B中d已经为地址,不应在加上求地址符号“&”,故选项B不正确;选项C中,a和b都为变量不是地址,应该在a和b之前加上求地址符号“&”,故选项C不正确:选项D中指针d所指向的存储空间的位置为变量c的值,不为地址,故选项D不正确,所以,4个选项中A为所选。

58.B解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。

59.C解析:函数调用的一般形式为:函数名(实参表列);,实参与形参的个数应相等,类型应一致,在调用函数时,不要指定其返回类型,对于返回类型为void的函数,不能作为赋值表达式的组成部分,所以选C。

60.C

61.A

62.D

63.A语句pc=eh;使得指针变量指向字符数组ch的首地址,即指向字符‘u’,则pc+5指向的是字符向后移动5位,指向字符‘z’。所以输出的$pc+5的值即为‘Z’。因此A选项正确。

64.B

65.B

66.D冒泡排序、简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。故答案为D选项。

67.D本题考查typcdef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。

68.A

69.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

70.C

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

72.C解析:在C语言中,引用数组元素时,其数组下标的数据类型可以是整型常量,也可以是整型表达式。

73.Dintm=1,n=2,*P=&m,。q=&Il,*r;即指针变量P指向m,指针变量q指向n,r=P;P=q;q=。;即通过指针变量r,将指针P和指针q的指向交换。因此最后输出1,2,2,1。

74.B条件表达式的含义是,如果表达式1成立,结果为表达式2的值,如果不成立为表达式3的值。所以题干中k的值这样取值:如果a>b且b>c,k值结果为1,如果a>b,且b<c则值为0。如果a<b,k值为0。也就是只要a>b与b>c中只要有一个条件不成立,k的值就为0,所以选择B选项。

75.B

76.B

77.B黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。

78.B

\n选项A、C、D分别用一个ifelse语句、两个if语句和条件表达式表达了计算公式的含义。

\n

79.C子函数fun1(doublea)的功能是返回a的平方值的整数部分。子函数fun2(doublex,doubley)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。

80.A本题考查C语言中对整数求余数运算。运算符“%”是两个数相除后取余数。分析本题的程序,main函数中的主体为一个do-while循环,该循环的终止条件为i==0。do-while循环内部起始为一个if语句,该语句包含一个if子语句,外层if语句的判断条件是i%3==1,表示i的取值范围为{1,4,7,11,…},内部if子语句的判断条件为i%5==2,表示i的取值范围为{2,7,12,…}。如果外层和内层的if语句的条件都满足,则执行语句printf('*%d',i);break;,该语句输出*i形式的结果并跳出do-while循环。如果两个if语句有一个条件不满足,则执行i++操作,继续执行do-while循环。i的初始值为5,只有满足两个if语句条件时才能够跳出do-while循环,即当i=7时,循环结束,输出结果为*7。

81.

82.

【解析】要求出数组周边元素的平方和,首先要找到二维数组所有的周边元素。二维数组的周边元素的特点为行下标或列下标为0或M一1。根据这个特点,找出二维数组中所有的周边元素,求出其平方和放在变量s中。最后将变量s返回到主函数中。

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

一、单选题(20题)1.在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。

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

2.若有定义“inta=5,b=7;”,则表达式a%-(b%2)运算后,a的值为()。

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

3.

4.下面程序运行的结果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

5.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

6.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

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

8.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的运行结果是()。

A.1,1,2,0B.0,0,0,3C.编译有错D.0,1,2,0

9.

10.

11.若希望下列的程序运行后输出25,程序空白处的正确选项是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

12.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

13.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

14.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序运行后的输出结果是()。

A.DB.BC.CD.A

15.若有以下程序段,w和k都是整型变量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇则不能与上面程序段等价的循环语句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

16.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序运行后的输出结果是()。

A.0101B.1000C.1100D.1010

17.下列关于函数的叙述中正确的是()。A.A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

18.已知a、b、c为整型变量,若从键盘输入5<空格>6<空格>7<回车>,使a的值为5,b的值为6,c的值为7,则下列选项中正确的输入语句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

19.设有以下语句charchl,ch2;scanf("%c%C",&chl,&ch2);若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔

20.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

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

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

d[j]=0;

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

main()

{inti,j,row=0,colum=0,max,

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

max=a[0][0];

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

for(j=0;j<4;j++)

if(max<a[i][j])

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%-5drow=%-3dcolum=%-3d\n",max,row,colum);

}

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

main()

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

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

25.执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。

26.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

28.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

29.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

30.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

31.以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenam\n");

gets(fname);

if((fp=【】==NULL)

{printf("Cannotopen\n");exit(0);}

printf("Enterdata\n");

while(ch=getchar()!='#')

fputc(【】,fp);

fclose(fp);

}

32.下面程序的运行结果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

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

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

36.下列语句能循环______次。

ints=12;

while(s);

--s;

37.结构化设计主要分为系统设计和模块设计,【】的任务是决定系统的模块结构。

38.软件工程研究的内容主要包括:【】技术和软件工程管理。

39.以下程序的功能是:输出x、y、z三个变量中的最大值,请填空。

main()

{intx,y,z,u;

printf("Enterx,y,x;");scanf("%d%d%d",&x,&y,&z);

if(【】)u=x;

elseu=y;

if(【】)u=z;

printf("u=%d",u);

}

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

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

三、1.选择题(20题)41.

执行下列程序中的输出语句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

42.以下正确的说法是

A.定义函数时,形参的类型说明可以放在函数体内

B.return后边的值不能为表达式

C.如果函数值的类型与返回值类型不一致,以函数值类型为准

D.如果形参与实参类型不一致,以实参类型为准

43.有以下程序main(){chara,b,C,*d;a='\';b=\\xbc';c='\0xab';d="\0127";princf("%c%c%c%c\n",a,b,c,*D);}编译时出现错误,以下叙述中正确的是

A.程序中只有a='\';语句不正确

B.b='\xbc';语句不正确

C.d="\0127":语句不正确

D.a='\';和c='\0xab';语句都不正确

44.需求分析最终结果是产生

A.项目开发计划B.需求规格说明书C.设计说明书D.可行性分析报告

45.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

46.下列选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0’'-'0'

47.在C语言中,引用数组元素时,其数组下标的数据类型允许是()

A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式

48.以下选项中,正确运用指针变量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;scanf("%d",i);*f=10.5;

C.chart='m',*C=&t;

D.long*L;*C=&t;L='0';

49.

下列程序的运行结果是()。

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

50.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式正确的是(注:□代表空格字符)()。

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>

D.10X<回车>20□Y<回车>20Y<回车>

51.以下程序的输出结果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

52.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

53.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch);

54.下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

55.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为

A.21B.78C.23D.28

56.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

57.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是()。

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

58.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

59.有以下函数定义:voidfun(intn,doublex){......}若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用语句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

60.以下叙述中不正确的是()

A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C中,外部变量的隐含类别是自动存储类别

D.在C中,函数形参可以说明为register变量

四、选择题(20题)61.(64)在单链表中,增加头结点的目的是()

A.方便运算的实现

B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性表的链式存储实现

62.

63.有以下程序:

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

A.2B.0C.元素ch[5]的地址D.字符y的地址

64.

65.

66.下列排序方法中,最坏情况下比较次数最少的是()。

A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序

67.设有以下语句:typedefstructTY{charC;inta{41;}CIN;

则下面叙述中正确的是()。

A.CIN是structTr类型的变量

B.TT是struct类型的变量

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

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

68.

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

A.软件测试B.概要设计C.软件维护D.详细设计

70.

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

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

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

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

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

72.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式

73.有以下程序:

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

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

74.以下程序段中,与语句:k=a>;b?(b>;c?1:O):0;功能相同的是()。

75.

76.

77.在黑盒测试方法中,设计测试用例的主要根据是()。

A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图

78.

有以下计算公式

若程序前面已在命令中包含math.h文件,不能够正确

计算上述公式的程序段是()。

A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);

B.y=sqrt(x)if(x<0)y=sqrt(0x);

C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);

D.y=sqrt(x>=0?x:0x);

79.有下列程序:intfunl(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=funl(x);b=funl(y);return(int)(a+h);}main{doublew;w=fun2(1.1,2.0),……}程序执行后变量w中的值是()。A.5.21B.5C.5.0D.0.0

80.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的运行结果是

A.*7B.*3*5

C.*5D.*2*6

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

六、程序设计题(1题)82.下列程序定义了M×M的二维数组,并在主函数中赋值。请编写函数proc(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如,若a数组中的值为则返回主程序后s的值应为310。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语

温馨提示

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

评论

0/150

提交评论