2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年四川省自贡市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

2.

3.有以下程序:#include<stdio,h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第二个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

4.

5.如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。A.单链表B.双链表C.单循环链表D.顺序表

6.有以下程序#include<stdio.h>main(){inta=5,b=l;t=(a<<2)|b;printf("%d\n",t);}程序运行后的输出结果是______。A.21B.11C.6D.1

7.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

8.

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

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";

10.以下叙述中错误的是()。

A.C语言的可执行程序是由一系列机器指令构成的

B.用C语言编写的源程序不能直接在计算机上运行

C.通过编译得到的二进制目标程序需要连接才可以运行

D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

11.线性结构是数据元素之间存在一种()。

A.一对多关系B.多对多关系C.多对一关系D.一对一关系

12.有以下程序

#include<stdio.h>

main()

{ini,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j)>3)break;

m=i*j;

}

}

printf("m=%d\n",m);

程序运行后的输出结果是A.m=6B.m=2C.m=4D.m=5

13.C语言提供的合法的数据类型关键字是()。

A.DoubleB.shortC.integerD.Char

14.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456

15.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

16.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

17.一个顺序栈一旦声明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

18.若需要利用形参直接访问实参,则应把形参变量说明为____参数。

A.指针B.引用C.值D.变量

19.

20.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

二、2.填空题(20题)21.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

22.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

23.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

25.与二维表中的“行”的概念最接近的概念是()。

26.在树形结构中,树根结点没有______。

27.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

28.在面向对象方法中,类之间共享属性和操作的机制称为______。

29.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

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

}

30.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。

31.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。

32.下面程序的运行结果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

33.树中度为零的结点称为______。

34.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n"j);}

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

35.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

36.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main()

{intx[10],a[9],i;

for(i=0;i<10;i++)scanf("%d",&x[i]);

for([11];i<10;i++)

a[i-1]=x[i]+[12];

for(i=0;i<9;i++)printf("%d",a[i]);

printf("");

}

37.以下函数的功能是计算请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

{fac=fac【】;

s=s+fac;

}

returns;

}

38.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1][

39.若有定义:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},则初始化后,a[2][2]得到的初值是______。

40.算法的复杂度主要包括【】复杂度和空间复杂度。

三、1.选择题(20题)41.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

42.下列叙述中正确的是______。

A.软件交付使用后还需要维护

B.软件一旦交付使用就不需要维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

43.有以下程序:matin(){char*s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[o]);}执行后的输出结果是______。

A.n,twoB.t,oneC.w,oneD.o,two

44.以下叙述中错误的是()

A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B.在程序结束时,应当用fclose函数关闭已打开的文件

C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D.不可以用FILE定义指向二进制文件的文件指针

45.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定,else子句总是与()配对。

A.缩排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if

46.下列语句中,在字符串s1和s2相等时显示"theyareEqual"的是()。

A.if(*s1==*s2)

B.if(!strcmp(s1,s2))puts("theyareEqual");puts("theyareEqual");

C.if(s1==s2)

D.if(strcmp(s1,s2))Puts("theyareEqual");puts("theyareEqual");

47.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是

A.34756B.23445C.35745D.12345

48.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

49.下列程序的执行结果是______。main(){intx=2,y=2,z=0;if(z<0)if(y>o)x=4;elseX=5;printf("%d\t",x);if(z=y>0)x=7;elseif(y=0)x=3;elseX=6;printf("%d\t",x);printf("%d\t",z);}

A.271B.432C.570D.250

50.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);}该函数的类型是()。

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

51.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

52.以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

A.1234B.123C.12D.1

53.若有以下定义和语句,则输出的结果是______。charc1='b',c2='e';printf("%d,%c\n",c2-c1,c2-'a'+"A");

A.2,MB.3,EC.2,ED.输出结果不确定

54.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);retumy-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

55.若有以下定义和语句,则下列选项中对w数组元素非法引用的是______。intw[2][3],(*pw)[3];pw=w;

A.w[0]+2B.*(pw+1)[2]C.pw[0][0]D.*(pw[1]+2)

56.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.++b;C.a=a++=5;D.a=double(b);

57.以下程序运行后,输出结果是

#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

58.算法一般都可以用______控制结构组合而成。

A.循环、分支、递归B.顺序、循环、嵌套C.循环、递归、选择D.顺序、选择、循环

59.若有“doublea;”,则正确的输入语句是()。

A.scanf("%lf",A);

B.scanf("%f",&A);

C.scanf("%lf",&A)

D.scanf("%le",&A);

60.有以下程序#include<stringh>main(intargc,char*argv[]){inti,len=0;fot(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行exabcdefgh3k44执行后输出结果是

A.14B.12C.8D.6

四、选择题(20题)61.下列叙述中正确的是()。

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率

62.若有以下定义和语句

structa

{intn,m;};

structast[3]={{2,3},{4,5},{6,7}};

structa*p=st;

则以下错误的引用是

A.(p++)->n;B.st[0].n;C.(*p).n;D.P=&st.m,

63.

64.一个函数内有数据类型说明语句如下:

doublex,y,z(10)

关于此语句的解释,下面说法正确的是()。

A.z是一个数组,它有10个元素

B.z是一个函数,小括号内的10是它的实参的值

C.x是一个变量,小括号内的10是它的初值

D.语句中有错误,因为“z(10)”应该为“z[10]”

65.下列数据结构中,属于非线性结构的是()。

A.带链队列B.循环队列C.带链栈D.二叉树

66.以下程序段完全正确的是()。

A.int*P;scanf("%d",&p);

B.int*P;scanf("%d",p);

C.intk,*p=&k;scanf("%d",p);

D.intk,*p;*p=&k;scanf("%d¨,p);

67.

68.以下不合法的字符常量是()。

A."、、"B.’\”’C.’\018’D.\xcc"

69.有以下程序

#include<stdio.h>

intfun(int(*s)[4],intn,intk)

{intm,i;

m=s[0][k];

for(i=l;i<n;i++)

if(s[i][k]>m)m=s[i][k];

returnm;

}

main()

{inta[4][4]={{1,2,3,4},{11,12,13,14},{2l,22,23,24},{31,32,33,34}};

printf("%d\n",fun(a,4,0));

}

程序的运行结果是

A.4B.34

C.31D.32

70.

71.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:

该语句所表示的含义是()。

A.

B.

C.

D.

72.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

73.若有定义语句:

74.在下列选项中,哪个不是一个算法一般应该具有的基本特征()。

A.无穷性B.可行性C.确定性D.有穷性

75.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

76.分布式数据库系统不具有的特点是

A.数据的物理分布性和逻辑整体性B.位置透明性和复制透明性

C.事物管理的集中性D.数据冗余

77.

78.

79.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

printf("%d\n",________);

}

要输出45,则在下画线处应填入的选项是

A.p->next->aB.++p->a

C.(*p).a++D.p++->a

80.有以下程序,其输出结果是()。

voidmain()

{

floarx=1;

inty;

x++;

y=x+1;

printf("x=%d,y=%f",x,y);

}

A.x=2,y=3

B.x=2,y=3.0

C.x=2.0,y=3

D.x=0,y=0.000000

五、程序改错题(1题)81.给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符:按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部。例如,当a.所指字符串中的内容为“abcdef9”,b所指字符串中的内容为“1234”时,c所指数组中的内容应“a4b3c2dlef9”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdef9”时,c所指数组中的内容应该为“lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.编写函数fun(),其功能是计算:

s作为函数值返回。

在C语言中可调用log(n)函数求1n(n)。log函数的引

用说明为:doublelog(doublex)。

例如,若m的值为20,则fun()函数值为6.506583。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。

试题程序:

参考答案

1.D解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

2.C

3.A解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也是一个字符)。故本题中变量c1被赋予字符a,c2被赋予回车符。

4.B

5.D

6.A解析:本题主要考查了C语言的逻辑运算符,先将变量a,b的值转换为2进制数,a=00000101,b=00000001,a先左移2位结果为00010100,再与b按位或运算,结果为00010101,转换为十进制数为21,因此,选项A是正确的。

7.A函数fun()通过递归调用实现的功能为n+(n-1)+…+1,故程序的输出结果为55。

8.A

9.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

10.Dc语言的可执行程序是由一系列机器指令组成的。用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离c语言集成开发环境。故答案为D)。

11.D

12.A

13.Bdouble,char,int,第一个字母都是小写。

14.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

15.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

16.C在C语言中null等价于数字0。

17.A

18.A

19.D

20.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。

21.数据存储数据存储

22.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

23.输出结果输出结果解析:注意:测试的基本方法和步骤。

24.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。

25.元组元组解析:在关系模型中,数据结构用单一的二维表结构来表示实体及实体间的联系。一个关系对应一个二维表。二维表中的列称为属性,属性值的取值范围称为值域。二维表中的一行称为一个元组。

26.前件前件

27.x+=1;

28.继承继承

29.1B1B解析:从键盘输入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在输出时均需要把a,b转化为字符型,因此输出为1B。

30.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。

31.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。

32.8080解析:数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

33.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

34.3

35.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

36.i=1x[i-1]i=1\r\nx[i-1]解析:对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空11处应填入i=1。相邻的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空12处应填入x[i-1]。

37./i或*(1.O/i)或/(double)i/i或*(1.O/i)或/(double)i解析:主函数中首先定义了两个double型的变量s和fac,并给它们赋初值为0.0和1.0,在函数中s和fac的作用是存放和以及要加到的那一项的值。通过分析可知,第i项的值可以由第i-1项的值得到,即第i项是第i-1项的值除以i。可见横线处应添“/i”或与它等价的表达式。

38.本题程序的流程是:让i;j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以s[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。\r\n\r\n

39.88解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a(0][1]、a[0][2]、a[0][3]

40.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

41.B数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概要设计和应用程序概要设计三方面。数据库逻辑结构设计的主要步骤为:将E—R图转换为初始关系模式,对初始关系模式进行优化,检查关系表对数据库事务的支持性,确定关系模式完整性约束,设计基于关系模式的用户视图。

42.A解析:软件交付后还要进行维护,软件维护不仅要修复程序中被破坏的指令.还要根据新提出的内容进行必要而且可能的扩充和删改。软件的生命周期是从提出、实现、使用维护到停止使用退役的过程。

43.C解析:程序定义了一个指针数组s和一个字符型指针变量p。s有3个元素,其中s[0]指向字符串'one,s[1]指向字符串'two',s[2]指向字符串'three',执行p=s[1]后p指向字符串'two',所以*(p+1)=w。

44.D解析:顺序文件只能从头读写,二进制文件可以随机读写,选项A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭,选项B正确:用fread()函数可以一次性地读取同类型的很多数据,选项C正确;在C语言中指向各种文件的文件指针都是通过FILE来定义的,故选项D是错误的。所以4个选项中选D

45.B解析:本题考查ifelse语句。C语言规定,else总是与它前面的最近的if配对。

46.B解析:字符串比较不能用两个等于号(=)来进行比较,应使用函数strcmp(s1,s2)来比较。函数strcmp(s1,s2)的功能:当字符串s1和s2相等时,返回值为0。因此,当表达式!strcmp(s1,s2)=1时,条件成立,执行后面的语句,输出theyareEqual。

47.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。

48.B解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

49.A解析:本题考查if语句的嵌套,第一个嵌套语句,else看上去似乎和第一个if配对,实际上是和第二个if配对:第二个嵌套语句中的两个条件表达式应该注意,第一个条件表达式是将y>0的逻辑值赋给变量z,第二个条件表达式是将0赋给变量y,不是逻辑等于运算符“==”。

50.A解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

51.B解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

52.B解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假”(值为零)时,退出循环,并转下—语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题的答案选B。

53.B

54.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

55.B

56.B解析:要解答此题只要知道两个知识点:①在C语言中规定进行强制类型转换的格式是:(double)变量名;②在C语言中不允许给表达式赋值。

57.A解析:考查宏替换的使用。宏替换用'#define宏名宏体'的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算,因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。

58.D解析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。

59.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

60.D解析:主函数的第一个参数argc为整型参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为5,argv[0]指向字符串“ex”,argv[1]指向参数字符串“abed”,argv[2]指向字符串“efg”,argv[3]指向参数字符串“h3”,argv[4]指向参数字符串“k44”。在main()函数中,for循环执行了2次,当i=1时,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此时len的值为4;当i=3时,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此时len的值为6;当i=5时,退出循环,故最后输出的len的值为6。

61.D数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

62.D题目中给出了一个结构体,结构体类型名为structa。该结构体成员列表包括两个整型变量。随后定义了一个结构体数组st[3],该数组的大小为3,同时定义了一个结构体指针p,指向数组st。

选项A为(p++)->n,是指先将p的指针执行++操作,指向st[1],然后得到该结构体变量中的值n。

选项B为st[0].n,这个是标准的结构体数组变量引用,得到结构体数组变量st[0]中的值n。

选项C为(*p).n,该表达式与p->n是等价的,得到当前指针所指结构体变量中的值n。

选项D为p=&st.m,该选项是错误的。若p是一个定义过的指向结构体变量的指针,则用它指向结构体变量的某一个成员,编译时将指出地址的类型不匹配。

63.B

64.D数组的表示为z[10],也不是一个函数,函数应该有形参,变量没有那样的表示法,赋初值的形式的不对。

65.D根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系。根据各种结构的定义知二叉树是一种非线性结构。

\n

66.C\nA中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

\n

67.C

68.C转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。

69.C本题考查的重点还是二维数组的操作。题目将二维数组与函数相结合,考查了函数对二维数组的调用。程序主体分为两个部分:主函数main和函数fun。main函数结构较简单,功能很明确,首先初始化了一个二维数组,随后将fun(a,4,0)作为printf函数的实参输出。下面分析一下fun函数的作用,fun函数包括三个形参,其中一个形参为用指针定义的二维数组,另外两个为整型常量n和k。在fun函数中,先定义了一个整型变量m=s[0][k],表示m为s中第1行第k+1列的数据。下面的for循环是题目的关键,该for循环的意义是令m为数组s中k+1列从第1行到第n行的数据中最大的数值。题目中m的初始值为a[0][0],即m=1,从第1行到第4行第1列上的数值分别为1,11,21,31。最大的数为31,令m=31,返回m,并将m作为结果输出。

70.A

71.C考查if语句的使用。整个语句都是以a<b为假设的,在a<b的情况下,如果c=d,则y=0;否则y=1。所以答案为选项C)。

72.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

73.Astrcmp函数比较字

温馨提示

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

评论

0/150

提交评论