2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021年江苏省南通市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.设散列表长m=14,散列函数H(K)=K%11,已知表中已有4个结点:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址为空,如用二次探测再散列处理冲突,关键字为49的结点地址是_____。

A.8B.3C.5D.9

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

4.若变量c为char类型,能正确判断出c为小写字母的表达式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)

B.(′a′>=c)and(′z′>=c)

C.(′a′<=c)and(′z′>=c)

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

5.下列关于栈的叙述中,正确的是()。

A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对

6.假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

则以下选项中司将q所指结点从链表中删除并释放该结点的语句组是______。A.(*p).next=(*q).next;free(p);

B.p=q->next;free(q);

C.p=q;free(q);

D.p->next=q->next;free(q);

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

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

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

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

8.有以下程序:#include<stdi0.h>#defineS(x)(x)"x"2main(){intk一5,j=2;Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));}程序运行后的输出结果是()。A.98,18B.39,11C.39,18D.98,11

9.下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

10.与单链表相比,双向链表的优点之一是()。

A.插入、删除操作更加简单B.可以随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更加灵活

11.

12.结构化程序所要求的基本结构不包括A.顺序结构B.GOTO跳转C.选择(分支)结构D.重复(循环)结构

13.有下列程序: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);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

14.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.退出Windows后重新启动计算机

D.终止当前应用程序的运行

15.

16.查找较快,且插入和删除操作也比较方便的查找方法是

A.分块查找B.二分查找C.顺序查找D.折半查找

17.广义表(a,b,c,d)的表头是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

18.有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf(“%d,”,p->x);p=p->y;}}程序的运行结果是()。

A.20,30,B.30,17,C.15,30,D.20,15,

19.

20.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);)该函数的类型是()。A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

二、2.填空题(20题)21.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

22.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

23.在面向对象方法中,属性与操作相似的一组对象称为【】。

24.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

25.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。

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

27.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

28.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

for(I=0;【】;I++)

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

29.下列程序的功能是计算1~100的整数的累加和。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=i;

i++;

}

printf("sum=%d\n",【】);

}

30.设有如下定义

#defineMYSWAP(z,x,y){z=x;x=y;y=z;}

floata=5,b=16,c;

MYSWAP(______,a,b);

31.软件工程研究的内容主要包括:【】技术和软件工程管理。

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

33.下面程序把从终端读入的文本(用#作为文本结束标志)复制到一个名为file.txt的新文件中。补足所缺语句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

34.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

35.人员基本信息一般包括:身份证号、姓名、性别、年龄等。其中可以作为主关键字的是()。

36.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

37.若x为int类型,请写出与!x等价的C语言表达式______。

38.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为______。

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

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

40.软件是程序、数据和【】的集合。

三、1.选择题(20题)41.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

42.对专门从事数据库管理、维护的人员,称之为()

A.NBAB.DBAC.DMAD.DDS

43.下列程序的输出结果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}

A.0B.3C.OKD.没有任何输出

44.下列关于switch语句和break语句的结论中,正确的是

A.break语句是switch语句中的一部分

B.在switch语句中可以根据需要使用或不使用break句

C.在switch语句中必须使用break语句

D.以上三个结论中有两个是正确的

45.执行下列程序段后,变量a,b,c的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?x:++y;b=++x;c=y;

A.a=5,b=5,c=5

B.a=4,b=5,c=5

C.a=5,b=6,c=5

D.a=1,b=5,c=6

46.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*pp=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

47.结构化程序设计的核心和基础是()。

A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法

48.有以下程序:#include<stdio.h>main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;printf("%d\n",b);}程序运行后的输出结果()。

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

49.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

50.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

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

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

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

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

52.有以下程序:#include<stdio.h>main(){FLLE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat""w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dar","r");fp=fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);)程序运行后的输出结果是()。

A.2030B.2050C.3050D.3020

53.有以下程序

intfun(intn)

{if(n==1)return1;

else

return(n+fun(n-1));

}

main()

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x)

}

执行程序时,给变量x输入10,程序的输出结果是

A.55B.54C.65D.45

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

55.下列程序的运行结果是______。voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);}

A.63B.36C.编译出错D.0

56.线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

57.下面是对宏定义的描述,不正确的是______。

A.宏不存在类型问题,宏名无类型,它的参数也无类型

B.宏替换不占用运行时间

C.宏替换时先求出实参表达式的值,然后代入形参运算求值

D.宏替换只不过是字符替代而已

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

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上3种描述都不对

59.在C语言中,合法的长整型常数是_______。

A.OLB.4962710C.4312765D.0xa34b7fe

60.以下对结构体类型变量的定义中,不正确的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm,}tdl;

四、选择题(20题)61.算法的空间复杂度是指()。

A.算法在执行过程中所需要的计算机存储空间

B.算法所处理的数据量

C.算法程序中的语句或指令条数

D.算法在执行过程中所需要的临时工作单元数

62.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

63.

64.

65.下述程序的输出结果是()。

#include<stdio.h>

main

{charch[2][5]-{”1234”,”5678”},*p[2];

inti,j,s=0;

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

p[i]=ch[i];

for(j=0;j<2;j++)

{s=p[i][j]一'0';

printf("%d",s);}

}A.A.6357B.6135C.1357D.691357

66.有以下程序程序运行后的输出结果是()。

A.21B.11C.6D.120

67.以下叙述中不正确的是

A.C语言中的文本文件以ASCII码形式存储数据

B.C语言中对二进制文件的访问速度比文本文件快

C.C语言中,随机读写方式不适用于文本文件

D.C语言中,顺序读写方式不适用于二进制文件

68.有以下程序

69.(32)数据的存储结构是指()

A.数据所占的存储空间量

B.数据的逻辑结构在计算机中的表示

C.数据在计算机中的顺序存储方式

D.存储在外存中的数据

70.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

71.以下不能正确定义二维数组的选项是()。

A.

B.

C.

D.

72.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

73.有如下程序:

则b的值是()。

A.15B.16C.18D.19

74.若有下的定义:"intt[3][2];",能正确表示t数组元素地址的表达式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

75.有以下程序程序运行后的输出结果是()。

A.21B.11C.20D.10

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

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

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

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

77.以下选项中不合法的标识符是()。

A.&aB.FORC.printD._00

78.以下选项中有语法错误的是()。A.char*str[]={"guest"};

B.charstr[][lO]={"guest"};

C.char*str[3];str[t]={"9uest"};

D.charstr[3][lO];str[1]={"guest"};

79.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

80.

五、程序改错题(1题)81.改正下列程序中不正确的语句。

main()

{inta;

scanf(“%d”,a);if(a=1)printf(“One\n”);}

六、程序设计题(1题)82.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*str,chart[]){}voidmain{charstr[100],t[100];system("CLS");printf("\nPleaseenterstringstr:");scanf("%S",str);proc(str,t);printf("\nTheresultiS:%s\n",t);

参考答案

1.A

2.D

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

4.D

5.B栈是先进后出,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。

6.D解析:本题题面要求删除q所指结点并释放该结点,而选项A中虽然是删除了q所指鲒点,但并未释放q这个结点,而释放的是p结点,所以选项A错误;选项B是将q的下一结点的地址赋值给指针变量p,这意味着p原来的成员变量内容被q的下一结点的成员变量内容所代替,即原p结点也被删除了,所以选项B错误;选项C相当于将q的所有成员变量内容代替了p的所有成员变量内容,即p结点被删除,所以错误;选项D是将q的下—结点的地址赋值给p的成员next\u3000(成员next用于存放一结点的地址),使得p的next成员不再指向q,而是指向q的下一结点,相当于删除了q这个结点,同叫用free函数正确释放了q这一结点,所以选项D正确。

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

8.BS(k+j)=(k+j)*k+j*2=(5+2)*5+2*2=39,同理S(k-1)=(k+j)*k+j*2=\r\n(5-2)*5-2*2=11,所以答案选择B。

9.C解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。

使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。

另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)

功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。

使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\\0’,连接后“字符数组”中存储的字符串的结束标志‘\\0’被舍弃,只在目标串的最后保留一个‘\\0’。

10.D

11.D

12.BB【解析】1966年Boehm和JaCopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

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

14.D

15.C

16.A分块查找是折半查找和顺序查找的一种改进方法,分块查找要求索引表是有序的,对块内节点没有排序要求,因此查找较快,且插入和删除操作也比较方便。

17.A

18.D结构体指针变量p指向a数组的第1个元素,所以“p->x”为20。执行“p=p->y”后,p指向数组a的第2个元素,所以输出15。故本题答案为D选项。

19.D

20.A本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

21.fnamefpfname\r\nfp解析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的—般调用方式为:fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fp。

22.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

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

24.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

25.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前疗遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。

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

27.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

28.I<na[I]I<n,a[I]解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它们所指向的变量时,要对它们进行指针运算,即*号运算。

29.0;sum<=100;sum

30.CC解析:本题关键在考生是不是了解宏的基本运用,再使用宏的时候明显少了一个实参。在定义宏的时候变量z是用来做中间变量的,题目中缺的变量就是一个中间变量C。

31.软件开发

32.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

33.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中写数据,并且该文件是新文件,应当使用文件打开方式'w',文件操作结束时要用函数fclose关闭文件,以防数据丢失。

34.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组str1和str2,并且给str2赋初值“abcdefgh”,接着调用函数strcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后将指针s和t都移到下一个元素。所以空白处应该填*t++或*(t++)。

35.身份证号身份证号解析:主关键字是表中区别不同记录的标识,在该表中只有身份证号能具有这个作用,所以用其作为主关键字。

36.->->解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。

37.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

38.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

39.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

40.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

41.D解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。

42.B

43.D解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。

44.B解析:break语句可以用在switch和循环语句中,作用是跳出switch或循环结构,但并不要求switch结构和循环结构中必须有break语句,所以选项B)的说法是正确的。注意:break、continue语句在循环语句中的使用。

45.B解析:本题考查自加(++)、自减(--)运算符的使用。“++i,--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算:“i++,i--”,先使用此时的i的值参与运算,在使用i之后,再使i的值加1或者减1。

对于第1个表达式--x=4,y++=4。两者相等,--x==y++为真,所以a=x=4,执行完此语句后y的值是5。

第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5第一个表达式c=y=5。

46.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

47.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。

48.B解析:本题要注意break和continue的区别。continue语句只结束本次循环,继续下一次循环;而break语句则是结束整个循环。本题执行过程如下:

a=1,b=1:a>=8不成立,a%2==1成立,执行a+=5,则a=6,继续执行下一次循环;

a=6,b=2:a>=8不成立,a%2==1不成立,执行a-=3,则a=3,继续执行下一次循环;

a=3,b=3:a>=8不成立,a%2==1成立,执行a+=5,则a=8,继续执行下一次循环;

a=8,b=4:a>=8成立,结束整个循环,输出b的值4。

49.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

50.C解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

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

52.A解析:本题首先以创建方式打开文件d1.dat,两次调用fpnntf()把i和j的值写到文件d1.dat中,文件d1.dat的内容为20<回车>30<回车>后把该文件关闭再以读的方式打开,文件位置指针指向文件头,再通过fscanf()函数从中读取两个整数到k和n中,由于格式符无间隔,因此输入数据可以用回车隔开,故输入的k值为20,n值为30。所以4个选项中A正确。

53.A本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。

在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。

在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。

变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。

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

55.B解析:本题中主函数里的x、y,fun函数里的a、b、k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。

56.B【命题目的】考查有关线性表存储结构的基本知识。

【解题要点】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(I-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

【考点链接】顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。

57.C解析:宏替换实质上就是字符替代,它不可能进行计算,故C错误。带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。

58.C解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。

59.A解析:在一个整常量后面加—个字母1或L,则认为是longint型常量。

60.C解析:定义结构体类型的变量有几种的方法如下:

①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量tdl。上述B)项中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。

structaa

{...

}tdl;

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{

};

structaatdl;

这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是A)项的形式。

61.A算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A项。

62.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

63.B

64.D

65.C本题先将指针P指向二维数组ch[2][5],相当于p[0]="1234",p[1]="5678";通过双重for循环,将P中的字符隔一个输出一个,通过“s=p[i][j]-'0';”语句将所要输出的字符#换成相应的十进制数。

66.A循环调用fun函数,依次返回值为23456,s原值为l,累加以上返回值,最终结果为21,所以答案选择A)。

67.D解析:在C语言中文本文件是以ASCII码形式存放的,每个字符占一个字节。由于数据在计算机中是以二进制形式存放的,因此二进制文件中的数据可以直接读出,而不需要像文本文件那样把ASCII码转换成二进制,因此速度较快。在文本文件叶,,数据以ASCII码形式存放,用户很难判定一个数据到底占几个字节,所以不适合使用随机读写方式。数据以二进制形式存放,占有的字节数是固定的,所以可以进行随机读写,当然也可以顺序读写。故D选项为所选。

68.A本题考查的是二维数组的定义、赋初值和对二维数组元素的引用。在funfl函数中,首先将s[0][k]的值赋给m,然后通过for循环,遍历s[1][k]s[n-1][k]之中的数,将遇到的比m大的数保存到m中。很显然,这是搜索最大值的算法,搜索的是s[Ol[k]一sin—l][k]之间的最大值。所以

温馨提示

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

评论

0/150

提交评论