![2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页](http://file4.renrendoc.com/view/bbd3c6fb3849c9f7dda8491e0507fb19/bbd3c6fb3849c9f7dda8491e0507fb191.gif)
![2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页](http://file4.renrendoc.com/view/bbd3c6fb3849c9f7dda8491e0507fb19/bbd3c6fb3849c9f7dda8491e0507fb192.gif)
![2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页](http://file4.renrendoc.com/view/bbd3c6fb3849c9f7dda8491e0507fb19/bbd3c6fb3849c9f7dda8491e0507fb193.gif)
![2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页](http://file4.renrendoc.com/view/bbd3c6fb3849c9f7dda8491e0507fb19/bbd3c6fb3849c9f7dda8491e0507fb194.gif)
![2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页](http://file4.renrendoc.com/view/bbd3c6fb3849c9f7dda8491e0507fb19/bbd3c6fb3849c9f7dda8491e0507fb195.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年湖南省益阳市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。
A.O(1)B.O(log2n)C.O(n)D.O(n2)
2.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
3.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_
4.
5.若有定义“chars1[100]=“name”,s2[50]=“address”,s3[80]=“person”;”,要将它们连接成新串“personnameaddress”,正确的函数调用语句是()。
A.strcat(strcat(s1,s2),s3);
B.strcat(s3,strcat(s1,s2);
C.strcat(s3,strcat(s2,s1);
D.strcat(strcat(s2,s1),s3);
6.有以下程序:
程序执行后的输出结果是()。
A.45B.50C.60D.55
7.以下对C语言函数的有关描述中,正确的是
A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.函数必须有返回值,返回值类型不定
8.
9.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是
A.P的值不等于12345并且n的值小于3
B.P的值等于12345并且n的值大于等于3
C.P的值不等于12345或者n的值小于3
D.P的值等于12345或者n的值大于等于3
10.
11.以下叙述中错误的是()。
A.C程序中的#include和#define行均不是C语句
B.除逗号运算符外,赋值运算符的优先级最低
C.C程序中,j++;是赋值语句
D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
12.
有下列程序:
main
{charp[]={a,h,c},q[]="a";
printf("%d%d\n".sizeof(P),sizeof(q));
}
程序运行后的输出结果是()。
A.44B.33C.34D.43
13.若有如下形式的函数:intfun(inta[],int*p,intn){…}调用函数之前需要对函数进行声明,则以下选项中错误的是()。
A.intfun(int,int,int);
B.intfun(inta[],int*p,intn);
C.intfun(inta[],int*,int);
D.intfun(int[],int*,int);
14.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值
15.下面函数的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}
A.求字符串的长度B.比较两个字符串的大小C.将字符串x复制到字符串y中D.将字符串x连接到字符串y后面
16.在10000个int型变量中找出最大的100个,使用下列排序算法中哪一种用时最快()
A.冒泡排序B.快速排序C.归并排序D.堆排序
17.以下关于结构化程序设计的叙述中正确的是()。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
18.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
19.栈和队列的共同点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点
20.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.选择排序C.快速排序D.归并排序
二、2.填空题(20题)21.按"先进后出"原则组织数据的数据结构是【】。
22.人员基本信息一般包括:身份证号、姓名、性别、年龄等。其中可以作为主关键字的是()。
23.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
24.下列程序的输出结果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
25.strcat函数的作用是【】。
26.在面向对象方法中,允许作用于某个对象上的操作称为【】。
27.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
28.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。
29.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。
30.下面程序的运行结果是【】。
voidswap(int*a,int*b)
{
int*tp;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
31.下面程序的运行结果是()。
#include<stdio.h>
#defineSlZE12
main()
{chars[SIZE];inti;
for(i=0;i<SIZE;i++)s[i]='A'+i+32;
sub(s,5,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,intt1,intt2)
{charch;
while(t1<t2)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
}
}
32.在关系数据库中把数据表示成二维表,每一个二维表称为【】。
33.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。
34.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
35.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++)
printf("%d%d",X--,y);
}
36.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。
37.在关系模型中,二维表的行称为______。
38.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。
39.数据的逻辑结构有线性结构和______两大类。
40.对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试和动态测试。代码检查属于______测试。
三、1.选择题(20题)41.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不确定D.bcdef
42.下列二维数组初始化语句中,不正确的是()。
A.intb[][2]={1,2,3,4,5,6,7};
B.intb[3][5]={0,0,0};
C.intb[][4]={{1,2},{3,4,5},{6}};
D.intb[3][2]={(1,2),(3,4),(5,6)};
43.下列关系运算的叙述中,正确的是()。A.A.投影、选择、连接是从二维表行的方向进行的运算
B.并、交、差是从二维表的列的方向来进行运算
C.投影、选择、连接是从二维表列的方向进行的运算
D.以上3种说法都不对
44.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=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
45.有三个关系R、s和T如下:
由关系R和s通过运算得到关系T,则所使用的运算为()。
A.并B.自然连接C.笛卡尔积D.交
46.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______.
A.cedbaB.acbedC.decabD.deabc
47.单个用户使用的数据视图的描述称为______。
A.外模式B.概念模式C.内模式D.存储模式
48.设有定义语句:charc1=92,c2=92;,则以下表达式中值为零的是
A.c1c2
B.c1&c2C.c1~c2D.c1|c2
49.下列四个叙述中,错误的是_______。
A.C语言中的关键字必须小写
B.C语言中的标识符必须全部由字母组成
C.C语言不提供输入输出语句
D.C语言中的注释行可以出现在程序的任何位置
50.以下程序的运行结果是______。#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}
A.运行后报错B.66C.612D.55
51.进行二分法查找,则线形表______。
A.必须以顺序方式存储
B.必须以链接方式存储,且数据元素已按值排好序
C.必须以链接方式存储
D.必须以顺序方式存储,且数据元素已按值排好序
52.在位运算中,操作数每右移一位,其结果相当于()
A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16
53.以下选项中,与k==n++完全等价的表达式是()。
A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
54.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3
55.若指针ps已正确定义,要使ps指向能够存储8个字符的动态存储单元,以下不正确的语句是()
A.ps=(char*)malloc(8);
B.ps=(char*)malloc(sizeof(char)*8);
C.ps=(char*)calloc(8,sizeof(char))
D.ps=8*(char*)malloc(sizeof(char))
56.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为______。
A.希尔排序B.冒泡排序C.插入排序D.选择排序
57.若有如下定义:structstu{charname[9];intage;floatscore;);structstuclass[10]={{"Li",17,67},{"Song",19,80},{"guo",18,79},{"Zhao",16,69}};根据上面的定义,若执行“printf("%s:%d%f",class[3].name,class[3].age,class[3].score);"则输出的正确结果是()。
A.Song:19,80.000000
B.Zhao:16,69.000000
C.Li:17,67Song;19,80
D.guo:18,79Zhao;16,69
58.以下不正确的定义语句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={′1′,′2′,′3′,′4′,′5′};
D.charc2[]={′\x10′,′xa′,′\x8′};
59.有以下程序
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");
for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);
fprintf(fp,"\n");
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d",&n);
fclose(fp);
printf("%d\n",n);
}
程序的运行结果是
A.12300B.123C.1D.321
60.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.daf","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);
A.12300B.123C.1D.321
四、选择题(20题)61.
62.下列程序执行后的输出结果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}
A.5B.6C.7D.8
63.有以下程序
#include"stdio.h"
main()
{charstr[]="tomeetme",str1[]="toseeyou";
char*p=str,*p1=str1;
inti;
for(i=0;i<7;i++)
if(*(p+i)==*(p1+i))
putchar(*(p+i));
printf("\n");
}
程序的运行结果是
A.to
B.tomeet
C.toee
D.程序段不能通过编译
64.在一个C源程序文件中所定义的全局变量,其作用域为()。
A.由具体定义位置和extem说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
65.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
66.有以下程序:
程序运行后的输出结果是()。
A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1
67.
68.
69.执行语句“for(i=1;i++<;4;);”后,变量i的值是()。
A.3B.4C.5D.不定
70.有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的输出结果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx
71.(11)算法的时间复杂度是指()
A.执行算法程序所需要的时间
B.算法程序的长度
C.算法执行过程中所需要的基本运算次数
D.算法程序中的指令条数
72.
73.
有以下程序段:
intx=3;
do
{printf("%d",x-=2);)
while(!(--x));
其输出结果是()。
A.1B.30C.1-2D.死循环
74.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4
75.数据流图中带有箭头的线段表示的是()。
A.控制流B.事件驱动C.模块调用D.数据流
76.有以下程序
77.设有定义:
则以下赋值语句中错误的是()。
A.data2=(2,6);
B.data2=datal;
C.data;real=datal.real;
D.data2.real=datal.unreal;
78.有以下程序:
程序运行后的输出结果是()。
A.SunDan20042
B.SunDan20044
C.LiSiGuo20042
D.YangSan20041
A.提高耦合性、降低内聚性有利于提高模块的独立性
B.降低耦合性、提高内聚性有利于提高模块的独立性
C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D.内聚性是指模块间互相连接的紧密程度
79.有以下程序:
程序运行后的输出结果是()
A.32B.12C.21D.22
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。例如原始字符串是“ab45c6djfd789”,则输出后的字符是“456789”。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为70,则程序输出:
7111421222833354244495556636670
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{}
voidmain
{
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)//每行输出20个数
{printf("%4d",arr[k]);
printf("\n");
}
else
printf("%4d",arr[k]);
printf("\n");
}
参考答案
1.C
2.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
3.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。
4.D
5.Bstrcat函数是字符串连接函数,调用形式为strcat(s1,s2)。其功能是将s2指向的字符串的内容连接到s1指向的存储空间中,并返回s1的地址。由题意可知,新串首地址为s3,所以s3应该是第一参数,选项A、D错误。同理,新串中除了S3所指的字符串,剩下的字符串为“nameaddress”,即首地址为s1,所以调用strcat函数,s1是第一参数。所以正确的函数调用语句为“strcat(s3,strcat(s1,s2))”。故本题答案为B选项。
6.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。
7.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。
8.B
9.D解析:本题考查的知识点是do-while循环结构循环执行条件的判断.使用do-while语句必须注意以下几点:
先执行语句,后判断表达式。所以,无论一开始表达式的值为“真”还是“假”,循环体中的语句至少执行一次,这一点与while不同,
如果do-while语句循环体部分是由多个语句组成,则必须用花括号括起来,使其形成复合语句。
C语言中的do—while语句是在表达式“真”时重复执行循环体。
在本题中,循环执行判断条件为while后面括号里的表达式即p!=12345&&n<3(意思为p不等于12345且n小于3)是否为“真”,由此可得循环结束的条件为:p大于12345或者p小于12345又或者n大于等于3。选项A的意思是:p的值不等于12345并且n的小于3和while后面括号里的表达式等价是循环执行的条件而不是循环结束的条件,所以选项A不正确;选项B的意思是:p的值等于12345并且n的值大于3,不是循环结束的条件一个子集,所以选项B不正确;选项C的意思是:p的值不等于12345或者n的值小于3前一半是结束条件的子集,后一部分不是结束条件,所以选项C不正确;选项D描述的意思是:p的值等于12345或者你的大于等于3是结束条件的子集,所以选项D满足题意。所以4个选项中D正确。
10.B
11.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。
12.C
\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。
\n
\n
\n
13.AC语言中,函数声明的函数名、返回值类型和参数列表必须与函数定义相同。其中参数列表中可以省略参数名。题干中,fun函数返回整型,3个参数分别是:整型指针、整型指针、整型。选项A中,第1个参数应该是整型指针类型,第2个参数也应该是指针类型,错误;其他选项都正确。故本题答案为A选项。
14.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。
(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。
15.A
16.B
17.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。
18.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。
19.C解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”(或“先进后出”)的线性表;而队列只允许在表的一端进行插入操作,在另一端:进行删除操作,是一种“先进先出”(或“后进后出”)的线性表。因此栈和队列的共同点是只允许在端点处插入和删除元素。
20.A解析:以下几种算法的时间复杂度分别为:冒泡排序(n2);选择排序(n2);快速排序(nlog2n);归并排序(nlog2n)。当排序元素序列基本有序的情况下,冒泡排序的交换次数为0,只是顺序扫描数据而已,所以其效率是最高的。
21.栈栈解析:考查考生对栈和队列概念的掌握。按'先进后出'原则组织数据的数据结构是栈;按'先进先出'原则组织数据的数据结构是队列。
22.身份证号身份证号解析:主关键字是表中区别不同记录的标识,在该表中只有身份证号能具有这个作用,所以用其作为主关键字。
23.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。
24.66解析:条件运算符的优选级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y=1时,*(ptr+y)=4,(*ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4:当y=2时,*(ptr+y)=6,(*(ptr+y)<x条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。
25.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。
26.方法方法解析:在面向对象方法中,方法是指允许作用于某个对象上的各种操作。
27.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
28.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
29.-16-16解析:将赋值运算符右侧的“表达式”的值赋给左侧的变量,并且赋值运算符按照“自右而左”的结合顺序,本题表达式应先算m的值为10,再运算y的值为8,最后计算y=y+(-8)=-8+(-8)=-16。
30.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针.变量a和b,a和b分别指向了实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依旧是原来的值。
31.abcdelkjihgfabcdelkjihgf解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数sub(char*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。
32.关系或一个关系关系或一个关系解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。
33.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。
34.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
35.101091101091解析:for(表达式1;表达式2;表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。
36.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。
37.元组元组解析:在关系型数据库中,用二维表来表示关系,二维表的表名即关系名,二维表的行称为关系的元组,二维表的列,称为关系的属性。
38.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
39.非线性结构非线性结构
40.静态静态解析:静态测试包括代码检查、静态结构分析,代码质量度量等。静态测试不实际运行软件。
41.C解析:字符串少一个结束标志,所以输出的结果不确定。
42.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。
在选项D)赋值表达式中,对每一维的元素赋初值应用{},而不是()。
43.C解析:在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等),还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行运算的。后者是从二维表的列的方向来进行运算的。
44.B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&A),10和5届于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&B)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。
45.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。
46.A解析:由二叉树后序遍历序列和中序遍历序列可以唯一确定一棵二叉树。二叉树BT的后序遍历序列为dabec,故BT的根结点为c(后序遍历序列的最后一个结点为树的根结点):而BT的中序遍历序列是debac,即遍历序列中最后一个结点为根结点,说明BT的右子树为空。由BT的后序遍历序列和中序遍历序列可知BT左子树的后序遍历序列和中序遍历序列分别为dabe和deba,因此BT左子树的根结点是e。再由中序遍历序列可知其左子树为d,右子树为ba。因此BT的前序遍历序列为cedba。
47.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。
48.A解析:选项A为异或运算符,如果参加运算的两个位相同,结果为0,否则为1。显然选项A中参加运算c1和c2相同,故其值位0;选项B为位与运算,如果参加运算的两位都为1,则结果为1,否则结果为0,选项B中参加运算的c1和c2都为真,所以结果为1;选项C为取反运算,用来对一个二进制取反,显然c2取反后不为0,选项D为异或运算,参加运算的两位只要有一个为1,那么运算结果为1,显然参加运算的c1和c2都不为0,故运算结果不为0。
49.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第—个字符必须为字母或下划线。
50.A解析:用指针变量p+5对指针变量q进行赋值的正确方法为p=q+5。
51.D
52.B
53.A解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然为n原来的值,即k的值变为n加1之前的值。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价;选项B中先n加1,然后将n加1后的值赋给k,所以这个表达式和本题中表达式不等价:选项C中先计算表达式++n的值,执行++n后,k变为n加1后的值,所以这个表达式和题目中的表达式不等价;选项D中表达式展开为k=k=(n+1),k被累加,所以这个表达式和题目中的表达式不等价。所以4个选项中A正确。
54.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。
55.D
56.A解析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。
57.B解析:class[10]是结构体型的数组,class[3]为{'Zhao',16,69}。
58.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。
59.B解析:在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。
60.B解析:在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。
61.A
62.D解析:本题中的宏调用MA(1+a+b)展开后的结果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以输出的结果是8,选项D正确。
63.C本题属于综合性题目,考查的知识点有字符数组的指针表示,for循环与if语句的结合,初始时定义两个字符数组:str和str1,用两个指针p、p1分别指向这两个数组,每个数组中都是长度为8的字符串。定义变量i作为数组下标的增量,if语句表示如果有*(p+i)=*(p1+i),即str[i]=str1[i],则将相同的字符输出。tomeetme中与toseeyou相同位置上具有的相同字符为toee。
64.A全局变量的作用域是从声明处到文件的结束。所以选择A)。
65.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。
66.Dintm=1,n=2,*P=&m,。q=&Il,*r;即指针变量P指向m,指针变量q指向n,r=P;P=q;q=。;即通过指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论