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.下述程序的输出结果是()。#include<stdio.h>voidmain{intb[6]={2,4,6,8,10,12);int*p=b,**q=&p;printf("%d,",*(p++));printf("%d,",**q);}A.4,4B.2,2C.4,5D.2,4

2.有以下语句:intb;charc[10];,则正确的输入语句是______。

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

3.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

4.对含有16个元素的有序表进行二分查找,关键字比较次数最多是()

A.3B.4C.5D.6

5.树的度为3,且有9个度为3的节点,5个度为1的节点,但没有度为2的节点。则该树中的叶子节点数为()。

A.18B.33C.19D.32

6.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。

A.s1的内容更新为abcdefghi

B.s1的内容更新为defghi\0

C.s1的内容更新勾defghiabc\0

D.s1的内容更新为abcdefghi\0

7.有下列程序:

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

A.6,5,4,4,5,6,

B.1,2,3,4,5,6,

C.4,5,6,4,5,6,

D.1,2,3,6,5,4,

8.设有以下定义uniondata{intd1;floatd2;)demo;则下面叙述中错误的是()。A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

9.若有如下定义,则__________是对数组元素的正确的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

10.以下正确的字符串常量是()。A.“\\\”B.‘abc’C.OlympicGamesD.“”

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

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

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

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

13.若有定义“int*p[3];”,则以下叙述中正确的是()。A.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针

B.定义了一个基类型为int的指针变量p,该变量具有3个指针

C.定义了一个名为*p的整型数组,该数组含有3个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素

14.表示关系a≤b≤c的C语言表达式为()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

15.

16.

17.数据流图(DFD)的作用是()。

A.描述软件系统的控制流B.支持软件系统的功能建模C.支持软件系统的面向对象分析D.描述软件系统的数据结构

18.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19

19.有以下程序:

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

A.abc+abc=defdef

B.abc+ABC=DEFdef

C.abcABCDEFdef

D.abcabcdefdef

20.a、b、c、d变量均为float类型且已正确赋值,下列选项中与数学式子“2ab/(5cd)”等价的C语言表达式是()。

A.2/5*a/c*d/b

B.a/(5*c*d)*(2*b)

C.2*a*b/5*c*d

D.2/5*a*d*(1/c*d)

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

inta=1234;

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

22.以下程序的运行结果是#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);}

23.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句:t=b*2;t为血型变量后的值是______。

24.一棵二叉树第6层(根结点为第一层)的结点最多为______个。

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

#include

main()

{chara,b;

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

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

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

}

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

#definePOW(r)(r)*(r)

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

27.以下程序的输出结果是【】。

#include<stdio.h>

main()

{inti;

for(i-'a';i<'f';i++,i++)printf("%c",i-'a'+'A');

printf("\n");

}

28.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotate(inta[][N],intb[][N])

{inti,j;

for(i=0;i<N;i++)

{b[i][N-1]=a[0][i];【】=a[N-1][i];}

}

29.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。

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

31.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

32.算法的复杂度主要包括时间复杂度和______复杂度。

33.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

34.以下程序运行后的输出结果是______。

main()

{

charc1,c2;

for{c1='0',c2='9';c1<c2;c1++,C2--)

printf("%c%c",c1,c2);

printf("\n");

}

35.阅读下列程序,则程序的输出结果为【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

36.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

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

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

main()

{inti=1;

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

}

38.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

39.下列程序的运行结果是_______。

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

primf("%d,",z<y?x++:y++);

primf("%d,%d",x,y);

}

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

#include<stdio.h>

main()

{chara,b;

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

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

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

}

三、1.选择题(20题)41.程序中若有如下说明和定义语句:charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;┆}以下选项中对函数fun的正确调用语句是()。

A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s)

42.假设有语句sizeof(double),则它是()。

A.一个整型表达式B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义

43.下列与表达式“b=(a<0?-1:a>0?1:0)”的功能等价选项是()

A.b=0;if(a>=0)if(a>0)b=1;elseb=-1;

B.if(a>0)b=1;elseif(a<0)b=-1;elseb=0;

C.if(A)if(a<0)b=-1;elseif(a>0)b=1;elseb=0;

D.b=-1;if(A)if(a>0)b=1;elseif(a==0)b=0;elseb=-1;

44.有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n"i)}该程序中的for循环执行的次数是______。

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

45.以下能正确定义一维数组的选项是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

46.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是

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

47.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

48.有以下程序intb=2;intfunc(int*A){b+=*a;return(B);}main(){inta=2,res=2;res+=rune(&A);printf("%d\n",res);}程序运行后的输出结果是()

A.4B.6C.8D.10

49.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。

A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,

50.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

51.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

52.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

53.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

54.下列程序中c的二进制值是()。

chara=2,b=4,C;

c=a^b>>2;

A.00000011B.00010100C.00011100D.00011000

55.对下面的程序进行编译与连接生成可执行文件c.exe,并在DOS命令提示符下输入:cIsaid"IloveChina"!程序代码如下:main(intargc,char*argv[]){printf("%d",argC);}其输出结果为______。

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

56.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;printf("%d%d\n",b,C);}程序运行后的输出结果是()。

A.-1112B.-6-13C.1224D.1122

57.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后

C.将字符串str2复制到字符串sir1中后再将字符串str3连接到字符串str1之后

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

58.视图设计一般有3种设计次序,下列不属于视图设计的是______。

A.自顶向下B.由外向内C.由内向外D.自底向上

59.下列说法正确的是()。

A.在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义了一个数组后,就确定了它所容纳的元素的个数

60.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

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

A.程序执行的效率与数据的存储结构密切相关

B.程序执行的效率只取决于程序的控制结构

C.程序执行的效率只取决于所处理的数据量

D.以上三种说法都不对

62.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

63.

64.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关

B.算法的时间复杂度是指执行算法所需要的计算工作量

C.数据的逻辑结构与存储结构是一一对应的

D.算法的时间复杂度与空间复杂度一定相关

65.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

66.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是

67.模块独立性是软件模块化所提出的要求,衡量模块独立性的一般度量标准是

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法

68.

69.

有下列程序:

main

{intx=5;

do

{printf("%d",X-=4);)

while(!(--x));

}

程序的输出结果是()。

A.1B.20C.1-4D.死循环

70.以下程序的主函数中调用了在其面前定义的fun函数#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}则以下选项中错误的fun函数首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

71.

72.

73.

下列程序的输出结果是()。

#include<stdio.h>

voidp(int*x)

{printf("%d¨,++*x);

}

voidmain()

{inty=3;

p(&y);

}

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

74.若在定义语句:

75.

76.有以下程序程序执行后的输出结果是()

A.60B.50C.45D.55

77.以下叙述中正确的是()。A.A.break语句只能用在循环体内和switch’语句体内

B.continue语句的作用是:使程序的执行流程跳出包含它的所有循环

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

D.break语句只能用于switch语句体中

78.

79.

80.

五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数该函数的功能是使数组下三角元素中的值乘以n。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N],intn){}main(){inta[N][N],n,i,j;printf(“*****Thearray*****\n”);for(i=0;i<n;i++)<p=""></n;i++)<>{for(j=0;j<=""p="">{a[i][j]=rand()%10;printf(“%4d”,a[i][j]);}printf(“\n”);}n=rand()%4;printf(“n=%4d\n”,n);fun(a,n);printf(“*****TheResult*****\n”);for(i=0;i<=""p="">{for(j=0;j<=""p="">printf(“%4d”,a[i][j]);printf(“\n”);}}

参考答案

1.D首先定义了一个指向一维数组b的指针P,一个指向指针P的指针变量q;输出*(p++)是先输出*p,即b[O]的值,再将指针P指向数组的下一个元素b[1];输出**q是输出指针P所指单元的内容。

2.B解析:b是整型数,在输人语句中要加取地址符,而c是数组名,本身就是数组的首地址,因此不用加取地址符。

3.Cmain函数定义两个double类型的变量a、b,分别赋初值为2.5、9.0。另外定义两个double类型的指针变量pa、pb,其中pa指向a,pb指向b。然后将b-a、pa、pb传给函数fun,此时x的值为6.5,y指向a,z指向b。“*y=*y-1.0;”是将变量a的值减去1.0赋给a,a的值为1.5;“*z=*z+x;”是将变量b的值加上6.5赋给b,b的值为15.5。fun函数执行完毕后,输出a的值为1.5。故本题答案为C选项。

4.C

5.C设叶子结点数为〃,则该树的结点数为n+9+5=n+\n14,根据树中的结点数=树中所有结点的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,则n=19。本题选择C选项。

6.Dstrcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。

7.D程序定义数组a,使用6个元素对其初始化,接着以写二进制方式打开文件d.dat。调用fwrite函数将a的6个元素逆序(654321)写入文件,接着调用rewind函数,将文件指针移动到文件开始位置。调用fread函数读入3个整数,逐个存放到a开始下标为3的3个位置,即a[3]=6,a[4]=5,a[5]=4,关闭文件。再次调用for循环输出a,结果为:1,2,3,6,5,4,。本题答案为D选项。

8.D共用体变量中的所有成员共享一段公共存储区,所有成员的首地址相同。在每一个时刻所有的成员中只有一个有效,即只有最后一个被赋值的成员有效,其余的成员无效。

9.D

10.D在C语言中,字符串常量是用双引号标注的字符序列,因此B选项和C选项不正确。字符序列中可包含一些转义字符,转义字符以“\\”开头。A选项中包含3个前两个(\\\\)代表一个“\\”字符,后面一个为“””。因为\\”被看作一个“””,所以该字符串缺少一个结束的“””。因此A选项不正确。D选项的两个“”之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确。B选项的abc应该使用双引号标注。故本题答案为D选项。

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

12.C在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。

13.Aint*p[3]含义是定义一个指针数组p,数组中包含3个元素,每个元素都是int*类型的指针。本题答案为A选项。

14.A解析:本题考查逻辑与运算符&&。在C语言中使用运算符“&&”连接两个表达式,也可以表示逻辑与运算符。在C语言中不允许出现a<=b<=c这种格式。

15.A

16.A

17.B数据流图是系统逻辑模型的图形表示,从数据传递和加工的角度,来刻画数据流从输入到输出的移动变化过程,它直接支持系统的功能建模。本题答案为B选项。

18.Bfun(x+2)表示的是结构体数组中的第3个元素即{03,"Zhao",l8),而输出的是name元素,所以答案为B。

19.A题干中,函数fun的功能是:判断形参ch是否为大写字母,若是大写字母则改写成小写字母,其他字符不变。main函数中,通过while循环,调用fun函数,将字符数组s中的各个字符传入,将s中的大写字母改成小写字母,程序输出:abc+abc=defdef。本题答案为A选项。

20.B解析:选项A和选项D中首先计算2/5,因为两个计算分量都是整型,所以结果为2,与实际运算不符;选项B中因为乘除法满足交换律,所以2*b放前面和放后面都是一样的,所以满足题目要求;选项C中的表达式等价于2abcd/5,所以不满足题目要求。故应该选择B。

21.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

22.C

23.88解析:本题考查带参数的宏定义及相关运算。运算过程为:t=-B*2=A+3*2=2+3*2=8。

24.3232解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。

25.1B

26.2525解析:本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。

27.ACEACE解析:题目中for循环的循环变量i从字符'a'变到字符'e',但由于每次循环后都连续执行了两次i++,所以for循环将执行3次,循环变量i的值依次为'a'、'c'、'e'。循环体中是一条输出语句,按字符输出表达式i-'a'+'A'。因为大小写字母的ASCII码是连续的,例如'b'+1='c'、'W'-1='V',而且小写字母的ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的i-'a'+'A'=i-('a'-'A'),即让i减去了此固定值,从而使整个表达式的值为i所代表的小写字母的大写形式。故本题的输出结果是ACE。

28.b[i][0]b[i][0]解析:因为要将a的最后一行放在b的第0列中,【】应填b的第0列的元素。

29.n-1

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

31.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

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

33.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

34.918273645918273645解析:题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符'0'和'9',然后每次循环结束给c1增1、c2减1,循环条件为c1<c2,即让c1的值依次为'0'、'1'、'2'…,c2的值依次为'9'、'8'、'7'…,直到两个数相遇时结束循环。又因为该循环的循环体每次按字符形式输出c1和c2的值.所以最终的输出结果为:0918273645。

35.30x30x解析:本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

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.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

38.67G67G解析:字符型变量中保存的是某个字符的ASCII码值,是一个整数,因此字符型变量的算术运算和整型变量并无区别。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分别按十进制整数和字符形式输出a和b的值为:67G。

39.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

40.1B1B解析:本题输入B33,字符'B'被输入给字符变量a,33赋给b,执行a=a-'A'+'0';得到a的值'1';执行b=b*2;得到b值66,最后以字符型输出为1B。

41.A解析:程序中定义的n是一个指向函数fun的指针变量,即将函数fun的人口地址赋给指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函数fun。注意,此时用函数指针变量调用函数时,只需用(*f1)代替函数名fun即可,再在(*f1)后的括号中根据需要写上实参,所以(%f1)(a);相当于fun(a);故选项A)是正确的。

42.A解析:sizeof(double)是C语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。

43.B

44.B解析:该题目测试考生对宏替换的理解。这是一种简单的情况:不带参数的宏。关键要注意在对2*M+1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2*N+1+1(千万不要随意给N+1加上小括号,使NUM变为2。(N+1)+1,这就是宏名和变量名之间的区别),在将N代进去,得到NUM的值为6。

45.B解析:选项A定义数组时省略了长度,而C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项A错误;在C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项C不正确:定义时数组的长度不能使用变量表示,故选项D不正确,所以,4个选项中选项B符合题意。

46.C解析:本题考核的知识点是指针数组。本崽首先定义了一个有3个元素的指针数组s,并遭过赋值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通过赋值语句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C选项为所选。

47.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

48.B

49.B解析:题目中定义了一个指针变量作为函数f()的参数。主函数main()中调用f()函数,当i=0时,执行语句“(*q)++;”,此处*q就代表数组a[0]的地址,也即将q进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q做任何变动,即*q仍代表数组元素a[0]的值,所以此次(*q)++即为2+1,a[0]的值变为3;直到i=4时,执行(*q)++后a[0]的值变为6,最后输出数组a的结果为6、2、3、4、5。

50.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

51.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

52.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

53.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。

54.A解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。

55.B解析:带参数的main()函数常用形式为:main(intargc,char*argv[])其中,参数的个数由C程序运行时自动计算出来。字符型指针数组argv的第一个元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址:整型变量argc用来记录命令行中的参数个数,文件名也作为一个参数,对于命令行中双引号内的字符串,即使空格分开,也只算是一个参数,同时双引号本身不算参数的内容,因此本题argc的值等于5。

56.D解析:将a的值用二进制表示:00000011。a与Ox8(二进制表示为00001000)按位或,得到结果00001011赋值给b,b的值为11。再将b左移一位得到:00010110,赋值给c,c的值为22。所以最后输出的b,c的值为11,22。

57.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。

58.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内

向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以

单独使用也可混合使用。

注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后

对局部视图进行集成得到概念模式。

59.D解析:本题考查数组的两个知识点:①在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好之后,它所能容纳的元素的个数也就确定了;②同一个数组中所有元素的类型是一样的。

60.D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。

61.A本题考查程序效率。程序效率是指程序运行速度和程序占用的存储空间。影响程序效率的因素是多方面的,包括程序的设计、使用的算法、数据的存储结构等。在确定数据逻辑结构的基础上,选择一种合适的存储结构,可以使得数据操作所花费的时间少,占用的存储空间少,即提高程序的效率。因此,本题选项A的说法是正确的。

62.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

63.B

64.B解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。

数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。

有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。

65.B解析:SEEK

温馨提示

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

评论

0/150

提交评论