版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年山东省泰安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.输出语句“printf(“%d\n”,11+011);”的输出结果是()。
A.20B.22C.022D.021
2.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,
3.在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:()。
A.n–i+1B.n–iC.iD.i–1
4.人们提出了用______的原理来设计软件,这就是软件工程学诞生的基础。
A.计算机科学B.数学C.工程学D.运筹学
5.
6.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}该程序的输出结果是()。
A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD
7.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
8.以下是根据文件大小分配存储空间的一个算法伪代码,请问其空间复杂度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))
9.C语言中的变量只能由字母、数字和下划线组成,且第一个字符()。
A.必须是字母B.必须是下划线C.必须是下划线和字母D.可以是字母.数字或下划线中任一一种
10.若有以下程序段
intm=0xabc,n=0xabc;
m-=n;
printf("%x\n",m);
执行后的输出结果是A.A.0X0
B.0x0
C.0
D.0xABC
11.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序运行后的输出结果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
12.有以下程序:
执行后输出结果是()。
A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday
13.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
14.下列叙述中正确的是()。
A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对
15.若变量c为char类型,能正确判断出c为小写字母的表达式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)
B.(′a′>=c)and(′z′>=c)
C.(′a′<=c)and(′z′>=c)
D.(c>=′a′)&&(c<=′z′)
16.
17.下列关于c语言用户标识符的叙述中正确的是()。
A.用户标识符中可以出现下划线和中划线(减号)
B.用户标识符中不可以出现中划线,但可以出现下划线
C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
18.以下关于结构化程序设计的叙述中正确的是()。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
19.
20.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
二、2.填空题(20题)21.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。
22.子程序通常分为两类:【】和函数,前者是命令的抽象,后者是为了求值。
23.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n,p+9);
}
24.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
25.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;
26.【】是从二维表列的方向进行的运算。
27.阅读程序:
main()
{charstrl[]="howdoyoudo",str2[10];
char*p1=strl,*p2=str2;
scanf("%s”,p2);
printf("%s”,p2);
printf("%s\n",p1);
}
运行上面的程序,输入字符串HOWDOYOUDO则程序的输出结果是【】。
28.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]){d[j]=【】;j++;}
d[j]=0;
29.若有如下程序:
main()
{ints=8,a=3,b=5,c=6;
if(a>b)s=a;a=b;b=s;
if(a>c){s=a;a=c;b=s);
if(b>c)s=b;b=c;c=s;
printf("%d,%d,%d\n",a,b,c);
}
则程序运行后的输出结果是【】。
30.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
31.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
32.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
33.函数mystrlen(char*s)的功能是求字符串s的长度,请填空。
mystrlen(char*s)
{char*t:
t=s;
while(【】)t++;
return(t-s);
}
34.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
35.测试的目的是暴露错误,评价程序的可靠性;而______得目的是发现错误的位置并改正错误。
36.下列程序的运行结果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
37.设有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
执行上面的程序段后,*(ptr+5)的值为______。
38.算法复杂度主要包括时间复杂度和【】复杂度。
39.以下程序运行后的输出结果是______。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
}
printf("%d%d\n",a,b);
}
40.函数delete(s,i,n)是作用是从字符串s中删除从第i个字符开始的n个字符,请填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]\'\0';
}
三、1.选择题(20题)41.以下数组定义中不正确的是_______。
A.inta[2][3];
B.intb[][3]={0,1,2};
C.intc[100][100={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
42.算法的时间复杂度是指______。
A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
43.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()
A.n+1B.n-1C.2nD.n/2
44.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定,else子句总是与()配对。
A.缩排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
45.以下正确的程序段是
A.cgarstr[20];scanf("%s",&str);
B.char*p;scanf("%s",p);
C.charstr[20];scanf("%s",&str[2])
D.charstr[20],*p=str;scanf("%s",p[2]);
46.以下叙述正确的是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
47.设x和y均为int型变量,则以下语句:“x+=y;y=x-y;x-=y;”的功能是______。
A.把x和y按从大到小排列B.把x和y按从小到大排列C.无确定结果D.交换x和y中的值
48.下列程序的输出结果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}
A.0B.2C.1D.3
49.以下程序的输出结果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}
A.1B.2C.3D.4
50.以下叙述错误的是()。
A.变量的作用域取决于变量定义语句的位置
B.全局变量可以在函数以外的任何部位进行定义
C.局部变量的作用域可用于其他函数的调用
D.一个变量说明为static存储类型是为了限制其他编译单元的引用
51.阅读下列程序,则执行后的结果为#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A.3e,6B.62,5C.56,5D.3E,6
52.下列说法不正确的是()。
A.C语言程序是以函数为基本单位的,整个程序由函数组成
B.C语言程序的一条语句可以写在不同的行上
C.C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D.C语言程序的每个语句都以分号结束
53.下列描述中正确的是()。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据和相关文档的集合
54.下面程序输出的结果是______。main(){inti=5,j=9,z;x=(i==j?i:(j=7));printf(:\n%d,%d",i,j);}
A.5,7B.5,5C.语法错误D.7,5
55.下面程序的运行结果是include<stdio.h>main(){inta=28,b;chars[10],*p;p=s;do{b=a%16;if(b<10)*p=b+48;else*p=b+55;p++;a=a/5;}while(a>0);*p='\0';puts(s);}
A.10B.C2C.C51D.\0
56.以下程序段有错,错误原因是______。main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;}
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
57.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
58.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");
B.switch((iht)x);{case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}
D.switch(a+b){case1:pfintf("*\n");casec:pfintf("**\n");}
59.有以下程序#include.<string.h>main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));}程序运行后的输出结果是
A.12B.15C.6D.5
60.下述关于数据库系统的叙述中正确的是______。
A.数据库系统减少了数据冗余
B.数据库系统避免了—切冗余
C.数据库系统中数据的—致性是指数据类型的—致
D.数据库系统比文件系统能管理更多的数据
四、选择题(20题)61.
62.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
63.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
64.层次型、网状型和关系型数据库划分原则是()。
A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式
65.在数据结构中,与所使用的计算机无关的是数据的()。
A.存储结构B.物理结构C.逻辑结构D.物理和存储结构
66.
67.有以下程序:
程序运行后的输出结果是()。
A.22B.76C.72D.62
68.下列程序的输出结果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8
69.
70.下列叙述中正确的是()。
A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
B.用E—R图只能表示实体集之间一对一的联系
C.用E—R图只能表示实体集之间一对多的联系
D.用E—R图表示的概念数据模型只能转换为关系数据模型
71.
72.设有定义:,以下不能计算出一"/Pchar型数据所占字节数的表达式是()。
73.下列C语言用户标识符中,不属于合法标识符的是
A.ad_intB.bb_7C._dd7D.int
74.有以下程序程序运行后的输出结果是()。
A.4B.3C.1D.9
75.有以下程序:
程序运行后的输出结果是()。
A.1,0B.0,1C.0,0D.1,1
76.若intk=8;,则执行下列程序后,变量k的正确结果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
77.
78.有以下程序:
程序的运行结果是()。
A.0B.10C.20D.出错
79.
80.有以下程序:
程序运行后的输出结果是()。
A.12B.14C.1234D.123456
五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个字符串长度相等,则返回第1个字符串。例如,若输入jiangxi<;Enter>;beijing<;Enter>;则函数返回jiangxi。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A“printf(“%d\\n”,11+011);”中,“11”为十进制数,“011”为八进制数,%d表示以十进制格式输出。因此,先将八进制数转化为十进制数,即(011)8=81×1+1×80=(9)10,相当于“printf(“%d\\n”,11+9)”,输出结果为20。故本题答案为A选项。
2.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。
3.A
4.C
5.D
6.D解析:本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就指向字符串中的第二个字符“B”,然后输出字符串“BCD”并换行;下面继续执行循环语句,指针变量p指向下一个字符“C”,输出字符串“CD”,最后一次循环,p指向字符“D”,输出字符串“D”。
7.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。
8.C
9.C
10.C本题考查C语言中的数据输出格式。
题目中定义了两个整型变量m、n,对这两个变量赋值,输入的数值为十六进制整数,并且有m=n。进行m-n运算后,将减法所得到的值赋给m,并将m值输出。其中printf的格式字符选用的格式字符为x,即以十六进制形式输出整数。注意,0x是表示该数为十六进制的标志,输出数据时,数据前面不会自动加上进制的标志。
11.D程序中S1和S2都是宏定义。S1(a+b)宏展开后的表达式为4*a+b+4*(a+b),即4*1+2+4*(1+2),结果为18;S2(a,b)宏展开后的表达式为4*(a)*(b)+b*a,即4*(1)*(2)+2*1,结果为10;S1(3)宏展开后的表达式为4*3+4*(3),结果为24;32(3+a,b+3)宏展开后的表达式为4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,结果为92。最终输出:18,34,92。故本题答案为D选项。
12.CP指向字符串”tuesday”,因此*(P+1)的值为n。s[0]=”monday”。
13.D解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
14.D【答案】:D
【知识点】:栈和队列
【解析】:栈和队列都是线性结构,所以选项C错误;栈是一种先进后出的线性表,故选项A错误;队列是一种先进先出的线性表,故选项B错误,所以选D。
15.D
16.A
17.B解析:在C语言中,合法的标识符由字母,数字和下划线组成(故选项A不正确),并且第一个字符必须为字母或者下划线(故选项B和选项D不正确).所以,B选项为所选.
18.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。
19.A
20.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
21.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。
22.过程过程
23.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。
24.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。
25.D
26.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。
27.HOWhowdoyoudo
28.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。
29.5685,6,8解析:首先要清楚当满足第1个if的判断条件时只执行一条语句“s=a;”,当满足第2个if的判断条件时执行一条复合语句“{s=a;a=c;b=s};”,当满足第3个if的判断条件时只执行一条语句“s=b;”。执行程序:判断a>b,由于a=3,b=5则3>5为假,不执行“s=a;”,执行“a=b;”和“b=s;”,则a=5,b=8。判断a>c,由于a=5,c=6则5>6为假,不执行“{s=a;a=c;b=s};”。判断b>c,由于b=5,c=6则5>6为假,不执行“s=b;”,执行“b=c;”和“c=s;”,则b=6,c=8。最后输出5,6,8。
30.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。
31.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)
32.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
33.*t*t解析:通过while循环扫描字符串,遇到字符‘\\0’结束,并用t统计字符串的长度。
34.19
35.软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。\r\n\r\n
36.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。
37.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在c语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0',所以题中数组str有6个元素。②ptr指向数组s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
38.空间空间解析:程序在计算机上运行时所耗费的时间由程序运行时所需输入的数据总量、对源程序进行编译所需时间、计算机执行每条指令所需时间、程序中的指令重复执行的次数等决定。习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。
39.21
40.length++i<lengthlength++\r\ni<length解析:第一个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是第i个到第i+n或最后一个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。
41.D解析:一维数组的定义方式为:
类型说明符数组名[常量表达式];
选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。
42.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。
43.A解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。根据这条性质可知,若二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为n+1。因此,本题的正确答案是选项A。
44.B解析:本题考查ifelse语句。C语言规定,else总是与它前面的最近的if配对。
45.C解析:scanf输入字符串有一点要注意的是,格式控制串必须用%s。注意:gets函数和puts函数的作用。
46.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。
47.D解析:先将两个数的和赋给变量x,即x=x+y;再执行y=x-y,相当于y=(x+y)-y=x,x的值已经换给了y;最后执行x=x-y,相当于x=(x+y)-x=y,这样不通过第3个变量就可以将两个变量的值互换。
48.C解析:本题考查if语句。第一个if语句,先判断条件,发现a<b不成立,不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程c的值没有发生变化。
49.C解析:程序首先将指针p指向结构体数组aa的首地址,通过p->x引用了结构体数组aa[0]的第一个成员2;++(p->x)是将p->x的值加1,所以输出结果为3。
50.D解析:本题考查函数调用的变量作用域。全局变量不在任何函数体内定义,作用域为整个文件;局部变量在函数体内定义,作用域仅为本次函数;static类型是静态变量,为了方便其他编译单元的引用,不能随意改变。一个函数包含两部分:函数首和函数体,函数体包括花括号内的所有语句。
51.A解析:数组a[5][5],0<=i<5,0<=j<5,则可以用5种表达式来引用,a[i][j],*a(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+5*i+j)。数组的下限为0,%后面为小写的x,所以输出的结果为小写字母表示的十六进制。
52.C解析:本题涉及C语言的3个基本知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。
53.D解析:软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。
54.A解析:条件表达式的一般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。
55.C解析:语句“p=s;”是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。注意:通过指针来引用一维数组元素。
56.D解析:语句*p=*q:使指针p指向q所指向的存储单元,同时p得到该存储单元的内容及其类型,所以D项叙述正确。
57.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。
58.C解析:选项A)中case后面的表达式为浮点型,选项D)中case后面的表达式存在字符变量c,故选项A)、D)错误;在选项B)中,switch后面的表达式加了分号显然有错。
59.D解析:本题首先定义了一个字符型指针变量p,并用一个字符串给它赋值,然后调用printf()函数输出p所指向的字符串的长度。由于字符串的结束标记为、0,其长度为第1个\\0前的字符个数,故长度为5。所以4个选项中D正确。
60.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不—致性。所谓数据的—致性是指在系统中同—数据的不同出现应保持相同的值,而数据的不—致性指的是同—个数据在系统的不同拷贝处有不同的值。
61.D
62.A解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然n原来的值,即k的值没有改变。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价:选项B中先n加1,然后将n加1后的值赋给k,k变化了比原来的值大1,所以这个表达式和本题中表达式不等价:选项C中先计算表达式左边的表达式++=N的值,执行++n后,左边的表达式的值为n的值加1,然后将n+1后的值赋给k,所以这个表达式和本题中的表达式不等价;选项D中表达式展开为k=k+(n+1),k的值发生了变化,所以这个表达式和本题中的表达式不等价。所以4个选项中A正确。
63.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。
64.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
65.C解析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
66.B
67.C字符数组的元素数量在定义时已经确定,与其存储的内容无关,本题中语句chara[7]定义了由7个字符元素组成的字符数组,其sizeof(a)=7。字符数组常常存储字符串,但其存储的字符串长度与数组长度没有直接关联。c语言规定,字符串从首字符开始,以第一个值为ASCIl码0的字符结尾,其中的非0字符数量就是字符串的长度。在本题
68.B本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行b=2+1=3,最终t=2+3=5。
69.D
70.A用E—R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。用E—R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以A的说法正确。
71.D
72.A根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。
73.DC语言的标识符主要用来表示常量、变量、函数和类型等的名字,只起到标识作用。标识符由数字、下画线或英文字母构成,可以分为三类:保留字、预定义标识符和用户定义标识符。保留字是指每一个标识符都有其特定的含义,不允许用户把它们当做变量名使用,如if、int、for等。预定义标识符也是一类具有特殊含义的标识符,它们被用做库函数名和预编译命令,如define、include等。用户定义标识符是用户根据自己的需要定义的一类标识符,用于标识变量、符号常量、用户定义函数、类型名和文件指针等。这类标识符主要由英文字母、数字和下画线构成,但开头字符一定是字母或下画线。
题目中选项A、B、C都是合法的用户自定义标识符,选项D为保留字,不属于用户标识符。
74.A每次内循环只循环一次就结束,第一次外循环时t=t+b[o][b[o][0]]=1+h[0][O]-1+0=1;第二次外循环时t=t“[l][b[1][1]]-1+b[1][l]-1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本题答案为A)。
75.An=b>a,n=1,判断到此,逻辑或为真.后面的J=a<b不再执行。因此i=1,j=0。
76.B在本题中,程序的作用是通过switch语句改变已经被赋初值的变量k的值。程序中首先将变量k赋初值为8,然后使用switch选择结构。由于k的值为8,在switch结构中找到与之对应的块case8执行,完成一次k加1的操作,此时变量k的值变为9,由于没有break语句,程序接着往下执行,执行case10程序块,再完成一次k加1的操作,此时k的值为10,又由于没有break语句,程序接着往下执行,执行case11,再完成一次k加1的操作,此时k的值为11,程序碰到break语句,跳出switch结构。然后执行输出语句,输出的结果为11。
77.A
78.C分配内存空间函数malloe的调用形式:类型说明符*)malloe(size)。其功能是在内存的动态存储区中分配一块长度为”size”字节的连续区域,函数的返回值为该区域的首地址。”类型说明符”表示把该区域用于何种数据类型。
79.A
80.D本题考查的是文件的综合应用。本题首先以创建方式打开文件”d2.dat”,两次调用fprintf函数把a[O],a[1],a[2],a[3],a[4],a[5]的值写到文件”d2.d8t”中,文件”d2.dat”的内容为:1,2,3<回车>4,5,6。然后把该文件关闭再以只读方式打开,文件位置指针指向文件头,再通过fs-canf函数从中读取两个整数到k和n中,由于格式符之间无间隔,因此输入数据可以用回车隔开,故输入的k的值为123,n的值为456。
81.
82.
【解析】题目中要求不能用C语言中提供的求字符串长度的函数,可以通过移动字符串指针来计算字符串的长度。定义2个变量分别存放2个字符串的长度,最后比较2个字符串的长度,返回相对较长的那一个字符串。
2021-2022年山东省泰安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.输出语句“printf(“%d\n”,11+011);”的输出结果是()。
A.20B.22C.022D.021
2.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,
3.在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:()。
A.n–i+1B.n–iC.iD.i–1
4.人们提出了用______的原理来设计软件,这就是软件工程学诞生的基础。
A.计算机科学B.数学C.工程学D.运筹学
5.
6.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}该程序的输出结果是()。
A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD
7.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
8.以下是根据文件大小分配存储空间的一个算法伪代码,请问其空间复杂度是多少()A.O(n)B.O(n^2)C.O(2^n)D.O(n*log(n))
9.C语言中的变量只能由字母、数字和下划线组成,且第一个字符()。
A.必须是字母B.必须是下划线C.必须是下划线和字母D.可以是字母.数字或下划线中任一一种
10.若有以下程序段
intm=0xabc,n=0xabc;
m-=n;
printf("%x\n",m);
执行后的输出结果是A.A.0X0
B.0x0
C.0
D.0xABC
11.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序运行后的输出结果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
12.有以下程序:
执行后输出结果是()。
A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday
13.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
14.下列叙述中正确的是()。
A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对
15.若变量c为char类型,能正确判断出c为小写字母的表达式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)
B.(′a′>=c)and(′z′>=c)
C.(′a′<=c)and(′z′>=c)
D.(c>=′a′)&&(c<=′z′)
16.
17.下列关于c语言用户标识符的叙述中正确的是()。
A.用户标识符中可以出现下划线和中划线(减号)
B.用户标识符中不可以出现中划线,但可以出现下划线
C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
18.以下关于结构化程序设计的叙述中正确的是()。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
19.
20.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
二、2.填空题(20题)21.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。
22.子程序通常分为两类:【】和函数,前者是命令的抽象,后者是为了求值。
23.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n,p+9);
}
24.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
25.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;
26.【】是从二维表列的方向进行的运算。
27.阅读程序:
main()
{charstrl[]="howdoyoudo",str2[10];
char*p1=strl,*p2=str2;
scanf("%s”,p2);
printf("%s”,p2);
printf("%s\n",p1);
}
运行上面的程序,输入字符串HOWDOYOUDO则程序的输出结果是【】。
28.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)
while(s[i]){d[j]=【】;j++;}
d[j]=0;
29.若有如下程序:
main()
{ints=8,a=3,b=5,c=6;
if(a>b)s=a;a=b;b=s;
if(a>c){s=a;a=c;b=s);
if(b>c)s=b;b=c;c=s;
printf("%d,%d,%d\n",a,b,c);
}
则程序运行后的输出结果是【】。
30.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
31.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
32.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
33.函数mystrlen(char*s)的功能是求字符串s的长度,请填空。
mystrlen(char*s)
{char*t:
t=s;
while(【】)t++;
return(t-s);
}
34.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
35.测试的目的是暴露错误,评价程序的可靠性;而______得目的是发现错误的位置并改正错误。
36.下列程序的运行结果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
37.设有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
执行上面的程序段后,*(ptr+5)的值为______。
38.算法复杂度主要包括时间复杂度和【】复杂度。
39.以下程序运行后的输出结果是______。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
}
printf("%d%d\n",a,b);
}
40.函数delete(s,i,n)是作用是从字符串s中删除从第i个字符开始的n个字符,请填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]\'\0';
}
三、1.选择题(20题)41.以下数组定义中不正确的是_______。
A.inta[2][3];
B.intb[][3]={0,1,2};
C.intc[100][100={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
42.算法的时间复杂度是指______。
A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
43.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()
A.n+1B.n-1C.2nD.n/2
44.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定,else子句总是与()配对。
A.缩排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
45.以下正确的程序段是
A.cgarstr[20];scanf("%s",&str);
B.char*p;scanf("%s",p);
C.charstr[20];scanf("%s",&str[2])
D.charstr[20],*p=str;scanf("%s",p[2]);
46.以下叙述正确的是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
47.设x和y均为int型变量,则以下语句:“x+=y;y=x-y;x-=y;”的功能是______。
A.把x和y按从大到小排列B.把x和y按从小到大排列C.无确定结果D.交换x和y中的值
48.下列程序的输出结果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}
A.0B.2C.1D.3
49.以下程序的输出结果是()。{intx;int*y;}*p;intdt[4]={1,2,3,4};structstaa[4]={2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],};{p=aa;pfintf("%d\n",++(p->x));}
A.1B.2C.3D.4
50.以下叙述错误的是()。
A.变量的作用域取决于变量定义语句的位置
B.全局变量可以在函数以外的任何部位进行定义
C.局部变量的作用域可用于其他函数的调用
D.一个变量说明为static存储类型是为了限制其他编译单元的引用
51.阅读下列程序,则执行后的结果为#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A.3e,6B.62,5C.56,5D.3E,6
52.下列说法不正确的是()。
A.C语言程序是以函数为基本单位的,整个程序由函数组成
B.C语言程序的一条语句可以写在不同的行上
C.C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D.C语言程序的每个语句都以分号结束
53.下列描述中正确的是()。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据和相关文档的集合
54.下面程序输出的结果是______。main(){inti=5,j=9,z;x=(i==j?i:(j=7));printf(:\n%d,%d",i,j);}
A.5,7B.5,5C.语法错误D.7,5
55.下面程序的运行结果是include<stdio.h>main(){inta=28,b;chars[10],*p;p=s;do{b=a%16;if(b<10)*p=b+48;else*p=b+55;p++;a=a/5;}while(a>0);*p='\0';puts(s);}
A.10B.C2C.C51D.\0
56.以下程序段有错,错误原因是______。main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;}
A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
57.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
58.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。
A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");
B.switch((iht)x);{case1:printf("*\n");case2:printf("**\n");}
C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}
D.switch(a+b){case1:pfintf("*\n");casec:pfintf("**\n");}
59.有以下程序#include.<string.h>main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));}程序运行后的输出结果是
A.12B.15C.6D.5
60.下述关于数据库系统的叙述中正确的是______。
A.数据库系统减少了数据冗余
B.数据库系统避免了—切冗余
C.数据库系统中数据的—致性是指数据类型的—致
D.数据库系统比文件系统能管理更多的数据
四、选择题(20题)61.
62.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
63.在深度为5的满二叉树叶中,叶子结点的个数为()。
A.32B.31C.16D.15
64.层次型、网状型和关系型数据库划分原则是()。
A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式
65.在数据结构中,与所使用的计算机无关的是数据的()。
A.存储结构B.物理结构C.逻辑结构D.物理和存储结构
66.
67.有以下程序:
程序运行后的输出结果是()。
A.22B.76C.72D.62
68.下列程序的输出结果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8
69.
70.下列叙述中正确的是()。
A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
B.用E—R图只能表示实体集之间一对一的联系
C.用E—R图只能表示实体集之间一对多的联系
D.用E—R图表示的概念数据模型只能转换为关系数据模型
71.
72.设有定义:,以下不能计算出一"/Pchar型数据所占字节数的表达式是()。
73.下列C语言用户标识符中,不属于合法标识符的是
A.ad_intB.bb_7C._dd7D.int
74.有以下程序程序运行后的输出结果是()。
A.4B.3C.1D.9
75.有以下程序:
程序运行后的输出结果是()。
A.1,0B.0,1C.0,0D.1,1
76.若intk=8;,则执行下列程序后,变量k的正确结果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
77.
78.有以下程序:
程序的运行结果是()。
A.0B.10C.20D.出错
79.
80.有以下程序:
程序运行后的输出结果是()。
A.12B.14C.1234D.123456
五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个字符串长度相等,则返回第1个字符串。例如,若输入jiangxi<;Enter>;beijing<;Enter>;则函数返回jiangxi。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A“printf(“%d\\n”,11+011);”中,“11”为十进制数,“011”为八进制数,%d表示以十进制格式输出。因此,先将八进制数转化为十进制数,即(011)8=81×1+1×80=(9)10,相当于“printf(“%d\\n”,11+9)”,输出结果为20。故本题答案为A选项。
2.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。
3.A
4.C
5.D
6.D解析:本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就指向字符串中的第二个字符“B”,然后输出字符串“BCD”并换行;下面继续执行循环语句,指针变量p指向下一个字符“C”,输出字符串“CD”,最后一次循环,p指向字符“D”,输出字符串“D”。
7.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。
8.C
9.C
10.C本题考查C语言中的数据输出格式。
题目中定义了两个整型变量m、n,对这两个变量赋值,输入的数值为十六进制整数,并且有m=n。进行m-n运算后,将减法所得到的值赋给m,并将m值输出。其中printf的格式字符选用的格式字符为x,即以十六进制形式输出整数。注意,0x是表示该数为十六进制的标志,输出数据时,数据前面不会自动加上进制的标志。
11.D程序中S1和S2都是宏定义。S1(a+b)宏展开后的表达式为4*a+b+4*(a+b),即4*1+2+4*(1+2),结果为18;S2(a,b)宏展开后的表达式为4*(a)*(b)+b*a,即4*(1)*(2)+2*1,结果为10;S1(3)宏展开后的表达式为4*3+4*(3),结果为24;32(3+a,b+3)宏展开后的表达式为4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,结果为92。最终输出:18,34,92。故本题答案为D选项。
12.CP指向字符串”tuesday”,因此*(P+1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 擦玻璃机构课程设计
- 编程基础课程设计
- 笔记本修理课程设计
- 程序设计课程设计测试员
- 触发计数器课程设计
- 包装运输课程设计
- 基于PID的直流电机调速系统优化实践课程设计
- 学习行为数据采集课程设计课程设计
- 表面技术课程设计
- WebGL粒子系统优化方法课程设计
- 骨科术后神经肌肉电生物反馈训练方案
- 国际货运代理客服部培训
- 2026北京语言大学新编长聘人员招聘25人备考题库(第一批)带答案详解
- 中医基础理论全套课件415P-课件
- 2026年农村房屋买卖合同模板
- 县委办安保工作方案
- 八年级生物下册生物的遗传教学教案苏科版(2025-2026学年)
- 雨课堂学堂在线学堂云《工程伦理与学术道德(电科大)》单元测试考核答案
- 2025年人教版三年级道德与法治上册全册教学设计
- 工程机械设备租赁服务方案投标文件(技术方案)
- 挖掘机设备检验报告模板及填写指南
评论
0/150
提交评论