2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

2.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.程序运行后的输出结果是()。A.3B.4C.5D.6

4.以下叙述中错误的是______。A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%号是算术运算符,司用于整型和实型数的运算

5.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。

A.求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除表头结点D.删除地址为P的结点的后继结点

6.

7.有3个关系R、S和T如下.

则由关系R和S得到关系T的操作是()。A.自然连接B.差C.交D.并

8.

9.若变量已正确定义,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。

A.a<>b+cB.ch=getchar()C.a==b+cD.a++

10.

11.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

12.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序运行后的输出结果是()。

A.efgabcdhijklmnopq

B.abcdefghijklmnopq

C.mnopqhijklefgabcd

D.efgabcdmnopqhijkl

13.在inta=3,int*p=&a;中,*p的值是()

A.变量a的地址值B.无意义C.变量p的地址值D.3

14.以下程序的输出结果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}

A.7B.2C.9D.10

15.以下属于C语言实型常量的是()。

A.+6eB.e6+6C.6e+6D..e+6

16.在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

17.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

18.

19.以下选项中非法的表达式是()。

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

20.以下选项中合法的c语言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

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

intfun(int*x,intn)

{if(n==0)returnx[0];

elsereturnx[0]+fun(x+1,n-1);

}

main()

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

printf("%d\n",fun(a,3));}

22.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

23.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序运行后,输出结果是【】。

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

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf("%d%d\n",i1,i2);

}

25.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。

26.以下程序的运行结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

27.与结构化需求分析方法相对应的是【】方法。

28.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。

29.以下程序运行的结果是【】。

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

for(k=0;k<n;k++)

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

30.在面向对象方法中,类的实例称为______。

31.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

32.语句"int(*ptr)();"的含义是______是指向函数的指针,该函数返回一个int型数据。

33.下面程序有两个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\",p+9);

}

34.下列语句能循环______次。

ints=12;

while(s);

--s;

35.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。

36.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

37.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

38.已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&Ra;后b的值为______。

39.设在主函数中有以下定义和函数调用语句,且函数fun为void型,请写出函数fun的首部【】。要求形参名为b。

main()

}doubles[10][22];

intn;

fun(s);

}

40.以下程序的运行结果为【】。

#defineFORMAT"%u,%u"

main()

{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

printf("\n");

printf(FORMAT,**a,*a[0]);

printf(FORMAT,*(a[0]+1),*&a[0][1]);

printf(FORMAT,a[1][0],*(*(a+1)+0));

}

三、1.选择题(20题)41.有一堆零件(个数在100到200之间),如果分成4个零件一组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面的程序是求这堆零件的总数,请选择填空。#include<stdio.h>main(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if(____)printf("%d",i);}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

42.设有定义intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

43.下列定义数组的语句中正确的是______。

A.#definesize10charstr1[size],str2[size+2];

B.charstr[];

C.intnum['10'];

D.intn=5;inta[n][n+2];

44.关系数据库的数据及更新操作必须遵循______等完整性规则。

A.实体完整性和参照完整性

B.参照完整性和用户定义的完整性

C.实体完整性和用户定义的完整性

D.实体完整性、参照完整性和用户定义的完整性

45.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}

A.将磁盘文件的内容显示在屏幕上

B.将两个磁盘文件合为一个

C.将一个磁盘文件复制到另一个磁盘文件中

D.将两个磁盘文件合并后送屏幕

46.有以下程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;执行该程序段后,k的值是______。A.3B.2C.1D.0

47.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;

A.example.x=10

B.examplev2.x=10

C.structv2;v2.x=10

D.structexamplev2={10};

48.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

49.下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!='a'str[j++]=str[i];str[j]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]=%s",str);}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

50.在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。在求逻辑值时,逻辑真和逻辑假可分别表示为

A.10B.01C.非0非0D.11

51.已有定义:Mtx=3,y=4,z=5;,则表达式!(x/y)+z-1&&y+z/2的值是()。

A.6B.OC.2D.1

52.在不同进制的四个数中,最小的一个数是()

A.(11011001)2B.(75)8C.(37)10D.(2A)16

53.若定义inta=10,则表达式a+=a-*=a的值是()。

A.0B.-180C.-100D.-90

54.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

55.下列叙述中,错误的一条是______。

A.已知i=3,执行语句k=(++i)+(++i)+(++i)后,k的值为15

B.逻辑表达式!(5>3)&&(2<4)的值为0

C.表达式'c'&&'d'||!(3+4)的值为1

D.整型、实型、字符型数据可以混合运算

56.下面语句的输出结果是______。printf("%d\n",strlen("\t\"065\xff\n"));

A.14B.8C.5D.输出项不合法,无正常输出

57.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。

A.123.4B.123.5C.123.45D.123.46

58.假定所有变量均已正确说明,下列程序段运行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

59.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是A.6.5B.6C.5.5D.6

60.以下程序的运行结果是

#defineMAX(A,B)(A)>(B)?(A):(B)

#definePRINT(Y)printf("Y=%d\t",Y)

main()

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

t=MAX(a+b,c+d);

PRINT(t);}

A.Y=3B.存在语法错误C.Y=7D.Y=0

四、选择题(20题)61.下列关于结构化设计原则的描述,错误的是

A.在块和进程的非正常出口处往往需要调用GOTO语句,使用GOTO语句使程序执行效率提高,但是滥用GOTO语句确实有害,应该避免使用GOTO语句

B.程序设计时应该自顶向下,逐步求精

C.程序设计时,应该将复杂问题进行模块化,就是将程序设计的总目标分解为若干个分目标,再进一步分解为具体的小目标

D.在进行程序设计时,应该尽量在一行写一条语句,尽量做到效率第一,清晰第二

62.

63.执行下列程序中的输出语句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13

64.有以下程序:

main

{inti,j;

for(j=10;j<11;j++)

{for(i=9;i<j;i++)

if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

输出结果是()。A.A.11B.10C.9D.1011

65.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}输出结果是()。A.28B.27C.42D.4l

66.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

67.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书

68.以下变量x、y、z均为double类型且已正确赋值,不能正确表示x/(y*z)的C语言表达式是()。

A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z

69.有以下程序:

#include<stdio.h>

#include!(string.h>

voidfun(char*w,intm)

{charS,*pl,*p2;

p1=w;p2=w+m-;

while(pl<p2){s=*pl;*p1=*p2;*p2=s;pl++;p2-;}

}

main()

{chara[]="l23456";

fun(a,strlen(a));puts(a);

}

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

A.654321

B.116611

C.161616

D.l23456

70.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

71.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

72.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

73.有以下程序:

#include<stdio.h>

main()

{inta=7;

while(a--);

print[("%d\n",a);

}

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

A.-l

B.0

C.1

D.7

74.若有定义语句:doublea,*p=&a;,以下叙述中错误的是()。

A.定义语句中的*号是一个间址运算符

B.定义语句中的*号只是一个说明符

C.定义语句中的P只能存放double类型变量的地址

D.定义语句中,*p=&n把变量a的地址作为初值赋给指针变量P

75.有以下程序:

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

A.LoB.30C.0D.64

76.有以下程序

77.若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

78.

79.有以下程序(注:字符a的ASCIl码值为97)}程序运行后的输出结果是()。

A.789B.abcC.7890D.979899

80.

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.三个整数a、b、c,由键盘输入,输出其中最大的数。

参考答案

1.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

3.B[解析]&按位与,如果两个相应的二进制位都为1.则该位的结果值为1.否则为0.按位或两个相应的二进制位中只要有一个为1.该位的结果值为1.2的二进制为0000010.4的二进制为000000所以做或运算结果为0000110.该数与5即00000101做与操作结果为0000100.即4.

4.D解析:“%”是求余运算符,其两侧的数值只能为整型,所以它不能用于实型的运算,故选项D错误。

5.A

6.C

7.B关系之间的操作分为自然连接、投影、交、并、差等,由图可知此操作为差操作。

8.D

9.A选项A是非法的表达式,C语言中没有“<>”运算符。故本题答案为A选项。

10.D

11.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

12.Bmain函数中定义一个二维数组v,另外还定义一个指针数组p。通过for循环,将v的各个行(字符串的首地址)赋给P的对应下标的元素。然后通过嵌套的for循环,为该二维数组中存放的各个字符串进行排序。strcmp函数返回值大于0时(p[i]>p[j])交换两个字符串,所以每一轮内嵌的for循环,都将下标为i的字符串放在最终的排序位置上,即排序规则是按字符串升序排列。字符串排序时,是将两个字符串自左向右逐个字符比较(按字符的ASCII值大小),直到出现不同的字符或遇到‘\\0’为止。排序后,再将v中各个排序后的字符串输出。所以程序输出结果为:abcdefghijklmnopq。故本题答案为B选项。

13.D

14.A

15.CC语言的实型常量可以用小数形式、指数形式来表示。题中的选项都是指数形式,指数形式的一般形式为:尾数E(或e)整型指数。C语言规定,字母E或e之前必须要有数字,且E或e后面的指数必须为整数,E或e的前后以及数字之间不得插入空格。故本题答案为C选项。

16.B

17.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

18.B

19.A赋值运算符的左边只能是变量,而不能是常量或表达式。

20.B所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,但使用单引号,错误,选项c,D,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。故答案为B选项。

21.1010解析:题目中的fun()函数直接调用了自身,所以它是递归函数。函数中只有一条if语句,意思是:若n为0,则返回x所指内容(x[0]等价于*x),否则返回x所指内容加上fun(x+1,n-1)。即,当n>0时,fun(x,n)=x[0]+fun(x+1,n-1)=x[0]+x[1]+fun(x+2,n-2)=…=x[0]+x[1]+…+x[n];当n=0时,fun(x,n)=x[0];当n<0时,函数将无限循环递归调用下去,因为n-1下去永远也不会等于0。所以本题中fun(a,3)=a[0]+a[1]+a[2]+a[3]=12+3+4=10。故应该填10。

22.封装封装

23.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的值为23-22=4。

24.100010100010解析:先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

25.需求获取需求获取解析:软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求;需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进度的依据;需求评审是对需求分析阶段的工作进行的复审,验证需求文档的一致性、可行性、完整性和有效性。

26.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2分支,最后a和b的值分别为2和1。

27.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

28.模块化模块化

29.77解析:解答本题的关键是要读懂程序,要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“‖”运算符,若要找能同时被7和11整除的所有整数则在if的条件中应使用“&&”运算符。

当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:711142122283335424449。

30.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

31.概念(或概念级)概念(或概念级)

32.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*旨针变量名)()。注:“类型标识符”为函数返回值的类型。

33.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

34.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

35.对象对象解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。

36.2525解析:#NAME?

37.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

38.11解析:字符空格的ASCII码不为0,所以本题中表达式!c的值为0,b=0&&1的结果显然为0。

39.voidfun(double*b)或voidfun(doubleb[10][12])voidfun(double*b)或voidfun(doubleb[10][12])解析:本题考查数组名作函数参数。程序中被调用函数fun(s)的实参s是数组名,而s为double型数组名,所以函数fun的形参类型为double*。

40.113399

41.D解析:本题中需要填空的是第三个条件,即“若分成9个零件一组,则多5个零件”,当总零件数减去5后,并与9取余为0即可满足本题的条件。

42.A解析:题面中各变量定义后,指针变量p指向了变量n2所在的存储单元,指针变量q指向了变量n1所在的存储单元,要使得n1的值赋n2,可用指针变量q所指向的存储单元的值赋给指针变量p所指向的存储单元,即*p=*q。

43.A

44.D解析:关系模型中包括关系的数据结构、关系的操纵和关系中的数据约束。关系完整性约束即数据完整性,包括实体完整性、参照完整性和用户自定义完整性。

45.C解析:程序首先定义了两个文件类型的指针fp1、fp2。为读打开文件filel,并让指针fp1指向该文件;为写打开文件file2,并让指针fp2指向该文件。循环执行从文件file1中读取一个字符,输出到文件file2中,直到文件file1结束。因此程序的功能是将文件file1中的内容复制到文件file2中。

46.B解析:本题考查的知识点是条件表达式.条件运算符?:是C语言中唯一的三目运算符,它的规则是先计算左边运算分量,如果为“真”(非0),则返回中间运算分量的值,否则返回右边运算分量的值。本题中因为a<b为“真”,所以第1个条件表达式的值为b的值2,所以k=2。然后又因为k>c为“假’,所以第2个表达式的值为k的值2。所以本题应该选择B。

47.D解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构钵类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

48.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。

49.A解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

50.A解析:在C程序中,判断逻辑值时,用非0表示真,用0表示假。逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。

51.D解析:本题中,&&左边的表达式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5-1=4。左边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于4&&6为真,即为1,所以选项D正确。

52.C

53.B解析:算术运算符的运算规则是:从右到左的原则。所以表达式中先计算a=a-a*a的值是-90,再计算a=a+a的值是-180。

54.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。

55.A

56.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。

57.D解析:f格式符,用来输出实数,以小数形式式输出。“%-m.nf”的含义是:输出数据共占m列,其中n位小数,如果输出位数小于m,则右端补空恪。如果总长度大于列数,则按实际情况四舍五入输出。

58.B

59.D解析:本题考查的知识点是运算符的优先级。在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。

60.C解析:考查带参数的宏替换。宏替换不像函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。

61.D在结构化程序设计过程中,我们可以根据下面的原则进行:

(1)使用语言中的顺序结构、选择结构、循环结构等有限的基本控制结构表示程序逻辑。

(2)选用的控制结构只准许有一个入口和一个出口。

(3)复杂结构应该用基本控制结构进行组合嵌套来实现。

(4)语言中没有的控制结构可以用一段等价的程序段来模拟,但是要求程序段在整个系统中前后一致。

(5)严格限制GOTO语句。

(6)在编写程序时,强调使用几种基本的控制结构,通过组合嵌套,形成程序的控制结构。

(7)在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的源程序。

总之,在结构化程序设计的过程中,要将清晰放在第一位。因此,本题中的答案D是不正确的。

62.D

63.C本题考查逗号表达式。程序输出时输出一个%d,所以输出第一个a的值与后续无关。本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。

64.B本题考多循环的使用,当j=10,

温馨提示

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

评论

0/150

提交评论