2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021-2022年黑龙江省大兴安岭地区全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面程序的运行结果是

#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

2.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

3.下面关于图的存储的叙述中正确的是()。

A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与顶点个数无关

B.用邻接表法存储图,占用的存储空间大小与图中边数和顶点个数都有关

C.用邻接矩阵法存储图,占用的存储空间大小与图中顶点个数和边数无关

D.用邻接矩阵存储图,占用的存储空间大小只与图中边数有关,而与顶点个数无关

4.

5.下列程序的输出结果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

6.有下列程序:程序执行后的输出结果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0

7.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。

A.iB.n-iC.n-i+1D.不确定

8.有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z) printf(“%d”,++z);else printf(“%d”,++y);printf(“%d\n”,x++);}程序的运行结果是()。

A.1B.41C.2D.331

9.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

10.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

11.

12.在下列几种排序方法中,空间复杂度最高的是()

A.归并排序B.快速排序C.插入排序D.选择排序

13.

14.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()

A.数据与程序独立存放

B.不同的数据被存放在不同的文件中

C.不同的数据只能被对应的应用程序所使用

D.以上三种说法都不对

15.软件工程的出现是由于()。A.A.程序设计方法学的影响B.软件产业化的需要C.软件危机的出现D.计算机的发展

16.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.大写字母B.下划线C.数字字符D.连接符

17.若有定义“inta=0,b=1,c=1;”,关于逻辑表达式“a++||b++&&c++”中各个部分的执行顺序,以下说法正确的是()。

A.先执行“b++”,再执行“c++”,最后执行“a++”

B.先执行“a++”,再执行“b++”,最后执行“c++”

C.先执行“c++”,再执行“b++”,最后执行“a++”

D.先执行“b++”,再执行“a++”,最后执行“c++”

18.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图。

A.5B.6C.7D.8

19.结构化程序所规定的三种最基本控制结构是A.A.输入、处理、输出

B.树形、网形、环形

C.顺序、选择、循环

D.主程序、子程序、函数

20.下列说法中错误的是A.A.只能在循环体内使用break语句

B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C.在while和do…while循环中,continue语句并没有使整个循环终止

D.continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

二、2.填空题(20题)21.以下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*pl=str1;

strcpy(str1+strlen(str1)/2,"esshe");

intf("%s\n",p1);

22.下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:【】。

t4.h的源程序为:

#defineN10

#dennef2(x)(x*N)

t4.c的源程序为:

#include<stdio.h>

#defineM8

#definef(x)((x)*M)

#include"t4.h"

#main()

{inti,j;

i=f(1+1);j=f2(1+1);

printf(%d%d\n",i,j);

}

23.以下程序运行后的输出结果是【】。

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

for(i=1;i<=4;i++)

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

24.以下程序的功能是:从键盘输入一字符串,要求将每个单词中的第一个字母改成小写(如果原来已是小写字母,则不变),然后输出转换结果,补足所缺语句。

main()

{charstr[200];inti=0;

while((______=getchar())!='\n');

str[i-1)='\0';

for(i=0;str[i]!='\0';i++)

if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')

str[i]+=______;

printf("%s\n",str);

}

25.若有定义doublea[5];,则a数组元素下标的上限为______。

26.软件测试按功能划分的方法划分,通常分为【】测试方法和黑盒测试方法。

27.用下面语句调用库函数malloc,使单精度型指针p指向具有40个字节的动态存储空间,请填空。

p=(float*)【】;

28.以下程序运行后的输出结果是【】。

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=-a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

printf("%d%d%d\n",a,b,c);

}

29.下面程序的输出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

30.下列程序的运行结果为【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

31.下列程序的运行结果是______。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

32.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。

add(intx,inty,【】z)

{【】=x+y;}

33.若有如下定义,则该数组的第一维大小为【】。

intb[][4]={1,2,3,4,5,6,7,8,9);

34.下面程序运行后的输出结果是()。

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

35.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

36.以下程序运行后的输出结果是【】。

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

37.下列程序的运行结果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

38.阅读下面语句,则程序的执行结果是【】。

#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);}

39.有以下程序:

#include<stdio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如果从键盘输入Y?N?<回车>,则输出结果为【】。

40.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。

三、1.选择题(20题)41.下列程序段选择项,使i的运行结果为3的程序段是()。

A.inti=0,j=O;(i=2,(j++)+i);

B.inti=1,j=0;j=i=((i=3)*2);

C.inti=0,j=1;(j=1)?(i=1):(i=3);

D.inti=1,j=1;i+=j+=1;

42.设定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。stmctst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

43.下列程序的运行结果为()。

#deflneMAX(x,y)(x)>(y)(x):(y)

main()

{inta=2,b=3,c=1,d=3,t;

printf("%d\n",(MAX(a+b,c+D))*100);

}A.A.500B.5C.4D.400

44.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

45.以下程序的功能是进行位运算main(){unsignedchara,b;a=73;b=~4&3;printf("%d%d\n",a,b);}程序运行后的输出结果是

A.43B.73C.70D.40

46.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

47.以下程序运行后,输出结果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45.0

48.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

49.下列能正确定义一维数组的选项是()。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

50.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。

A.4B.16C.32D.52

51.实型数据在计算机中表示的方法有()。

A.双精度型和单精度型B.小数形式和ASCII码法C.BCD码法和指数形式D.小数形式和指数形式

52.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n")}从第一列开始输入以下数据<CR>代表一个回车符。2743<CR>程序的输出结果是

A.66877B.668966C.6677877D.6688766

53.若有以下定义和语句:()ints[4][5](*ps)[5];ps=s;则对s数组元素的正确引用形式是

A.psq+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3

54.下列选项中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

55.在E-R图中,用来表示实体的图形是

A.矩形B.椭圆形C.菱形D.三角形

56.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

57.以下数组定义中不正确的是______。

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,}};

58.以下4个选项中,不能看作一条语句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

59.有以下程序:voidswap(char*x,char*y){cbart;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

60.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

四、选择题(20题)61.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

62.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

63.以下选项中可用作C程序合法实数的是()。A..1eOB.3.0e0.2C.E9D.9.12E

64.

65.若有以下语句

66.

67.分析以下程序的输出结果是()。

main

{inta=5,b=-1,c;

c=adds(a,b);

printf(“%d”,c);

c=adds(a,b);

printf(“%d\n”,c);}

intadds(intx,inty)

{staticintm=0,n=3;

n*=++m;

m=n%x+y++;

return(m);}

A.2,3B.2,2C.3,2D.2,4

68.CSS指的是下列()的缩写。

A.ComputerStyle.Sheets

B.CascadingStyle.Sheets

C.CreativeStyle.Sheets

D.ColorfulStyle.Sheets

69.

70.

71.

72.常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

73.链表不具有的特点是()。

A.不必事先估计存储空间B.可随机访问任意元素C.插入、删除不需要移动元素D.所需空间与线性表长度成正比

74.34.有以下程序

#include<stdio.h>

unionpw

{inti;

charch[2];

}a;

main()

{a.ch[0]=13;a.ch[1]=0;

printf("%d\n",a.i);

}

程序的输出结果是

A.13B.14

C.0D.20

75.现有定义inta;doubleb;floatc;chark;,则表达式a/b+C—k值的类型为:()。

A.intB.doubleC.floatD.char

76.

77.

78.有以下程序:

程序运行后的输出结果是()。

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

79.下列定义数组的语句中,正确的是()。

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

请修改函数proc()中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,定义了NxN的二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a数组中的值为0127919745238314568259141则返回主程序后s的值应为3.375。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}

参考答案

1.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。

2.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

3.B

4.D

5.C

6.Bif条件表达式“a--‖b--&&--c”使用了逻辑或运算符和逻辑与运算符。因为逻辑与运算符优先级比逻辑或运算符优先级高,所以条件表达式等价于“(a--)‖(b--&&--c)”,自左向右运算,执行“a”,因为a初值为1,所以a--的值为1,执行完后a的值为0;又因为逻辑或运算符的短路原则,当a--的值为1时,条件为真,后面的表达式b--&&--c不执行。程序执行if语句块,输出a、b、c的值为:0,1,1。本题答案为B选项。

7.C

8.Aelse总是与离它最近的if配对,所以当第1个if语句的判断条件不成立时,不再执行第2个if语句以及与第2个if语句配对的else语句,而是直接执行“x++”,输出1。故本题答案为A选项。

9.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。

10.B关系具有以下7个性质。①元组个数有限性:二维表中元组的个数是有限的。②元组的唯一性:二维表中任意两个元组不能完全相同。③元组的次序无关性:二维表中元组的次序,即行的次序可以任意交换。④元组分量的原子性:二维表中元组的分量是不可分割的基本数据项。⑤属性名唯一性:二维表中不同的属性要有不同的属性名。⑥属性的次序无关性.二维表中属性的次序可以任意交换。⑦分量值域的同一性:二维表属性的分量具有与该属性相同的值域,或者说列是同质的。满足以上7个性质的二维表称为关系,以二维表为基本结构所建立的模型称为关系模型。本题答案为B选项。

11.B

12.A

13.C

14.D解析:在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。由此可知,选项A.B与C中的说法都是错误的。

15.C解析:软件工程的基本概念。软件工程概念的出现源自于软件危机。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念。

16.D[解析]C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D)选项中的连接符不合法。

17.BC语言中运算符有优先级和结合性。自增、自减运算符的优先级高于逻辑运算符,逻辑运算符中逻辑与“&&”的优先级比逻辑或“||”高,逻辑运算符的结合性自左向右。所以题干中表达式等价于“(a++)||((b++)&&(c++))”。运算顺序为:首先执行“a++”,再执行“b++”,最后执行“C++”。故本题答案为B选项。

18.A:在一个无向图G中,若从顶点Vi到顶点Vj有路径相连,则称Vi和Vj是连通的。连通图是指任意两个结点之间都有一个路径相连。6个节点的无向图,至少要5个边才能确保是任意两个节点之间都有路径相连。下图是一种可能的连接方式:故本题选A。

19.C解析:结构化程序设计方法采用顺序、选择和循环三种基本程序控制结构编写程序,从而使程序具有好的结构。

20.A解析:只能在循环体内和switch语句体内使用break语句,当break出现在循环体中的switch语句体时,其作用是跳出该switch语句体。当break出现在循环体中,但不在switch语句体中时,则在执行break后,跳出本层循环体。continue语句的作用是,跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

21.HowdoessheHowdoesshe解析:strcpy(str1,s1):字符串拷贝函数,作用是将字符串s1拷贝到字符数组str1中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括‘\\0’在内。本题中strlen(strl)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strqoy(strl+6,'esshe');因此可得答案为Howdoesshe。

22.16111611解析:题目中第1条要替换的语句i=f(1+1);展开后是i=((1+1)*M);继续展开为i((1+1*8),结果使i=16。而第2条语句j=f2(1+1)”;展开后为j=(1+1*N);继续展开为j=(1+1*10),结果使j=11。故程序运行的结果是输出1611。

23.1371513715解析:程序中n是一个有5个元素,且元素值全为0的数组。在for循环中,当i=1时,n[1]=n[0]*2+1,此时n[1]=1;i=2时,n[2]=n[1]*2+1,此时n[2]=3;i=3时,n[3]=n[2]*2+1,此时n[3]=7;i=4时,n[4]=n[3]*2+1,此时n[4]=15,循环结束。输出函数中%d后有空格,因此输出结果为13715。

24.str[i++]32。str[i++]32。解析:while语句的循环控制条件既要将相应元素赋予从键盘输入的字符,又要改变元素的下标值,以便接受下一个字符,可用下标变量的后置加实现;小写字母的ASCII码值比相对应的大写形式大32。

25.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

26.白盒白盒解析:软件测试的方法分为白盒测试方法和黑盒测试方法。

27.malloc(40)malloc(40)解析:库函数malloc()只有一个参数,就是所需分配内存的字节数,然后返回一个void*指针。本题要求分配40个字节,故直接调用malloc(40)就可以了。

28.45994599解析:if语句只对紧跟其后的一条语句或语句块产生作用。因此,题目中两条if语句只有t=a;和t=b是if的子句。第1条if语句中b<a为假,所以跳过语句t=-a;,执行a=c;c=t,a=5、b=4、c=99。第2条if语句的判断条件a<c&&b<c为真,所以后面3条语句都被执行,这3条语句构成一次a和b的内容交换。所以最后输出的结果是:4599。

29.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

30.7467

31.efghefgh解析:本题考核的知识点是通过指针引用字符串.函数“的作用是让形参指针s指向该字符串的右半部分.主函数中首先定义了一个字符型指针变量p和字符型指针str;并初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可知该函数返回的指针,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(sD)的返回值)所指向的字符串为“efgh。

32.int**zint*\r\n*z解析:函数希望通过形参z带回结果,形参z必须是指针类型的。由于返回整型结果,所以第一处填int*;函数返回前必须先把结果通过形参z间接引用传回,第二处应填*z。

33.33解析:在初始化一个含有未指定维度的数组时,C语言总是在能完全容纳初始化列表的基础上尽可能小地设定该维度,来作为指定维度的标准。本题有9个初始值,若指定第一维度为2,则数组含有2*4=8个元素,容纳不下,所以指定维度为3,3*4=12,足够容纳了。故应该填3。

34.246

35.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式');关闭文件的函数为:fclose(),调用形式为:fclose(fp),其中fp为文件指针。

36.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

37.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

38.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

39.XX解析:程序是从键盘缓冲区循环接收字符,并输出接收到的字符在ASCII码表中的前一个字符,直到接收到‘?’为止。

40.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。

41.D

42.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y\\z。

43.A解析:本题考查带参数的宏的定义及相关运算:(x)>(y)(x):(y)是x>y时输出x,否则输出y,调用(MAX(a+b,c+d))*100时,(a+b=5)>(c+d=4),所以输出a+b=5,所以x=5*100。

44.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都足逻辑1时,表达式才返回值是1;当“||”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4||14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。

45.A解析:是位异或运算符,其作用是将左右运算分量的相应二进制位进行异或操作。即,相应位同时为。或同时为1则结果相应位为0,否则结果相应位为1。所以a=73=(00000111)2(00000011)2=(00000100)2=4。~是位反运算符,作用是将运算分量的二进制位按位取反。即,原来是0的二进制位变成1,原来是1的变成0。&是位与运算符,其作用是将左右运算分量的相应二进制位进行与操作。即,相应位同时为1时结果相应位为1,否则结果相应位为0。所以b=-4&3=~(00000100)2&(00000011)2(11111011)2&(00000011)2=(00000011)2=3。故应该选择A。

46.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

47.A

48.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。

49.B解析:在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项A)错误;选项C)中定义的是一个字符变量C:选项D)中整型数组a中只能存储整型数据,而不能存储字符串常量“0123”。

50.C本题主要考查逗号表达式。逗号是一个特殊的运算符,它具有所有运算符中最低的优先级。在C语言中,用它可以将两个表达式连接起来,逗号表达式的一般表现形式为:

表达式1,表达式2,…,表达式n

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,依次往后计算,整个逗号表达式的值是最后一个表达式的值,如“3+5,5+6”的值是11。

在本题中,逗号表达式为i=4,j=16,k=32,根据上面的分析,计算逗号表达式得到的结果为k=32,最后将逗号表达式的结果赋值给变量x,那么变量x的值为32。因此,本题的正确答案选C。

51.D解析:实型数据有两种表示形式:①小数形式。它由数字和小数点组成(注意必须有小数点)。123、123.0、0.0都是小数形式。②指数形式。如123e3或123E3都代表123*103(上标)。注意,字母e(或E)之前必须有数字,且e后面的指数必须为整数。如e3、3.le3.5、.e3、e等都不合法。所以,本题应该选择D。

52.A解析:本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量c中的字符输出到标准输出设备上。并且字符可以看作整数参与运算。

53.C

54.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。

55.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。

56.C解析:对象的封装性是指从外面看只能看到对象的外部特性;而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

57.D解析:一维数组的定义方式为:

类型说明符数组名[常量表达式];

选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。

58.D解析:C语言的语句都用“;”结束。如果只有一个分号,称为“空语句”。用一对花括号把若干语句括起来构成一个语句组,称为“复合语句”,在语法上视为一条语句。因此选项A是一条语句。选项B是逗号表达式加分号构成的语句。选项C是一条if语句,该语句的if子句是一条空语句。选项D中“if(b==0)m=1;n=2;”是两个表达式语句。所以,4个选项中选项D符合题意。

59.C解析:函数swap()实现的功能为交换字符指针x和y首位的数值。

60.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

61.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

62.D

63.Ae前e后有数字,e后数值为整数,所以B)、c)、D)错误。

64.C

65.A本题考核的知识点是结构体类型定义和结构体的基本概念。结构体类型的定义格式为:slxuct结构体名{成员说明列表};结构体变量的定义有3种形式。第一种:定义结构体类型的同时定义结构体变量,如struct结构体名{成员说明列表)变量;第二种:先定义一个结构体类型,然后使用该类型来定义结构体变量,如structstudent{成员说明列表l;student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如truct§tudent{成员说明列表l变量。

66.C

67.A

68.B

69.B

70.C

71.B

72.AA。【解析】线性表的存储通常分为两种存储结构:顺序存储结构和链式存储结构。

\n

73.B链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。

74.A本题主要考查联合体的内容。关于联合体,我们需要注意以下几个特点。

(1)联合体不允许做初始化赋值,赋值只能在程序中进行。

(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论