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

下载本文档

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

文档简介

2021年江苏省常州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.函数filecopy的功能是,将fin所指文件中的内容输出到fout所指文件中,但函数不完整:voidfilecopy(FILE*fin,FILE*fout){charch;ch=getc(fin);while(_______){putc(ch,fout);ch=getc(fin);}}其中下划线处应填入的是()。A.!feof(fin)B.!feof(fout)C.feof(fin)==1D.feof(fout)==1

2.设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下列各输入语句中错误的是_______。

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

B.scanf("%s",&);

C.scanf("%c",&std[0].sex);

D.scanf("%c",&(p->sex));

3.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

4.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

5.第

27

有一堆零件(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

6.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

7.下面程序的运行结果是()。#include"stdio.h"main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("#");}}

A.*#*#*B.#*#*#*C.*#*#D.#*#*

8.下列叙述中正确的是()。

A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为n/2

C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为log2n

D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为nlog2n

9.串是一种特殊的线性表,其特殊性体现在()。

A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符

10.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是______。

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

11.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。A.A.1/2B.1C.2D.4

12.存储以下数据,占用存储字节最多的是()。

A.0B.‘0’C.“0”D.0.0

13.下述程序执行的输出结果是()。#include<stdio.h>main(){chara[2][4];strcpy(a。"are");strcpy(a[1],"you");a[o][3]=&;printf("%s\n",a);}A.are&youB.youC.areD.&

14.在以下给出的表达式中,与“while(E)”中的“(E)”不等价的表达式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

15.

16.假定a为一个整型数组名,则元素a[4]的字节地址为()。

A.a+4B.a+8C.a+16D.a+32

17.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

18.折半查找法的查找速度一定比顺序查找法快()。

A.正确B.错误

19.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

20.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

22.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。

23.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。

24.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

25.若输入2、2,则下列程序的运行结果为【】。

main()

{inti,j,(*p)[4],

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

scanf("%d%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

}

26.设二进制数A是00101101,若想通过异或运算ab使A的高4位取反,低4位不变,则二进制数B应是【】。

27.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

28.下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,指定字符1,则输出3。请填空。

#include<stdio.h)

#deftneM81

intfun(char*ss,charc)

{inti=0;

for(;【】;ss++)

if(*ss==c)i++;

returni;

}

main()

{chara[M],ch;

printf("\nPleaseenterastring:");gets(a);

printf("\nPleaseenterachar:");ch=getchar();

printf("\nThenumberofthecharis:%d\n",fun(a,ch));

}

29.strcat函数的作用是【】。

30.以下程序的输出是【】。

main()

{

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

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

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

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

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

32.最简单的交换排序方法是______。

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

34.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

35.诊断和改正程序中错误的工作通常称为【】。

36.下面程序的运行结果是______。

#include<stdio.h>

intf(inta[],intn)

{if(n>1)

returna[0]+f(a+1,n-1);

else

returna[0];

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;

s=f(aa+2,4);printf("%d\n",s);

}

37.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

38.设有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和笫8位(右起为第1位),则b的二进制是【】。

39.若已知a=10,b=20,则表达式!a<b的值为【】。

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

三、1.选择题(20题)41.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

42.若有以下说明和语句:intc[4][5],(*p)[5];p=e;能够正确引用c数组元素的是()。

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

43.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

44.在下列四条叙述中,正确的一条是()

A.在计算机中,汉字的区位码就是机内码

B.在汉字国际码GB2312-80的字符集中,共收集了6763个常用汉字

C.英文小写字母e的ASCⅡ码为101,英文小写字母g的ASCⅡ码为103

D.存放80个24×24点阵的汉字字模信息需要占用2560个字节

45.不能把字符串"HELLO!"赋绐数组b的语句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

46.设已执行预编译命令#include<string.h>,以下程序段的输出结果是()。chars[]="anapple";printf("%d\n",strlen(s));

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

47.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

48.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

A.1267B.1256C.1278D.1245

49.已知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.seanf("i=%dj=%d,k=%d",&i,&j,&k);

50.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

51.已定义以下函数

fun(int*p)

{return*p;}

该函数的返回值是()

A.不确定的值

B.形参p中存放的值

C.形参p所指存储单元中的值

D.形参p的地址值

52.若有一些定义和语句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是

A.*q=0;B.w=p;C.*p=a;D.*p=*w;

53.在面向对象方法中,实现信息隐蔽是依靠()。

A.对象的继承B.对象的多态C.对象的封装D.对象的分类

54.以下程序的运行结果是______。main(){charn=0x20;printf("%d\n",n=n<<1);}

A.100B.160C.128D.64

55.定义int*swap()的是_______。

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

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

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

D.以上说法均错

56.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

57.若x、y、z、m均为int型变量,则执行下面语句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

58.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

59.下列叙述中,不属于设计准则的是()。

A.提高模块独立性B.使模块的作用域在该模块的控制域中C.设计成多入口、多出口模块D.设计功能可预测的模块

60.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

四、选择题(20题)61.若有定义intx'y;并已正确给变量赋值。则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x_y)等价的是()。

A.(x-y011x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y=o)

62.有如下嵌套的if语句:

以下选项中与上述if语句等价的语句是()。

A.k=(a<B.?((b<C.?a:

B.B.:((b>C.?b:

C.;B.k=(a<B.?((a<C.?a:C.:((b<C.?b:C.;C.k=(a<B.?a:b;k=(b<C.?b:C;

D.k=(a<B.?a:b;k=(a<C.?a:c;

63.(20)数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计

B.模式设计和内模式设计

C.内模式设计和物理设计

D.结构特性设计和行为特性设计

64.

65.假设a和b为int型变量,则执行以下语句后b的值为()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

66.以下程序的输出结果是()。

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

67.

68.

69.

70.

71.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A.break语句B.return语句C.continue语句D.空语句。

72.

73.有以下程序:

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

A.5B.24C.32D.40

74.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

75.定义结构体数组:structstu{intnum;charnameE20];}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU");for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);以上程序段的输出结果为()。A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I

76.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。

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

77.对于现实世界中事物的特征,在实体一联系模型中使用()。A.属性描述B.关键字描述C.二维表格描述D.实体描述

78.

79.下列叙述中正确的是()。A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D.循环队列中元素的个数是由队头指针和队尾指针共同决定

80.有如下程序段

#include"stdio.h"

voidfun(int*a,int*b,int*c,int*d,int*e)

{inti,j,k,m;

for(i=0;i<*a;i++)

for(j=0;j<*b;j++)

for(k=0;k<*c;k++)

for(m=0;m<*d;m++)

++*e;

}

main()

{inta=10,b=10,c=10,d=10,e=0;

fun(&a,&b,&c,&d,&e);

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

则程序段的输出结果是

A.10000B.1000

C.100D.0

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。例如,若输入的字符串是:“ab232bd34bkw”,则输出结果是:“abbdbkw”。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为13579299946999813570则函数值为61。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

参考答案

1.Afilecopy函数每次从fin文件指针调用getc函数读取一个字符存放到ch中,再通过while循环调用putc函数将ch写入fout,直到fin指向文件尾部为止。所以while的循环条件是判断fin是否到文件尾部。这里使用feof函数判断:feof返回值为真时,表示fin指向了文件尾部,否则表示fin未到文件尾部。所以while循环条件为!feof(fin)。故本题答案为A选项。

2.B解析:在C语言中,结构体变量的引用有三种等价方式:

1、结构体变量成员名;2、(*p).成员名;3、p->成员名。

因为std.name是字符数组名,本身代表地址,其前面不应该使用“&”符号,所以选项B错误。

3.B本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2。其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n。它的值为表达式n的值。

4.B

5.D

6.A

7.A解析:分析程序呵知.程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。

8.C\n\tC。【解析】二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。

9.B

10.C解析:栈是一种后进先出表,选项C中,先出栈的是3,说明此时栈内必然有1,2,由于1先于2进浅,所以1不可能在2之前出栈,故选项C这种出栈序列是不可能的。

11.B

12.D

13.Astrcpy实现的功能是复制,该操作把are复制到a中,aE03E33一’&’,且strcpy(aEl],"you")把you复制到a[l]中,故输出a为“are&you”。

14.Bwhile语句中条件表达式E的值不为0即真,认为满足条件。这与B选项中表达式的含义正好相反。故本题答案为B选项。

15.A

16.C

17.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

18.B

19.B变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。

20.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

21.246

22.消息消息解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。

23.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。

24.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

25.a[22]=11

26.1111000011110000解析:按位异或运算的一个重要应用是让某个整型变量的二进制位取反,0变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果。要使字节的高4位取反,低4位不变,则需要位串信息是11110000。

27.1011

28.*ss!='\0'*ss!='\\0'解析:从字符串ss中找出某字符的方法是:从字符串ss的第一个字符开始,依次进行比较,若ss串的当前字符等于字符c,则i++;若ss串的当前字符和字符c不同,则继续对ss串的下一个字符进行比较。本程序采用循环逐一比较的方式,找出某字符在字符串中出现的次数。汀语句的作用是判断某字符与字符串中的当前字符是否相同。

29.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。

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

31.33本试题中,先判断表达式p/3>0,该值为真,所以此表达式等于p/10的值3,故最后输出的值为3。

32.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

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

34.getchargetchar解析:考查了字符可以作为整型变量来对待,参与操作。题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符\ue008'y',\ue009'Y'、,'n','N'是否相等来实现的。

35.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

36.本题主要考查函数的嵌套调用和数组名作为实参。实际程序运行结果应为aa[2]+aa[3]+aa[4]+aa[5]=18。\r\n\r\n

37.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。

38.1000001010000010解析:运算“&”的,的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二进制数10000010相与。

39.11解析:计算表达式!a<b,先计算!a,因a的值为10,!a的值为0,而关系表达式0<20为真,所以表达式!a<b的值为1。

40.前件前件

41.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

42.D解析:(*p)[5]中p是一个行指针,指向一个包含5个元素的一维数组,p的值是该一维数组的首地址。当用行指针访问二维数组时,行指针每增加1,表示指针指向二维数组的下一行,此题中的p+i将指向数组的第i行。选项A)的意思是指向数组c的第1行,不是引用c数组的元素;选项B)中p+3是指向数组元素的第3行,。(P+3)是指第3行第0个元素的地址;选项C)可由对选项A)、选项B)的解释知,它指的是第1行第3列元素的地址;选项D)中p[0]+2是指第0行第2列元素的地址,再加个*就表示第0行第2列的元素,即c[0][2]。

43.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

44.B

45.B解析:在C语言中,写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。

46.B解析:如果一个字符数组中存放一个字符串,则函数strlen的值为“\\0”之前的全部字符个数,也包括空格在内。注意:字符串处理函数的使用。

47.C解析:switch后的括号中只能是整型或字符型表达式,选项A中使用的是浮点型变量x,故不正确。选项B在switch的括号后面多了一个分号,故也不正确。switch的case标号后只能是常量或常量表达式,而不能是变量,所以选项D也不正确。故应该选择C。

48.D解析:putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。

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

50.D解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

51.C解析:本题考核的知识点是函数的返回值.函数的返回值应该为return后面的表达式的值,在本题中的表达式为*p,*p指的是形参p所指存储单元中的值,所以,4个选项中选项C符合题意。

52.A解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以,A选项为所选。

53.C解析:通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。

封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中(对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。

继承性:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。

多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。

经过上述分析可知,在面向对象方法中,实现信息隐蔽是依靠对象的封装。正确答案是选项C。

54.D解析:n初始化时值是十六进制20(即十进制32),左移1位,相当于乘以2,结果是64。

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

56.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。

57.A解析:?:运算符首先执行?之前的表达式,如果表达式的值为真,则返回?和:之间的表达式的值,否则返回:之后的表达式的值。本题中m比x和y都要小,所以,3个表达式都没有改变m的值,故应该选择A。

58.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

59.Cc)【解析】大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当:使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。

60.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。

61.A条件表达式:X----表达式l?表达式2:表达式3的含义是:先求解表达式1,若其值为非0(真),则求解表达式2,将表达式2的值赋给x,若表达式1的值为o(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式(x_y)等价的是(x—y<011x—y>0),A选项正确。

62.B题目中嵌套语句的含义是当a<b且a<c成立,则将a的值赋给k。如果a<b成立而a<c

温馨提示

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

最新文档

评论

0/150

提交评论