




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年河北省保定市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。
A.x[0]可看做是由3个整型元素组成的一维数组
B.x[0]和x[l]是数组名,分别代表不同的地址常量
C.数组X包含6个元素
D.可以用语句x[o]=0;为数组所有元素赋初值0
2.带头结点的单链表head为空的判定条件是()。
A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL
3.
4.若x、y、z、m均为int型变量,则执行下面语句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;
A.1B.2C.3D.4
5.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c
6.众所周知数据结构中非常基本的树结构包括二叉查找树(BST)。当我们把如下序列:10,5,19,4,13,7,6,3,1按顺序建立一棵BST时,树的最大深度是?(令根节点深度为0,不执行平衡二叉树操作)()
A.5B.4C.3D.2
7.有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);……}
程序执行后变量w中的值是A.5.21B.5C.5.0D.0.0
8.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高
9.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()
A.0B.1C.2D.3
10.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
11.下列数据结构中,按先进后出原则组织数据的是()。
A.循环队列B.栈C.顺序表D.循环链表
12.
13.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构
14.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。
A.将y所指字符串赋给x所指存储空间
B.查找和y所指字符串中是否有"\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
15.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
16.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针;指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
17.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
18.有下列程序:程序执行后的输出结果是()。A.abbcdefghijkI23456789964
B.123456789964abbcdefghijk
C.123445667899abbcdefghijk
D.abbcdefghijk123445667899
19.设有定义:charpE]={’1’,‘2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
20.C语言中的基本数据类型所占存储空间长度的顺序是()
A.char<=int<=float<=double<=long
B.int<=char<=float<=long<=double
C.int<=long<=float<=double<=char
D.char<=int<=float<=long<=double
二、2.填空题(20题)21.软件工程研究的内容主要包括:【】技术和软件工程管理。
22.下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。
#include<stdio.h>
main()
{inta,b,c,I;
a=c=0;
for(I=0;I<=10;I+=2)
{a+=I;
【】;
c+=b;}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);}
23.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
intmystrlen(char*str)
{inti;
for(i=0;【】!='\0';i++);
return(【】);
}
24.以下程序的输出结果是【】。
#include<stdio.h>
main()
inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];
pfintf("%d\n",s);
25.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
26.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。
27.以下程序的输出结果是【】。
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}
28.如下程序片段:
ina,b,c;
printf("inputa,b,c:");
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
欲使输出结果为1、2、3(分别对应于a、b、c),输入数据的正确形式为【】。
29.下列程序的输出结果是16.00,请填空:
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
30.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
31.执行下面程序段后,k的值是【】。
r=1;n=203;k=1
do{k*=n%10*r;n/=10;r++;}while(n);
32.以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{inta,b,c;
a=25;b=025;e=0x25;
prinff("%d%d%d\n",a,h,c);
}
33.下面程序的功能是求整数m、n的最大公约数,请填空。
main()
{intm,n,r;
scanf("%d,%d",&m,&n);
if(【】){r=m;m=n;n=r;)
while(【】)
{r=m%n;m=n;n=r;}
printf("%d",m);
}
34.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是【】。
35.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
36.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于______。
37.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
38.已有定义:charc=′′;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【】。
39.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
printf("\n");
}
40.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
三、1.选择题(20题)41.下面程序的输出结果是()。#defineWW(X)X*Xmain(){inta,i;i=3;a=++WW(i+1);printf("%d\n",a);}
A.5B.6C.9D.程序有错误
42.以下叙述中错误的是()
A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B.在程序结束时,应当用fclose函数关闭已打开的文件
C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D.不可以用FILE定义指向二进制文件的文件指针
43.若二维数组a有m列,且设a[0][0]位于数组的第一个位置上,则计算任意元素a[i][j]在数组中位置的公式为______。
A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1
44.可在C程序中用作用户标识符的一组标识符是
A.andB.DateC.HiD.case_2007y-m-dDr.TomBigl
45.以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main(){int*p;fun(p);…}intfun(int*p){ints;p=&s;}
B.main(){int*p;fun(&p);…}intfun(int**p){ints;*p=&s;)
C.#includemain(){int*p;fun(&p);…}intfun(int**p)*p=(int*)malloc(2);}
D.#includemain(){iht*p;fun(p);…}ihtfun(iht*p){p=(int*)malloc(sizeof(int));}
46.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
47.线性表的链式存储结构是一种______的存储结构。
A.随机存储B.顺序存储C.索引结构D.散列结构
48.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include<stdio.h>main(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1default:v0+=1;v2+=1;}}while(c!='\n');printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
49.能将高级语言程序转换成目标语言程序的是______。
A.调试程序B.解释程序C.编译程序D.编辑程序
50.利用fseek函数可实现的操作是()。
A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确
51.设有下列二叉树:对此二叉树前序遍历的结果为()
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
52.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8
53.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
54.有以下程序
#include<stdio.h>
#include<string.h>
typedefstmct{charname[9];charsex;floatscore[2];}STU;
voidf(STUa)
{STUb={"Zhao",'m',85.0,90.0};inti;
strcpy(,);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
main()
{STUc={"Qian",'f',95.0,92.0};
f(c);printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
55.若有定义语句:floatx[6];则以下对x数组元素的正确引用形式是()。
A.x+2B.&x[6]C.*(x+2)D.*&x[6]
56.下面程序运行后的输出结果是_____。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
57.有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=p[5];则b的值是
A.5B.6C.9D.8
58.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针
59.已知字母A的ASCII码为十进制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的输出是_________。
A.67,DB.B,CC.C,DD.不确定的值
60.栈通常采用的两种存储结构是()。
A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构
四、选择题(20题)61.由两个栈共享一个存储空间的好处是______。A.A.减少存取时间,降低下溢发生的概率
B.节省存储空间,降低上溢发生的概率
C.减少存取时间,降低上溢发生的概率
D.节省存储空间,降低下溢发生的概率
62.
63.负责数据库中查询操作的数据库语言是()。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言
64.
65.
66.
67.标准库函数fgets(s,n,file)的功能是()。
A.从文件file中读取长度为n的字符串存入字符数s由
B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中
C.从文件file中读到n个字符串存入字符数组s中
D.从文件file中读取长度为n-1个字符的字符串存字符数组S中
68.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审
69.以下叙述中错误的是()。
A.算法正确的程序可以有零个输入
B.算法正确的程序最终一定会结束
C.算法正确的程序可以有零个输出
D.算法正确的程序对于相同的输入一定有相同的结果
70.以下程序段中,与语句:k=a>;b?(b>;c?1:O):0;功能相同的是()。
71.在软件开发中,需求分析阶段产生的主要文档是()。
A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划
72.在软件生产过程中,需求信息的给出是______。A.A.程序员B.项目管理者C.软件分析设计人员D.软件用户
73.
74.若有定义语句:
charS[10]=”1234567\0\0”;则strlen(s)的值是()。
A.7B.8C.9D.10
75.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定,else子句总是与()配对。
A.缩排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
76.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。
A.数据库系统B.文件系统C.人工管理D.数据项管理
77.有以下程序:
#include<stdio.h>
structord
{intX,y;)dt[2]={1,2,3,4};
main()
{
structord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是()。
A.1,2
B.4,1
C.3,4
D.2,3
78.语句“printf(”a\bhow\’are\’y\\\bou\n”);”的输出结果是()。A.A.a\bhow\'are\'y\\bou
B.a\bhow\’are\’y\bou
C.how'are'you
D.ahow'are'y\bou
79.
80.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)
B.(x=6,x+1,y=6,x+y)
C.(x=y=6,x+y,y+1)
D.(y=6,y+1,x=y,x+1)
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为l3579。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度
0.0005,则程序应输出为3.14…
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
参考答案
1.Dx[0]是不能赋值的。
2.B
3.B
4.A解析:?:运算符首先执行?之前的表达式,如果表达式的值为真,则返回?和:之间的表达式的值,否则返回:之后的表达式的值。本题中m比x和y都要小,所以,3个表达式都没有改变m的值,故应该选择A。
5.D
6.B
7.C(33)C)解析:题中变量w的定义为double型,函数fun2()的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。
8.A软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。
9.C
10.B
11.B解析:循环队列是队列的一种顺序存储结构,队列是以先进先出为原则组织数据的一种特殊线性表,选项A错误;栈是以先进后出为原则组织数据的一种特殊线性表,选项B正确;顺序表是线性表的顺序存储结构,选项C错误;循环链表是一般线性表的一种链式存储结构,选项D错误。
12.D
13.C
14.C本题中由循环条件可知遇到“0或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。
15.D本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。
16.C解析:这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。
17.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
18.B程序定义数组a和b,其中a使用小写字母和数字构成的字符串完成初始化。第1个for循环将数组a中所有的非小写字母字符(数字字符)自左向右存放到b数组中;第2个for循环将数组a中所有的非数字字符(小写字母)自左向右存放到b的后续单元中,在所有字符后添加空字符,输出b,此时b的值为:123456789964abbcdefghijk。本题答案为B选项。
19.A根据题目中的定义可以知道sizeof(p),计算的是数组P中所有元素所占用的字节数,而不是ch”型数据所占字节数。
20.A
21.软件开发
22.b=I+1b=I+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。
23.str[i]或str+iistr[i]或str+i\r\ni
24.3030解析:当i=0时,s=0+a[0][0]+a[0][2]=10;i=1时,s=10+a[1][1]+a[1][1]=18;i=2时,s=18+a[2][2]+a[2][0]=30。
25.调试调试
26.4545解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为。
27.99解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
本题可按部就班地逐步运算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
28.a=1b=2c=3a=1,b=2,c=3解析:此题考查了scanf函数的输入格式。scanf函数的输入格式规定如果两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符作为分隔符。
解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
30.*(p+5)或p[5]*(p+5)或p[5]
31.00解析:本题考查的是do厀hile循环。第一次执行循环体,因为k=1,r=1,n=20,所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4,所以k的值为0。
32.252137252137解析:程序中变量a、b、c分别为十进制、八进制、十六进制的数25,按%d格式输出,a的输出值为25;b=025转换为十进制数(b=2*8+5=16+5=21)输出;c=0x25转换为十进制数(c=2*16+5=32+5=37)输出。输出结果为252137。
33.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。
34.11解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=0”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。
35.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。
36.非线性结构非线性结构解析:对于一个非空的数据结构,如果同时满足下列两个条件,即1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件;即为线性结构,而二叉树的结点可能存在两个后件,所以是非线性结构。
37.参照完整性参照完整性
38.11解析:字符空格的ASCII码不为0,所以本题中表达式\ue008!c\ue009的值为0,b=0&&1的结果显然为0。
39.j=j+2或j+=2a[j]<a[i]或a[i]>a[j]j=j+2或j+=2\r\na[j]<a[i]或a[i]>a[j]
40.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符;则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填;'%s',str。
41.C解析:表达式“a++WW(i+1);”,宏展开之后为a=++i+1*i+1,先计算++i,结果为4,i的值也变为4,所以a=4+1*4+1=9。所以正确答案是选项C。
42.D解析:顺序文件只能从头读写,二进制文件可以随机读写,选项A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭,选项B正确:用fread()函数可以一次性地读取同类型的很多数据,选项C正确;在C语言中指向各种文件的文件指针都是通过FILE来定义的,故选项D是错误的。所以4个选项中选D
43.D解析:a[i][j]的位置应该是第i+1行,第j+1列,那么它的位置是(i+1-1)*m+j+1=i*m+j+1。
44.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。
45.C解析:本题考核的知识点是指针变量作为函数的参数以及变量的作用域。在选项A中,main()函数中定义了一个指针变量p,调用fun()函数时把p传给形参p,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元,故选项A错误.选项B中实现的也是让实参p,指向一个在函数fun()定义的局部变量s,因此也是错误的;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节,因此,选项C是正确的;选项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量p,在fun()函数分配了一个整型单元并把首地址赋值给行参指针变量p,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值,因此选项D也是错误的.所以,C选项为所选。
46.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。
软件维护通常有以下四类;
①为纠正使用中出现的错误而进行的改正性维护;
②为适应环境变化而进行的适应性维护;
③为改进原有软件而进行的完善性维护;
④为将来的可维护和可靠而进行的预防性维护。
软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。
47.B解析:线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于顺序存储。
48.D解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:
switch语句的语法格式为:
switch(表达式)
{
case常量表达式1:语句组1;
case常量表达式2:语句组2;
……
case常量表达式n:语句组n;
default:语句组n+1;
}
另外,注意以下几点关于switch语句的重点:
①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case'B':);③找到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。
一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入default:程序段,作统一的处理;default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。
49.C解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由O和1组成的二进指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。
50.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。
51.B解析:所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根-左-右”。故该二叉树的前序遍历结果为“ATBZXCYP”。对于本题,若使用后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。
52.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。
53.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。
54.A解析:本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个副本,函数f的所有操作只是针对这个数据副本进行的修改,这些都不会影响变量c的值。
55.C解析:数组名x为该数组的首地址即第1个元素的地址,x+2表示数组第3个元素的值地址。x[6]表示数组中长度为6,数组元素的下标从0到5,没有x[6]。&为取地址符,取得的是元素的地址。*为间接访问运算符,其运算对象为地址或存放地址的指针变量。*(x+2)为取数组第3个元素的值,因此只有选项C正确引用了数据元素,选项C正确。
56.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。
57.C解析:p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。
58.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。
59.A解析:由于字符“5”和“3”的ASCII码相差为2,所以ch1经过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符“D”。
60.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。
61.B栈是一种只允许在栈顶进行插入和删除操作的线性表,使两个栈共享同一存储空间的是双向栈,即将两个栈的栈顶设在向量空间的两端,让两个栈各自向中间空间延伸。当其中一个栈的元素较多,超过向量空间的一半时,只要另一个栈的元素不多,那么,前者就可以占用后者的部分存储空间。只有当整个向量空间被两个栈占满(即两个栈底相遇)时,才会发生上溢。使用这种栈的优点是可以有效地节省存取空间,降低上溢发生的概率,而对于存取时间并没有影响。
62.A\r\n
63.C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。
64.A
65.C
66.D
67.B本题考查fgets函数的使用调用形式:fgets(s,n,fp)。fgets函数参数说明:“S”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组S中,读入字符串后会自动在字符串末尾加入"\0"结束符,表示字符串结束。
68.C【答案】:C
【知识点】:需求分析阶段的任务
【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高职院校产教融合效率评价指标体系构建
- 文化差异讲课件
- 七年级语文下课件讲课件
- 学业平台下形成性考核在免疫学教学中的应用
- 中医里心和肝的关系讲课件
- 公司各项目分开管理制度
- 公司员工入离职管理制度
- 公司大客户销售管理制度
- 事业单位内部控制机制的分析与优化
- 公司组装生产线管理制度
- 中医病证诊断疗效标准
- WS 10012-2023 地方性砷中毒病区判定和划分代替WS 277-2007
- 【模板】纯化水微生物限度检查法验证报告
- 样品管理程序检验科程序文件
- 04D701-3 电缆桥架安装
- 叉车操作安全规范(图片版)课件
- 前置胎盘临床诊断与处理指南课件
- 《Python程序设计(第3版)》完整版PDF
- 15D501建筑物防雷设施安装图集
- 房屋安全简易鉴定表
- 《水产养殖前沿讲座》课程教学大纲
评论
0/150
提交评论