版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年河南省三门峡市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.衡量显示器的主要技术指标是()
A.波特率B.分辨率C.主频D.显示速度
2.以下叙述中正确的是()A.当对文件的读(写操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.语言中的文件是流式文件,因此只能顺序存取数据
3.以下程序的输出结果是().A.A.2222B.2468C.222D.246
4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序运行后的输出结果是()。A.5B.6C.8D.9
5.下面程序运行的结果是______。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
6.软件详细设计的主要任务是确定每个模块的()。
A.算法和使用的数据结构B.外部接口C.功能D.编程
7.对一个有A,B,C,D随机组成的序列进行哈夫曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits。
A.1.45B.1.74C.1.85D.1.92
8.需求分析阶段的任务是确定()
A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能
9.下列程序的运行结果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
10.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
11.
12.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序运行后的输出结果是(选项D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
13.若有下列定义,则对a数组元素地址的正确引用是()。inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
14.下面程序的运行结果是()。
A.gaeB.gaC.LanguageD.有语法错
15.设x,y,t均为int型变量,执行语句:
x=y=3;
t=++x||++y;
完成后,y的值为A.A.不确定B.4C.3D.1
16.高度为h的满二叉树的结点数是________个。
A.log2h+1B.2h+1C.2h-1D.2h-1
17.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的是()。
A.i-1B.iC.i+1D.4一i
18.下列特征中不是面向对象方法的主要特征的是()。
A.多态性B.继承C.封装性D.模块化
19.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
20.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
二、2.填空题(20题)21.以下程序的运行结果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
22.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
23.设有下列宏定义:
#defineA2
#defineB(A+3)
则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。
24.以下程序的输出结果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
25.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
26.数据库系统中实现各种数据管理功能的核心软件称为【】。
27.以下程序的输出结果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
28.设函数findbig已定义为求3个数中的最大值,以下程序将利用函数指针调用findbig函数。请填空。
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
29.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
30.若有如下程序:
main()
{intx=4,y=3,x=2,t;
t=x<y<z;
printf("%d\n",t);}
则程序运行后的输出结果是【】。
31.设有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
执行上面的程序段后,*(ptr+5)的值为______。
32.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的【】。
33.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(1=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
34.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。
35.以下程序的输出结果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
36.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
38.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。
39.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
40.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
三、1.选择题(20题)41.软件设计中,有利于提高模块独立性的一个准则是______。A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合
42.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是______。
A.12353514B.12353513C.12343514D.12343513
43.下列叙述中正确的是()。
A.break语句只能用于switch语句体中
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内
D.在循环体内使用break语句和continue语句的作用相同
44.下面关于对象概念的描述中,错误的是
A.对象就是C语言中的结构体变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
45.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
46.有定义语句:intb;charc[10];,则正确的输入语句是
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
47.希尔排序属于()。A.A.交换排序B.归并排序C.选择排序D.插入排序
48.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
49.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据
50.以下叙述不正确的是
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
51.用C言编写的代码程序()。
A.可立即执行B.是个源程序C.经过编译即可执行D.经过编译解释即可执行
52.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)f(y%3==0)printf("%d",--y);}程序的运行结果是()。
A.741B.963C.852D.875421
53.以下选项中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
54.以下叙述中正确的是
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入出没有输出
55.以下程序的输出结果是()。mam(){charcf[3][5]={"AAAA","BBB","CC");printf("\"%s\"n",cf[1]);}
A.AAAAB.BBBC.BBBCCD.CC
56.对关系S和只进行集合运算,结果中既包含S中的所有元组也包含只中的所有元组,这样的集合运算称为()。
A.并运算B.交运算C.差运算D.积运算
57.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
58.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
59.下列关于栈的描述中错误的是______。
A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针
60.下列说法错误的是()。
A.下列结构体定义时,占据了5个字节的空间structstudent{intnum;intage;charsex;}
B.结构体的成员名可以与程序中的变量名相同
C.对结构体中的成员可以单独使用,它的作用相当于普通变量
D.结构体可以嵌套定义
四、选择题(20题)61.
62.如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是()。
A.stdio.hB.string,hC.alloc.hD.math.H
63.
64.对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
65.
66.
有下列程序:
main
{intx=5;
do
{printf("%d",X-=4);)
while(!(--x));
}
程序的输出结果是()。
A.1B.20C.1-4D.死循环
67.关系数据库管理系统所管理的关系是()。A.若干个二维表B.一个DBF文件C.一个DBC文件D.若干个DBC文件
68.
69.两个或两个以上模块之间联系的紧密程度称为()。
A.耦合性B.内聚性C.复杂性D.数据传输特性
70.程序中若有如下说明和定义语句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下选项中对函数fun的正确调用语句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
71.
72.若有“doublea;”,则正确的输入语句是()。A.A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a);
D.scanf("1e",&a);
73.
74.
75.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同
B.变量demo中各成员的地址相同
C.变量demo和各成员的地址相同
D.若给demo.d1赋99后,demo.d2中的值是99.0
76.设有数组定义:chararray[]="Chinese";则数组array所占的空间为
A.6个字节B.7个字节C.8个字节D.9个字节
77.
78.有以下程序程序执行后的输出结果是()。
A.y=-IB.y=oC.y=lD.while构成无限循环.
79.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的输出结果是
A.3,9B.5,9
C.1,9D.1,1
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量num1中的值原为2,num2中的值原为1,程序运行后,num1中的值为l,num2中的值为2。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:将所有大于1小于整数m的非素数存入XX所指数组中,非素数的个数通过k传回。例如,输入20,则应输出4689101214151618。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。
3.D
4.B由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。
5.C解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。
6.A解析:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。本题正确答案为选项A。
7.C
8.D解析:结构化分析方法,数据流图,数据字典,软件需求规格说明书
评析,需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织,部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务:选项C)软件开发费用是在可行性研究阶段需完成的任务。
9.A依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
10.D
11.D
12.B本题考核的知识点是puts()函数的应用。主函数中定义了一个字符数组s并赋初值,一个字符串指针变量ps并让它指向s。程序中p+4的地址为数组第5个元素的地址,而调用put(str_adr)函数时,将从str_adr这一地址开始,依次输出存储单元中的字符,遇到第一个“\\0”时结束输出,并自动输出一个换行符。所以put(p++4)将输出n/No,put(s)将从s第一个元素开始输出到第3个元素结束(因为执行*(p4)c0语句后s中的第5个元素的值为0,而s中的第4个元素为“\\”,puts将遇到“\\0”,结束输出),即输出yes。所以,4个选项中选项B符合题意。
13.D本题考查数组元素的地址的引用。A中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:数组元素下标从0开始);B中,*a+1指的是将数组a的第一个元素加1;选项C中,不存在这种引用方式;D中,&a[0]引用的是数组的首地址。
14.A考查用指针来引用字符数组元素的方法。指针pl+k相当于指针pl向后移动了k个字符的位置,指针p2同理。
15.Ct=++x或++y,当++x不为0的时候,即++x为真,则不需要再继续判断++y,那么y就不再执行自加,因此y=3.
16.C
17.B
\n本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。
\n
18.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。
19.A
20.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。
21.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。
22.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。
23.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。
24.aa解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。
25.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
26.数据库管理系统数据库管理系统(DBMS)
27.852852解析:循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。
28.findbigfindbig解析:f是指向函数的指针变量,根据题意要求,空格处应填入findbig。
本题目考查:C语言中指向函数的指针变量定义的一般形式为;
数据类型标识符(*指针变量名)();
“数据类型标识符”表示函数返回值的类型。
函数的调用可以通过函数名调用,也可以通过函数指针调用。在给函数指针变量赋值时,只需给出函数名而不必给出参数。(*p)()表示定义一个指向函数的指针变量,专门用来存放函数的入口地址,可以先后指向不同的指针变量。用函数指针调用函数时,只需要将(*p)代替函数名即可,在(*p)之后的括号中,根据需要写上参数。
29.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根据题意和程序可知要填空的内容是:将字符申s中的数字字符放入d数组的条件。
30.1
31.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在c语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0',所以题中数组str有6个元素。②ptr指向数组s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
32.数据和操作数据和操作
33.bar[i]bar[i]解析:fun函数中的内层for循环,求出了每一行中的最大值x,内循环结束后就需要把最大值放在存储每行最大值的数组bar[i]中,因此应填bar[i]。
34.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。
35.1616解析:首先将程序中宏替换掉,先把“MCRA(i)”替换成“2*i”,然后把“MCRA(j,2*i)”替换成“2*2*j+2*i”,经计算该表达式的值为16,所以最后输出为16。
36.00解析:在函数fun()中,while((*n)-)是先引用*n的值,再做(*n)--运算,所以循环结束时*n的值为0,再做(*n)--运算后,*n的值为-1;执行++(*n)后,*n的值是0。
37.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。
38.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:
p(double*)malloc(sizeof(double));
39.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
40.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
41.C耦合是对一个软件结构内不同模块之间互连程度的度量,耦合度越高,则模块的独立性越差。内聚反映一个模块内各个元素彼此结合的紧密程度。高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合是指不同软件模块之间通过稳定的接口交互,而不需要关心模块内部的实现。
42.A解析:自增运算符“++”,放在变量之前表示在使用变量之前,先使变量的值加1;放在变量之后表示在使用变量之后,再使变量的值加1。第一条输出语句,先输出m=12,m再自加1,变成13,n先自加1再输出,输出n=35;第二条输出语句,先输出n=35,n再自加1,变成36,m先自加1再输出,输出m=14。
43.C解析:只能在循环体内和switch语句体内使用break语句。当break出现在循环体的switch语句体内时,其作用只是跳出该switch语句体,并不能中止循环体的执行。若想强行中止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件,则跳出本层循环体。
44.A解析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,从模拟现实世界中不同事物彼此之间的联系,B)、C)、D)是正确的,对象的思想广泛应用于C++、Java等语言中,因此A)错误。
45.A解析:本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。
46.B解析:scanf函数的第一个参数是格式控制字符串,该字符串中所出现的格式控制符必须与scanf函数的笫二个及其后面的参数一一对应.本题中四个选项的格式控制字符串都是'%d%s',其中包括两个格式控制符%d和%s,它们分别表示输入一个十进制整数和输入一个字符串,其对应的参数应该分别为一个整型变量的地址和一个字符型数组的首地址。变量的地址可以通过对变量做取地址(&)运算来得到,而宇符型数组的首地址则可以直接通过数组名来得到。所以,4个选项中选项B符合题意。
47.D解析:希尔排序的基本思想是把记录按照下标的一定增量进行分组,对每组记录使用插入排序,随着增量逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到1时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。
48.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,
49.D解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。
50.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。
51.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.obj的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成一个后缀.exe的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。
52.C解析:本题考查的重点是printf()函数和for循环的执行方式。在循环体内,若y为的倍数,则执行print(“%d”,--y)语句。所以,当y为9时,输出--y为8;当y为6时,输出--y为5;当y为3时,输出--y为2;当y为零时,for循环结束。因此,选项C是正确的。
53.C解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\\”与三位八进制数值或两位十六进制数值代替单个字符。
54.C解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应当具有以下五个特性:有穷性;确定性;可行性;有零个或多个输入;有一个或多个输出。所以,4个选项中选项C符合题意。
55.B解析:二维字符数组可以看成由若干个一维字符数组组成,每行是一个一维字符数组。本题首先定义了一个数组ch[3][5],并给它们按行赋初值,即相当于给eh[0]赋值“AAAA”,给ch[1]赋值“BBB”,给eh[2]赋值“BBB”,最后输出转义字符“叮”、ch[1]和转义字符“\\”,因此输出为“BBB”。所以,4个选项中B为所选。
56.A解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。
57.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:
#define宏名(形参表)字符串
本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。
58.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
59.B解析:栈是限定在一端进行插入与删除运算的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底,对栈的插入和删除操作中,不需要改变栈底指针。栈是按照“先进后出”或“后进先出”的原则组织数据的。栈具有记忆作用。栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。
60.A解析:本题主要考查定义结构体的几个特点:①结构的定义明确了结构的组成形式,定义了一种C语言中没有而用户需要的新的数据类型。与其他的数据类型不同,在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;②结构体的成员名可以与程序中的变量名相同;⑧结构体中的成员可以单独使用,它的作用相当于普通变量;④结构体可以嵌套定义。
61.D
62.B头文件;C语言中要用库函数,则需在前面添加头文件。输入输出函数的头文件为”stdio.h”
63.B\r\n
64.C任何一个C语言程序的执行都是从主函数main开始,至主函数main结束。故本题答案为C选项。
65.B
66.C
\n本题考查do-while循环。先执行do的内容,也就是printf语句,x=x-4=1,输出1,判断while循环的控制条件,--x=0,则!(--x)为非零,循环条件成立,执行下一次循环;x=x-4=-4,输出-4,判断while循环的条件,--X=-5,则!(--x)为零,循环条件不成立,结束循环。
67.A解析:VisualFoxPro就是一种关系数据库管理系统,一个“表”就是一个关系,一个关系就是一个二维表。关系数据库管理系统可管理若干个二维表。
68.D
69.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。
70.A解析:函数fun()的参数为指针类型,返回值为字符型,而选项B、C的参数不是指针类型,所以不正确,选项D中,*fl(s)表示返回值为指针的函数,所以也不正确。
71.C
72.C本题考查scanf函数的调用形式:scanf(格式字符串,输入项地址表)。“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。
73.B
74.C
75.D共用体变量中的所有成员共享一段公共存储区,所有成员的首地址相同。在每一个时刻所有的成员中只有一个有效,即只有最后一个被赋值的成员有效,其余的成员无效。
76.C本题主要考查字符数组的初始化操作。字符数组的初始化可以逐个元素赋值,也可以作为字符串赋值。
逐个元素赋值初始化形式:
char数组名[n]={字符1,字符2,……,字符n};
char数组名[]={字符1,字符2,……,字符n};
作为字符串赋值形式:
char数组名[n]='字符串';
char数组名[]='字符串';
在C语言中,为了方便确定字符串的长度,编译系统在字符串后增加了一个结束标识’\\0’,即ASCII码的0。因此,当采用字符串初始化字符数组时,必须为其保留一个存放结束标识符的位置。
在本题中,用一个字符串作为数组的初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度是7,但所占的空间是8,这点必须要注意。因为字符串常量的最后由系统加上一个’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。
77.B
78.A当y为。时,表达式y一才为假,循环结束,最终y的值为一l,所以答案选择A)。
79.C本题中,程序开始定义了一个数组a,并对这个数组进行赋初值。然后定义一个整型变量i和一个整型指针变量p,并使指针变量p指向数组a的首地址。然后执行for循环,循环变量i的初值为0,循环结束条件为变量i的值大于等于4,循环变量i的值每循环一次自加1,通过这些分析我们知道,循环执行了4次结束。
第一次循环时,由于*p表示数组的第一个元素值1,那么执行a[i]=*p;语句,即将数组的第一个元素变为1;第二次循环时,由于i为1,即将数组的第二个元素变为1,同理,第三次与第四次循环分别将数组的第三和第四个元素值变为1。
循环结束,程序执行输出语句,这时数组中所有元素的值分别为1,1,1,1,9,因此,程序最后的输出结果是1,9,答案选C。
80.A
81.(1)错误:t=x;x=y;
正确:t=*x;*x=y;
(2)错误:return(y);
正确:return(t);
【解析】由函数proc()可知,变量x为整型指针,而变量t为整型变量.不能直接赋值。因此,“t=x;x=y;”应改为“t=*x;*x=y;”。题目要求实现两个数的交换,因此函数proc()应返回变量X的值,变量x的值存放在变量t中。因此,“return(y);”应改为“return(t);”。
82.
【解析】题目中要求将所有大于l小于整数m的非素数存入xx所指数组中,因此需要判断所有大干1小于m的整数是否为素数。将所有大干1小于m的非素数放入数组xx中,并将非素数的个数通过形参k传递回主函数中。
2021年河南省三门峡市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.衡量显示器的主要技术指标是()
A.波特率B.分辨率C.主频D.显示速度
2.以下叙述中正确的是()A.当对文件的读(写操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.语言中的文件是流式文件,因此只能顺序存取数据
3.以下程序的输出结果是().A.A.2222B.2468C.222D.246
4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序运行后的输出结果是()。A.5B.6C.8D.9
5.下面程序运行的结果是______。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
6.软件详细设计的主要任务是确定每个模块的()。
A.算法和使用的数据结构B.外部接口C.功能D.编程
7.对一个有A,B,C,D随机组成的序列进行哈夫曼编码,据统计,各个元素的概率分别为:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,请问该编码的平均期望编码长度为()bits。
A.1.45B.1.74C.1.85D.1.92
8.需求分析阶段的任务是确定()
A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能
9.下列程序的运行结果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
10.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
11.
12.有以下程序main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序运行后的输出结果是(选项D中的第一行是空行)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No
13.若有下列定义,则对a数组元素地址的正确引用是()。inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
14.下面程序的运行结果是()。
A.gaeB.gaC.LanguageD.有语法错
15.设x,y,t均为int型变量,执行语句:
x=y=3;
t=++x||++y;
完成后,y的值为A.A.不确定B.4C.3D.1
16.高度为h的满二叉树的结点数是________个。
A.log2h+1B.2h+1C.2h-1D.2h-1
17.
有以下程序:
main
{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,
12,},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<i;j++)printf("%4c",);
for(j=________;J<4;j++)printf("%4d",num
[i][j]);
printf("\n");}}
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的是()。
A.i-1B.iC.i+1D.4一i
18.下列特征中不是面向对象方法的主要特征的是()。
A.多态性B.继承C.封装性D.模块化
19.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
20.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
二、2.填空题(20题)21.以下程序的运行结果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
22.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
23.设有下列宏定义:
#defineA2
#defineB(A+3)
则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。
24.以下程序的输出结果是【】。
main()
{charc=′z′;
printf("%c",c-25);}
25.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
26.数据库系统中实现各种数据管理功能的核心软件称为【】。
27.以下程序的输出结果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
28.设函数findbig已定义为求3个数中的最大值,以下程序将利用函数指针调用findbig函数。请填空。
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
29.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
30.若有如下程序:
main()
{intx=4,y=3,x=2,t;
t=x<y<z;
printf("%d\n",t);}
则程序运行后的输出结果是【】。
31.设有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
执行上面的程序段后,*(ptr+5)的值为______。
32.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的【】。
33.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(1=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*bar)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
34.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。
35.以下程序的输出结果是______。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+m
main()
{inti-2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
36.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
37.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
38.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。
39.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
40.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
三、1.选择题(20题)41.软件设计中,有利于提高模块独立性的一个准则是______。A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合
42.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是______。
A.12353514B.12353513C.12343514D.12343513
43.下列叙述中正确的是()。
A.break语句只能用于switch语句体中
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内
D.在循环体内使用break语句和continue语句的作用相同
44.下面关于对象概念的描述中,错误的是
A.对象就是C语言中的结构体变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
45.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
46.有定义语句:intb;charc[10];,则正确的输入语句是
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
47.希尔排序属于()。A.A.交换排序B.归并排序C.选择排序D.插入排序
48.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
49.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据
50.以下叙述不正确的是
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
51.用C言编写的代码程序()。
A.可立即执行B.是个源程序C.经过编译即可执行D.经过编译解释即可执行
52.有以下程序:#include<stdio.h>main(){inty=9;for(;y>0;y--)f(y%3==0)printf("%d",--y);}程序的运行结果是()。
A.741B.963C.852D.875421
53.以下选项中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
54.以下叙述中正确的是
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入出没有输出
55.以下程序的输出结果是()。mam(){charcf[3][5]={"AAAA","BBB","CC");printf("\"%s\"n",cf[1]);}
A.AAAAB.BBBC.BBBCCD.CC
56.对关系S和只进行集合运算,结果中既包含S中的所有元组也包含只中的所有元组,这样的集合运算称为()。
A.并运算B.交运算C.差运算D.积运算
57.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
58.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
59.下列关于栈的描述中错误的是______。
A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针
60.下列说法错误的是()。
A.下列结构体定义时,占据了5个字节的空间structstudent{intnum;intage;charsex;}
B.结构体的成员名可以与程序中的变量名相同
C.对结构体中的成员可以单独使用,它的作用相当于普通变量
D.结构体可以嵌套定义
四、选择题(20题)61.
62.如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是()。
A.stdio.hB.string,hC.alloc.hD.math.H
63.
64.对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
65.
66.
有下列程序:
main
{intx=5;
do
{printf("%d",X-=4);)
while(!(--x));
}
程序的输出结果是()。
A.1B.20C.1-4D.死循环
67.关系数据库管理系统所管理的关系是()。A.若干个二维表B.一个DBF文件C.一个DBC文件D.若干个DBC文件
68.
69.两个或两个以上模块之间联系的紧密程度称为()。
A.耦合性B.内聚性C.复杂性D.数据传输特性
70.程序中若有如下说明和定义语句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下选项中对函数fun的正确调用语句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
71.
72.若有“doublea;”,则正确的输入语句是()。A.A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a);
D.scanf("1e",&a);
73.
74.
75.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同
B.变量demo中各成员的地址相同
C.变量demo和各成员的地址相同
D.若给demo.d1赋99后,demo.d2中的值是99.0
76.设有数组定义:chararray[]="Chinese";则数组array所占的空间为
A.6个字节B.7个字节C.8个字节D.9个字节
77.
78.有以下程序程序执行后的输出结果是()。
A.y=-IB.y=oC.y=lD.while构成无限循环.
79.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的输出结果是
A.3,9B.5,9
C.1,9D.1,1
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量num1中的值原为2,num2中的值原为1,程序运行后,num1中的值为l,num2中的值为2。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:将所有大于1小于整数m的非素数存入XX所指数组中,非素数的个数通过k传回。例如,输入20,则应输出4689101214151618。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。
3.D
4.B由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。
5.C解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。
6.A解析:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。本题正确答案为选项A。
7.C
8.D解析:结构化分析方法,数据流图,数据字典,软件需求规格说明书
评析,需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织,部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务:选项C)软件开发费用是在可行性研究阶段需完成的任务。
9.A依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。
10.D
11.D
12.B本题考核的知识点是puts()函数的应用。主函数中定义了一个字符数组s并赋初值,一个字符串指针变量ps并让它指向s。程序中p+4的地址为数组第5个元素的地址,而调用put(str_adr)函数时,将从str_adr这一地址开始,依次输出存储单元中的字符,遇到第一个“\\0”时结束输出,并自动输出一个换行符。所以put(p++4)将输出n/No,put(s)将从s第一个元素开始输出到第3个元素结束(因为执行*(p4)c0语句后s中的第5个元素的值为0,而s中的第4个元素为“\\”,puts将遇到“\\0”,结束输出),即输出yes。所以,4个选项中选项B符合题意。
13.D本题考查数组元素的地址的引用。A中,p+5引用的是a[5]的地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 潮流计算的仿真课程设计
- 四年级数学(小数加减运算)计算题专项练习与答案汇编
- 潮州拜神风俗研究报告
- 测量温度课程设计
- 测量快递件重量课程设计
- 测量仪器管理工作方案
- 测绘项目工期安排方案
- 仲恺农业工程学院《回归分析》2021-2022学年第一学期期末试卷
- 测绘单位目标考核方案
- 测温监控维修方案
- 艾滋病职业防护培训
- 全科医生转岗培训结业考核模拟考试试题
- 2025年高考数学专项题型点拨训练之初等数论
- 上海市浦东新区2024-2025学年六年级上学期11月期中数学试题(无答案)
- 吃动平衡健康体重 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 通信技术工程师招聘笔试题与参考答案(某世界500强集团)2024年
- 2024至2030年中国节流孔板组数据监测研究报告
- 2024年第九届“学宪法、讲宪法”活动知识竞赛测试题库及答案
- 2024年四川省宜宾市中考地理试卷(含答案与解析)
- 黑龙江省哈尔滨市师大附中2024-2025学年高一上学期10月阶段性考试英语试题含答案
- 电力设备预防性试验规程
评论
0/150
提交评论