版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年福建省三明市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.在计算机中,算法是指()
A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法
2.
3.若有语句“typedefstructTT{charc;inta[4];}CIN;”,则下列叙述中正确的是()。
A.CIN是structTT类型的变量
B.TT是struct类型的变量
C.可以用TT定义结构体变量
D.可以用CIN定义结构体变量
4.一个C语言程序总是从()开始执行。
A.书写顺序的第一函数B.书写顺序的第一条执行语句C.主函数main()D.不确定
5.设有定义“intx=2;”,以下表达式中,值不为6的是()。
A.2*x,x+=2B.x++,2*xC.x*=(1+x)D.x*=x+1
6.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。
A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1
7.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。
A.单链表B.双向链表C.单循环链表D.顺序表
8.请问对一个排好序的数组进行查找,时间复杂度为()
A.O(n)B.O(lgn)C.O(nlgn)D.O(1)
9.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表
10.设有一个栈,元素依次进栈的顺序为A、B、C、D、E。下列()是不可能的出栈序列。
A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A
11.下列语句中,()是错误的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;
12.将数据和操作置于对象统一体中的实现方式是()。
A.隐藏B.抽象C.封装D.结合
13.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法
A.快速排序B.堆排序C.插入排序D.二路归并排序
14.两个或两个以上模块之间关联的紧密程度称为()。
A.耦合度B.内聚度C.复杂度D.数据传输特性
15.
16.有以下程序
#include<stdio.h>
voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/
{intt,i,j;
for(i=0;i<n-1;j++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序的运行结果是
A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
17.检查软件产品是否符合需求定义的过程称为()。
A.确认测试B.集成测试C.验证测试D.验收测试
18.下列叙述中错误的是()。
A.线性表是由n个元素组成的一个有限序列
B.线性表是一种线性结构
C.线性表的所有结点有且仅有一个前件和后件
D.线性表可以是空表
19.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
20.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息
二、2.填空题(20题)21.在一棵二叉树上第6层的结点个数最多是【】。
22.下列程序中的函数stropy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
23.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
24.有定义chara,b;若想通过&运算符保留a对应的二进制数的第3位和第6位的值,其余位置0,则b的二进制数应是【】。
25.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
26.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
27.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
28.下列程序输出的结果是【】。
fun(intx)
{staticinta=3;
a+=x;
return(a);
}
main()
{intk=2,m=1,n;
n=fun(k);
n=fun(m);
printf("%d\n",n);
}
29.写出下列程序的输出结果______。
main()
{int=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
30.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
#include<stdio.h>
main()
intt=0.s=0,i:
for(i=1;i<=5;i++){t=i+【】;s=s+t;}
prinff("s=%d\n".s);}
31.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。
32.以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,
否则返回0。请填空。
intisprime(inta)
{inti;
for(i=2;i<=a/2;i++)
if(a%i==0)【】;
【】;
}
33.与表达式a+=b等价的另一书写形式是______。
34.在算法正确的前提下,评价一个算法的两个标准是【】。
35.要求使下列程序输出5个整数,请填空。
for(i=0;i<=______;printf("%d\n",i+=2));
36.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。
37.设有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为______。
38.面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。
39.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间)。
if语句:
if(x<60)m=1;
elseif(x<70)m=2;
elseif(x<80)m=3;
elseif(x<90)m=4;
elseif(x<100)m=5;
switch语句:
switch(【】)
{
【】m=1;break;
case6:m=2;break;
case7:m=3;break;
case8:m=4;break;
【】m=5;
}
40.以下程序的运行结果是()。
main()
(inta=2,b=7,c=5;
switch(a>0)
{case1:switch(b<0)
{case1:switch(");break;
case2:printf("!");break;
}
case0:switch(c==5)
{case0:printf("*");break;
case1:printf("#");break;
case2:printf("$");break;
}
default:printf("&");
}
printf("\n");
}
三、1.选择题(20题)41.以下程序的输出结果是______。main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}
A.x=4B.x=8C.x=6D.x=12
42.单个用户使用的数据视图的描述称为______。
A.外模式B.概念模式C.内模式D.存储模式
43.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
44.以下数组定义中错误的是A.intx[][3]={0};
B.intx[2][3]={{l,2},{3,4},{5,6}};
C.intx[][3]={{l,2,3},{4,5,6}};
D.intx[2][3]={l,2,3,4,5,6};
45.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序运行后的输出结果是()。
A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD
46.下列不合法的用户标识符是()。
A.j2_KEYB.DoubleC.4dD._8_
47.为使*p=20,下面正确的程序是()
A.#include<stdio.h>main(){inta=10,b=20,*p=&b;printf("%d\t%d\n",p,*p);}*p)
B.#include<stdio.h>main(){inta=10,b=20,*p=b;printf("%d\t\%d\n",p,*p)}
C.#include<stdio.h>main(){inta=10,b=20,*p;p=&a;p++;printf("%d\t\%d\n",p,*p);}}
D.#include<stdio.h>main(){inta=10,b=20,*p;*p=20;printf("%d\t\%d\n",p,*p);}
48.以下程序的输出结果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[a],a[5],a[8]);}
A.258B.741C.852D.369
49.下列叙述中,正确的一条是()
A.语句“goto12;”是合法的
B.for(;;)语句相当于while(1)语句
C.if(表达式)语句中,表达式的类型只限于逻辑表达式
D.break语句可用于程序的任何地方,以终止程序的执行
50.若有以下定义:
structlink
{intdata;
structlink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:
A.a.next=c;c.next=b;
B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next;
D.(*p).next=q;(*q).next=&b;
51.语句定义如下:charstrl[50],str2[20],ch;则下列语句正确的是______。
A.str1={"Crazy"};str2=str1;
B.str1={"Crazy"};str2={"English"};strcpy(str1,str2);
C.ch="xy";
D.ch='x';
52.有以下程序:voidswap(char*x,char*y){chart;t=*x,*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。
A.123,abcB.abc,123C.1bc,a23D.321,cba
53.有定义:inta=1,b=2,c=3,x;则以下选项中各程序段执行后,x的值不为3的是()。
A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
54.在printf函数中用来输出十六制无符号的格式字符是()
A.d格式符B.x格式符C.u格式符D.o格式符
55.下列叙述中正确的是()。A.实体集之间一对一的联系实际上就是一一对应的关系
B.关系模型只能处理实体集之间一对一的联系
C.关系模型属于格式化模型
D.以上三种说法都不对
56.请读程序:#include<stdio.h>main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}上面程序的输出结果是()
A.1B.12C.123D.1234
57.fseek函数的正确调用形式是()。
A.fseek(文件指针,起始点,位移量)
B.fseek(文件指针,位移量,起始点)
C.fseek(位移量,起始点,文件指针)
D.fseek(起始点,位移量,文件指针)
58.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。
A.数据库系统B.文件系统C.人工管理D.数据项管理
59.C语言结构体类型变量在程序执行期间,()。
A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中
60.若有定义:char*st="howareyou";下列程序段中正确的是
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
四、选择题(20题)61.(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。
A.顺序存取的存储结构、顺序存取的存储结
B.随机存取的存储结构、顺序存取的存储结构
C.随机存取的存储结构、随机存取的存储结
D.任意存取的存储结构、任意存取的存储结构
62.以下叙述中正确的是()。
A.C程序中注释部分只能放在程序最后
B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号不是语句的一部分,是C语句之间的分隔符
63.
下列程序的运行结果是()。
#include<stdio.h>
voidmain
{ints=0,k;
for(k=7;k>1;k--)
{switch(k)
{case1:
case4:
case7:
s++:
break;
case2:
case3:
case6:break;
case0:
case5:
s+=2:
break;
}}
printf("s=%d",s);
}
A.s=3B.s=4C.s=5D.无输出结果
64.设变量均已正确定义,若要通过;语句为变萤a1和a2赋数值l0和20,为变量cl和c2赋字符x和Yd以下所示的输入形式中正确的是(注:口代表空格字符)
65.设有如图所示二叉树,对此二叉树后序遍历的结果为()。
A.ZBTYCPXAB.ATBZXCYPC.TZBACYXPD.ATBZXCPY
66.若intk=8;则执行下列程序后,变量k的正确结果是
main()
{intk=8;
switch(k)
{case9:k+=1;
case10:k+=1;
default:k+=1;
case11:k+=1;break;
}
printf("%d\n",k);
}
A.12B.1
C.10D.9
67.有下列程序:
main
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是()。A.A.45B.20C.25D.36
68.
69.
70.
71.下列程序的输出结果是()。
main
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0
72.设有如下说明:
以下说法正确的是()。
A.NEW是一个结构体变量
B.NEW是一个结构体类型
C.ST是一个结构体类型
D.以上说明形式非法
73.有以下程序:
程序运行后的输出结果是()。
A.2B.0C.元素ch[5]的地址D.字符y的地址
74.
75.下列叙述中正确的是()。
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
76.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
77.
下列程序的输出结果是()。
#include<stdio.h>
voidp(int*x)
{printf("%d¨,++*x);
}
voidmain()
{inty=3;
p(&y);
}
A.3B.4C.2D.5
78.
79.一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是()。
A.—对一B.—对多C.多对多D.多对一
80.在C语言程序中可用做用户标识符的是()。
A.void123BBNB.aa_abccasC.as+b3-123IfD.6fDoSIG
五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。例如,当S所指字符串为“ABCD”时,t所指字符串中的内容应为“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
参考答案
1.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。
在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。
2.A
3.DCIN为结构体类型名,而不是结构体变量。故本题答案为D选项。
4.C
5.AA选项中先计算逗号表达式的第1个表达式“2*x”,然后计算第2个表达式“x+=2”,即“x=x+2=4”,整个逗号表达式为第2个表达式的值4。所以A选项正确。B选项中首先计算逗号表达式的第1个表达式“x++”,此时x为3;再计算第2个表达式“2*x=2*3=6”,所以逗号表达式为第2个表达式的值6。C选项中的表达式可以表示为“x=x*(1+x)=2*(1+2)=6”。D选项中的表达式可以表示为“x=x*(x+1)=2*3=6”。故本题答案为A选项。
6.C
7.D
8.B
9.A
10.C
11.C
12.C对象具有封装性,从外面看只能看到对象的外部特性,对象的内部对外是封闭的。即封装实现了将数据和操作置于对象统一体中。本题答案为C选项。
13.B
14.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。
15.A
16.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。
17.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。
(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。
(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。
(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。
(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。
18.CC.【解析】线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C.是错误的。
19.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。
20.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
21.3232解析:根据二叉树的性质,在二叉树的第k层上,最多有2的k-1次方个结点。所以,第6层的结点数最多为32。
22.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函数。strcpy2()中,首先将指针t保存到指针p中,然后进入第1个while()循环,其循环条件为*s++=*t++,其中“*”和“++”运算符的优先级相同,但他们的结合性为从右至左,而“=”运算符优先级比较低,所以原表达式等价于(*s++)=(*(t++)),即将t当前所指内容复制到s当前所指地址中,然后让s和t同时往后移动一位,整个表达式返回的是复制给s的值。所以,当t所指内容是字符串结束符'\\0',时,while循环结束,原先t所指的整个字符串也就复制到s所指的地址中去了。但是,while循环最后一次判断也会让s和t往后移动一位,即此时s指向了字符串结束符'\\0'的后一位。所以第2次复制字符串之前,应先将s指针往回移动一位,故前一空应该填入s-1或其他等价形式。接下来的while循环实现第二次复制,照抄第1次的while循环就行,故后一空应填入*s++。
23.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。
24.100100100100解析:“&”运算符的运算规则是:两个二进制数的对应二进制位只要有一个为0,则结果为0;二者都为1时,结果为1。因此,要想保留某位可用1,屏蔽某位用0。
25.调试调试
26.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
27.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。
28.6
29.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做;n++是先取n的当前值和I做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=0<=1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3。退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但输出的是3。
30.t*10t*10解析:程序中变量,用于存放表达式1+12+123+1234+12345之和,变量t用于存放其表达式的各项。当i=1时,要使t=1;i=2时,t=12;i=3时,t=123;依此类推。每一次的t值是用上一次的t乘以10再加上此次的i的值,所以本题答案为t*10。
31.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。
32.return0return1return0,return1解析:如果a能被i整除,则a是素数,返回值为0。如果a不能被i整除,则a不是素数,返回值为1。
33.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
34.时间复杂度和空间复杂度时间复杂度和空间复杂度
35.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。
36.整型整型解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。
37.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
38.实体实体
39.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:
40.#&#&解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b<0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。
41.B
42.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。
43.D各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序0(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)
44.B(16)B)解析:二维数组的初始化有以下几种形式:①分行进行初始化。②不分行的初始化。③部分数组元素初始化。④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。
45.D解析:本题中首先定义一个字符数组s,并将字符串'ABCD'存到数组s中,定义了一个字符指针变量p,在接下来for循环中,循环体共执行了三次,第一次p指向s[1],所以此时输出的p所指字符串的值为BCD,第二次循环p指向s[2],此时输出p所指的字符串的值为CD,第三次循环p指向s[3],此时输出的p所指的字符串的值为D。所以,4个选项中选项D符合题意。
46.C解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。
47.A
48.C解析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1;i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=0时,a[i]=10-0=10;此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。
49.B
50.D解析:本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。
51.D解析:str1和str2是数组名,是常量,其值不可改变,所以A和B中将字符串常量赋值给str1和str2是错误的。字符变量ch占一个字节,只能存放一个字符,所以C也不正确。
52.C解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串'abc'和'123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。
53.C解析:选项A),因为前面两个条件都不满足,所以执行x=3。选项B),a<3成立,执行x=3。选项C),a<3成立,执行x=3;a<2成立,执行x=2;a<1不成立,不执行x=1,所以执行此段程序后x=2。选项D),a<b成立,执行x=b,此时x=2;b<c成立,执行x=c,此时x=3;c<a不成立,不执行x=a,所以执行此段程序后x=3。
54.B
55.D解析:实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且,实体集“座位”中中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项A)中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。因此,选项B)中的说法也是错误的。关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项C)中的说法也是错误的。
56.C
57.B解析:本题考查函数fseek的用法。fseek函数的调用形式为:
fseek(文件指针,位移量,起始点)
“起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。
“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件长度大于64k时不致出现问题。ANSIC标准规定在数字末尾加一个字母L表示long型。
58.A在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一阶段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户既可使用查询语言或终端命令操作数据库,也可以用程序方式来操作。数据库管理系统提供了数据控制功能。
59.A解析:C语言结构体类型变量在程序执行期间所有成员一直驻留在内存中。
60.A解析:本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl=“China”,如果想把“China”这5个字符放到数组strl中,除了逐个地输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(strl,“China”);或strcpy(strl,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
strcpy函数的结构是:strcpy(字符数组1,字符串2)
其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(strl),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
61.B
62.B花括号可以作为函数体的定界符,也可以作为复合语句的定界符。函数是c程序的基本单位,用户可以命名自定义函数,而库函数名是固定的。c语句以分号结尾,分号是语句的一部分。
63.B
\n运行程序,当k=7时switch(7)执行case:7,s++后s=1,break跳出。k--,k=7继续循环switch(6),执行case6;直接跳出循环,k--变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s=s+2,此时s为3,break跳出,k变为4,继续循环,执行case4为空,继续执行case7;s++为4跳出循环,k--变为3,继续循环,执行case3,空语句往下执行case6,跳出,k--为2,继续循环,执行case2;空语句往下执行case3,空语句再执行case7,跳出循环,k--为1不符合循环,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屋面排水系统验收检查流程方案
- 活动二 动物保护色说课稿2025年小学综合实践活动一年级下册沪科黔科版
- 语文三年级下册口语交际:春游去哪儿玩教案设计
- 跨学科视域下初中英语九年级单元整体教学课例设计-以Module 3 Unit 2英雄主题读写融合课为例
- 硫化锌基纳米材料:制备、结构调控及光催化性能的多维度探究
- 沪教版(五四学制)七年级英语下册Unit 5 Wild Animals词汇深度理解与综合运用教案
- 硫代磷酸二乙酯类有机磷农药残留免疫学分析:技术、应用与展望
- 小学四年级数学下册:“小数位数不同的小数加减法”大单元统整教学设计
- 硒蛋白W:缺硒性雏鸡胃肠道炎症损伤的关键守护者
- 硅磷脂纳米复合物作为抗癌药物载体的研究
- 2026年北京市石景山区初三一模数学试卷(含答案)
- 2025年征信报告模板样板个人版模版信用报告详细版(可修改编辑)
- 《插花艺术课件》课件
- DLT596-2021电力设备预防性试验规程
- “多测合一”收费指导标准(示范文本)
- 2025届云南师大附中高一下数学期末检测试题含解析
- T-NIFA 22-2023 金融数据安全应急响应和处置指引
- 肌骨系统超声临床应用课件
- 《插花基础知识》课件
- 社会体育指导员工作规范课件
- 人教版 七年级下册 历史 期中测试(一)
评论
0/150
提交评论