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

下载本文档

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

文档简介

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

一、单选题(20题)1.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

2.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是

A.69825B.63825C.6385D.693825

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上三种说法都不对

4.如有inta=11;则表达式(a/1)的值是()。

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

5.对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为()

A.并运算B.交运算C.差运算D.除运算

6.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序运行后的输出结果是()。

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

7.在软件设计中不使用的工具是()。

A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD图)

8.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={A,B,C,D,E};

C.char*S;S="ABCDE";

D.char*s;printf("%《",s);

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

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

10.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法

11.

12.

13.有以下程序:

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

A.abc+abc=defdef

B.abc+ABC=DEFdef

C.abcABCDEFdef

D.abcabcdefdef

14.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

15.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

16.A[N][N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

17.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

18.下列程序段中完全正确的是()。A.int*p;scanf(“%d”,&p);

B.int*p;scanf(“%d”,p);

C.intk,*p=&k;scanf(“%d”,p);

D.intk,*p;*p=&k;scanf(“%d”,p);

19.数据结构中,与所使用的计算机无关的是数据的()结构。

A.存储B.物理C.逻辑D.物理和存储

20.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()

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

二、2.填空题(20题)21.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。

22.对长度为10的线性表进行冒泡排序,对坏情况下需要比较的次数为______

23.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

24.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

25.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。

26.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

27.在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径至少执行一次。

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

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

29.函数sub的功能是根据下面近似分式求π的值。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请在下面的函数中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

30.函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数,且要求m>n。

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

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

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

32.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是【】方法。

33.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

34.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

36.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。

37.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

38.在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是【】。

39.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

40.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

三、1.选择题(20题)41.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是

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

42.数据的完整性是指数据的正确性、有效性和______。

A.可维护性B.独立性C.安全性D.相容性

43.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

44.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

45.假定当前盘符下有两个如下文本文件:文件名a1.txta2.txt内容123#321#则下面程序段执行后的结果为#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);

A.123321B.123C.321D.以上答案都不正确

46.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

47.若有以下说明和语句:intc[4][5],(*p)[5];p=C;能够正确引用c数组元素的是______。

A.p+1B.*(p+1)C.*(p+1)+3D.*(p[0]+2)

48.设有下列说明语句:strcutstr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

A.struct是结构体类型的关键字

B.st是结构体类型名

C.x、y、x都是结构体成员名

D.structstr是结构体类型名

49.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

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

51.下列程序运行后,输出结果是______。func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}

A.8,15B.8,16C.8,17D.8,8

52.以下数据结构中不属于线性数据结构的是______。

A.队列B.线性表C.二叉树D.栈

53.在使用程序流程图来表示算法时,菱形用来表示_______。

A.输入与输出B.子程序C.判断分支D.循环边界

54.有以下程序:#include<string.h>main(intargc,char*argv[]){inti,len-0;for(i=l;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行exabcdefgh3k44执行后输出的结果是

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

55.以下程序的输出结果是voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}

A.11.1B.12C.21.1D.1.1

56.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

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

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

58.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

59.设x=011050,则x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

60.有以下程序intx=3;do{printf("%d",x-=2);}while(!(--x));程序运行后的输出结果是()

A.1B.30C.1,-2D.死循环

四、选择题(20题)61.以下叙述中错误的是()。

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

B.函数可以返回地址值

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

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

62.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

63.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

64.

65.以下关于字符串的叙述中正确的是()。

A.C语言中有字符串类型的常量和变量

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

66.有以下程序

67.

有以下程序:

main

{inta=0,b=l0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出()。

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

68.

69.以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{

inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);

}

在下画线处应填入的内容是

A.i=pB.a[p]=a[i]

C.p=iD.p=j

70.

71.

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

A.编译程序B.操作系统C.教务管理系统D.汇编程序

73.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

74.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

75.有以下程序:

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

A.116B.8C.40D.4

76.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

77.

78.有以下程序

79.下面程序运行后的输出结果是()。

structabc

{

inta,b,c;

}

main()

{

structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

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

}

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

80.(49)按条件f对关系R进行选择,其关系代数表达式为()

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

\n

2.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“693

3.D解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项C中的说法也是错误的。综上所述,选项A、B与C中的说法都是错误的。

4.D

5.AA)【解析】关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。

6.C解析:z=x++是先把x的值1赋给z,所以z=1,然后再把x加1赋给x,x=2,++y后y又加1,所以y=3。

7.D【答案】:D

【知识点】:软件设计中使用的工具

【解析】:数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的。PAD图是问题分析图(ProblemAnalysisDiagram)的英文缩写,是在详细设计阶段用到的。系统结构图是对软件系统结构的总体设计的图形显示,是在概要设计阶段用到的。程序流程图是对程序流程的图形表示,故选D。

8.C选项A、B的空间不够;字符串存储要有结束符\0,且要占用一个空间,printf用来输出字符,不能输入字符串。

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

10.B解析:我们严格区分调试与测试,调试是已知有错误而来找错误,是被动的;测试有很多种,比如未发现错误但不能保证程序没错而来找BUG,还比如我们运行测试程序是否符合用户的要求,是主动的。所以答案是选项B。A、C、D都是具体的程序调试方法,而B是宏观的程序测试方法。测试有单元测试、集成测试、确认测试、系统测试。比如我们在进行单元测试时,发现程序有错误,我们再可以根据A、C、D的方法来找错误。

11.A

12.C

13.A题干中,函数fun的功能是:判断形参ch是否为大写字母,若是大写字母则改写成小写字母,其他字符不变。main函数中,通过while循环,调用fun函数,将字符数组s中的各个字符传入,将s中的大写字母改成小写字母,程序输出:abc+abc=defdef。本题答案为A选项。

14.D一个客户可以在多家银行办理业务,一家银行也有多个客户办理业务,因此,实体客户和实体银行之间的联系是多对多。本题选择D选项。

15.C

16.B

17.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

18.CA选项中,没有对指针进行初始化,属于无效指针,并且在“scanf(“%d”,&p);”中无须再进行取地址操作;B选项中,没有对指针进行初始化,属于无效指针;D选项中,语句“*p=&k;”书写错误,应为“P=&k;”。故本题答案为C选项。

19.C解析:数据结构是指数据以及他们之间的相互联系。其中数据的逻辑结构是指数据元素之间的逻辑关系,它与所使用的计算机无关:数据的物理结构,又称存储结构,是指数据结构在计算机中的表示,它包括数据元素的表示和元素的表示,其中数据元素之间的关系在计算机中有顺序存储结构和链式存储结构两种。因此C是正确答案。

20.B

21.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(叶旨针变量名)()。注:“类型标识符”为函数返回值的类型。

22.在最坏情况下冒泡排序法需要比较的次数为n(n-1)/2。

23.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。所以此题中输入数据的形式是5.04,c=3。

24.封装封装

25.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。

26.yearleap=1leap

27.白盒白盒解析:按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次:保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。

28.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

29.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果写为1/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实型。

30.p=p*ip=p/ip=p*ip=p/i解析:本题中,欲求p的值,需要先求m!,n!,(m-n)!,可分别用循环语句实现。

31.80。80。解析:p=a+2使指针p指向数组a的第三个元素,即a[2],(p+2)[3]使p再移动5个单位,则指向了数组元素a[7],它的值为80。

32.结构化设计结构化设计解析:在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是结构化设计方法。

33.求出数组元素平均值求出数组元素平均值解析:函数有一个数组形参a和一个整型形参n。函数首先用循环求数组a的前n个元素和,然后将和除以n。即求数组元素的平均值。

34.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。

35.HOWHOW解析:在scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符中,则不能使用scanf()数,所以本题中输入空格就返回了'\\0\\,s数组也就确定了,后面的输入就不再读入数组s中。

36.原型化原型化

37.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

38.rewindrewind解析:库函数rewind()的作用是使文件位置指针重新返回文件的开头,所以本题应该填rewind。

39.本题程序的流程是:让i;j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以s[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。\r\n\r\n

40.1020010200解析:本题考查的是混合运算。“(a/b<1)&&(a%b<1)”的运算顺序为:括号>算术运算符>关系运算符>逻辑运算符。其中a%b=10,a,b=0,所以a%b<1的值为0,a/b<1的值为1,故整个表达式的结果为0,所以输出的a,b,c的值为10200。

41.B解析:主函数中for循环执行两次,i=1和i=2。调用函数f(1),返回值为1,j=1;调用函数f(2),计算表达式f(n-1)+1的值时递归调用f(1),返回值为2,j=3。所以B为所选。

42.D解析:数据模型应该反映和规定本数据模型必须遵守的、基本的、通用的完整性约束条件。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。

43.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

44.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历,其遍历顺序应该为:访问根结点—,先序遍历左于树->先序遍历右子树。按照定义,先序遍历序列是ABDCEP,故答案为C。

45.A解析:本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。

46.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

47.D解析:p是指向一个一维数组的指针,选项A、B和C中都是地址,而非数组元素。选项D正确。

48.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字:structstr是结构体类型名;x、y、z都是结构体成员名:st是结构变量名。

49.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历,遍历顺序应该为:访问根结点->先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDCEF。

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

51.C

52.C解析:线性表、栈和队列所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,又称后进先出表(LastInFirstOut);队列是插入在一端进行,删除在另一端进行的线性表,又称先进先出表(FirstInFirstOut)。

53.C解析:美国国家标准化协会ANSI规定了一些常用的流程图符号,其中椭圆框表示起止框,方框表示处理框,菱形框表示判断分支,箭头表示流程线。

54.D解析:本题考核的知识点是带寥数的主函数的应用。主函数的第一个参数argc为整形参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为5,argv[0]指向字符串'ex',argv[1]指向参数字符串“abed”,argv[2]指向字符串“efg”,argv[3]指向参数字符串“h3”,argv[4]指向参数字符串“K44”。在main()函数中,for循环执行了2次,当i-1时,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此时len的值为4;当i=3时,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此时len的值为6;当i=5时,退出循环,故最后输出的len的住为6。所以,4个选项中选项D符合题意。

55.D解析:本题主要考查了一维数组名用作函数实参进行的运算,数组名作实参相当于传递的是地址,这样在函数中对形参进行的操作可以影响到实参。

56.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。

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

58.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。

59.A解析:本题主要考查按位与运算,x=011050的二进制形式为0001001000101000,01252的二进制形式为0000001010101010,两者相与得00000010001010000。

60.C

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

62.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

63.A

\n当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

\n

64.D

65.D解析:C语言中只有字符串常量而没有字符串变量,故选项A不正确:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const\u3000char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。所以选项C也不正确。空串的长度为0,而以空格打头的字符串的长度至少为\u30001,故选项D正确,本题应该选择D。

66.A函数fun的功能是将第二个字符串链接到第一个字符串的末尾,第二个字符串不变。所以选择A)。

67.D

\n语法错误。else与if之间不应再用其他语句,如果满足if条件,则继续执行if后面的语句;不满足就执行else语句。

\n

68.C

69.C该题目所要求的是最大数的位置(下标),而不是最大数的数值。因此,在进行逐个比较的过程中,需要记录最大数的下标i。根据给出的程序可知,该下标记录在变量p中,所以,如果a[i]>a[p]这一关系成立,应该把i的值赋给p,这样才满足题目的要求。

70.B

71.C

72.C编译程序、操作系统、汇编程序都属于系统软件.只有教务管理系统才是应用软件.因此本题答案为C):

73.A在选项A中,s的确已插到了链表的末尾,但它的next并没有为NULL,而是指向了它的直接前趋p,这样它就不是一个单向链表(单向链表最后一个结点的next指针一定是一个NULL)。

74.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

75.B本题考查位运算,题目中将4向左移一位然后重新赋值给a,4左移一位为8,程序运行结果为8,选项B正确。

76.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

77.D

78.A本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的fun()函数在x等于0或1时返回3,而在其余情况下返回x—fhn(x一2),所以本题的递归算法可以这样表示:fun(x)=3(x--0或x=1)(初始值)fun(x)=x-fun(x一2)(x≠0且x≠1)(递归关系)在主函数中输出的结果是run(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5一(3一fun(1)))。

79.B结构体成员的引用;s[0].a=1,s[1].b=5,所以结果为6

80.C

81.(1)错误:t+=1.0/k;

正确:t+=1.o/i;

(2)错误:returni;

正确:returnt;

【解析】根据for循环可知,变量i中存放每一项的分母,变量k在函数procee没有定义,因此t+=l.0/k;应改为t+=1.0/i;。变量t中存放各项的和,题目要求将各项的和返回给主函数,因此returni应改为returnt。

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍历整个数组*/ for(i=0;i<=""p="">/*如果元素的ASCII值为偶数*/ if(s[i]%2==0) {/*将元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要删除ASCII值为奇数的字符,也就是要保留ASCII值为偶数的字符,将ASCII值为偶数的字符保存到新字符串。所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组。2021年福建省宁德市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

2.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是

A.69825B.63825C.6385D.693825

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上三种说法都不对

4.如有inta=11;则表达式(a/1)的值是()。

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

5.对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为()

A.并运算B.交运算C.差运算D.除运算

6.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序运行后的输出结果是()。

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

7.在软件设计中不使用的工具是()。

A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD图)

8.下列能正确进行字符串赋值的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={A,B,C,D,E};

C.char*S;S="ABCDE";

D.char*s;printf("%《",s);

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

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

10.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法

11.

12.

13.有以下程序:

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

A.abc+abc=defdef

B.abc+ABC=DEFdef

C.abcABCDEFdef

D.abcabcdefdef

14.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

15.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

16.A[N][N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

17.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

18.下列程序段中完全正确的是()。A.int*p;scanf(“%d”,&p);

B.int*p;scanf(“%d”,p);

C.intk,*p=&k;scanf(“%d”,p);

D.intk,*p;*p=&k;scanf(“%d”,p);

19.数据结构中,与所使用的计算机无关的是数据的()结构。

A.存储B.物理C.逻辑D.物理和存储

20.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()

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

二、2.填空题(20题)21.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。

22.对长度为10的线性表进行冒泡排序,对坏情况下需要比较的次数为______

23.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

24.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

25.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。

26.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

27.在两种基本测试方法中,()测试的原则之一是保证所测模块中每一个独立路径至少执行一次。

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

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

29.函数sub的功能是根据下面近似分式求π的值。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请在下面的函数中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

30.函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数,且要求m>n。

例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

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

main()

{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;

p=a+2;printf("%d\n',(p+2)[3]);

}

32.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是【】方法。

33.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

34.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

36.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。

37.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

38.在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是【】。

39.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

40.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;c=(a/b<1)&&(a%b<1);printf("%d%d%d\n",a,b,C);}

三、1.选择题(20题)41.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是

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

42.数据的完整性是指数据的正确性、有效性和______。

A.可维护性B.独立性C.安全性D.相容性

43.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

44.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

45.假定当前盘符下有两个如下文本文件:文件名a1.txta2.txt内容123#321#则下面程序段执行后的结果为#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);

A.123321B.123C.321D.以上答案都不正确

46.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

47.若有以下说明和语句:intc[4][5],(*p)[5];p=C;能够正确引用c数组元素的是______。

A.p+1B.*(p+1)C.*(p+1)+3D.*(p[0]+2)

48.设有下列说明语句:strcutstr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

A.struct是结构体类型的关键字

B.st是结构体类型名

C.x、y、x都是结构体成员名

D.structstr是结构体类型名

49.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

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

51.下列程序运行后,输出结果是______。func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}

A.8,15B.8,16C.8,17D.8,8

52.以下数据结构中不属于线性数据结构的是______。

A.队列B.线性表C.二叉树D.栈

53.在使用程序流程图来表示算法时,菱形用来表示_______。

A.输入与输出B.子程序C.判断分支D.循环边界

54.有以下程序:#include<string.h>main(intargc,char*argv[]){inti,len-0;for(i=l;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行exabcdefgh3k44执行后输出的结果是

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

55.以下程序的输出结果是voidfun(float*p1,float*p2,float*s){s=(float*)calloc(1,sizeof(float));*s=*p1+*p2++;}main(){floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);}

A.11.1B.12C.21.1D.1.1

56.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

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

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

58.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>=′A′&&kk<=′Z′

B.!(kk>=′A′||kk<=′Z′)

C.(kk+32)>=′a′&&(kk+32)<=′Z′

D.isalpha(kk)&&(kk<91)

59.设x=011050,则x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

60.有以下程序intx=3;do{printf("%d",x-=2);}while(!(--x));程序运行后的输出结果是()

A.1B.30C.1,-2D.死循环

四、选择题(20题)61.以下叙述中错误的是()。

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

B.函数可以返回地址值

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

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

62.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

63.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

64.

65.以下关于字符串的叙述中正确的是()。

A.C语言中有字符串类型的常量和变量

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

66.有以下程序

67.

有以下程序:

main

{inta=0,b=l0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出()。

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

68.

69.以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{

inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);

}

在下画线处应填入的内容是

A.i=pB.a[p]=a[i]

C.p=iD.p=j

70.

71.

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

A.编译程序B.操作系统C.教务管理系统D.汇编程序

73.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

74.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

75.有以下程序:

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

A.116B.8C.40D.4

76.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

77.

78.有以下程序

79.下面程序运行后的输出结果是()。

structabc

{

inta,b,c;

}

main()

{

structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

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

}

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

80.(49)按条件f对关系R进行选择,其关系代数表达式为()

A.R|X|R

B.R|X|Rf

C.бf(R)

D.∏f(R)

五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

\n

2.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一

温馨提示

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

评论

0/150

提交评论