2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序程序运行后的输出结果是()。

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

2.在一个带头结点的单链表HL中,若要在第一个元素之前插入一个由指针p指向的结点,应该使用的语句为()

A.HL=p;p->next=HL;

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

C.p->next=HL->next;HL->next=p;

D.p->next=HL;p=HL;

3.有以下程序main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}执行后的结果是______。A.输出字符a的ASCⅡ码B.输出字符c的ASCⅡ码C.输出字符cD.程序出错

4.以下能正确定义字符串的语句是()。

A.charstr=“\x43”;

B.charstr[]=“\0”;

C.charstr=”;

D.charstr[]={‘\064’};

5.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法

6.设有定义“floata=12.3f;doubleb=456.78;”,若想用printf函数输出a和b的值,关于输出格式,以下说法正确的是()。

A.只能用%lf输出a,用%f输出b

B.只能用%f输出a,用%lf输出b

C.只能用%lf输出a,用%lf输出b

D.既可以用%f输出a,也可以用%f输出b

7.在定义inta[5][6];后,数组a中的第10个元素是()。(设a[0][0]为第一个元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

8.以下说法不正确的是

A.C程序中必须有一个main()函数,C程序是从main()函数的第1条语句开始执行的。

B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。

C.C程序中的main()函数必须放在程序的开始位置。

D.C程序中的main()函数位置可以任意指定。

9.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序运行后的输出结果是()。

A.1234B.0123C.5678D.4321

10.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

11.C语言中运算对象必须是整型的运算符是()。

A.%=B./C.=D.<=

12.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

13.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。

A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式

14.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

15.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。

A.先序遍历B.中序遍历C.后序遍历D.按层遍历

16.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x一y)(x++):(y++)中的条件表达式(x-y)等价的是()A.(x-y<0|x-y>0)B.x-y<0).C.(x-y>0)D.(x-y==)

17.有以下程序:#include<stdio.h>main(){inta=10,b=11;if(++a==b++) printf(“T”);else printf(“F”);printf(“a=%d,b=%d\n”,a,b);}程序运行后的输出结果是()。

A.Fa=11,b=11B.Fa=10,b=12C.Ta=10,b=11D.Ta=11,b=12

18.有以下函数:intfun(char*x,char*y){intn=0;}while((*x==*y)&&*x!=‘\0’){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找x和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

19.C语言的逻辑表达式在特定情况下会产生“短路”现象。若有逻辑表达式“x++&&y++,”则以下叙述中正确的是()。

A.若x的值为0,则“y++”操作被“短路”,y值不变

B.若x的值为1,则“y++”操作被“短路”,y值不变

C.若y的值为0,则“&&”运算被“短路”,y值不变

D.若y或x的值为0,则表达式值为0,“x++”和“y++”均不执行

20.

二、2.填空题(20题)21.若有定义doublea[5];,则a数组元素下标的上限为______。

22.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

23.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

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

25.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]={'a','b','c','d','e','f','h','\0'};inti,j;i=sizeof(A);j=strlen(A);printf("%d,%d",i,j);}程序运行后的输出结果是()。

26.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

27.执行下面程序段时输出suet,请填空。

main()

{staticchara[]="student";

char*p;

for(p=a;p<【】;p+=2)

putchar(*p);

}

28.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

29.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

30.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

32.下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;【】;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>l;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

34.在scanf()函数调用语句中,可以在格式字符和%号之间加上一个星号,它的作用是跳过对应的输入数据;当输入以下数据时,100200300400500<回车>,下面语句的执行结果为【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

35.对存储器按字节进行编址,若某存储器芯片共有8根地址线,则该存储器芯片的存储容量为【】字节。

36.请用位运算实现下述目标(设16位二进制数的最低位为零位):

(1)输出无符号正整数m的第i个二进制位的数值。

(2)将m的第i个二进制位置1,其余的位不变,然后输出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

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

k=【】;

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

k=pow(2,i);

m=【】;

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

}

37.以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。

#include<stdio.h>

main()

{inta[3][4]={13,-2,7,5},{1,0,4,-3},{6,8,0,2}};

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

inti,j,c[3][4];

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

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

c[i][j]=【】;

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

{for(j=0;j<4;j++)

printf("%3d",c[i][j]);

printf("\n");}}

38.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

39.下列程序的输出结果是【】。

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

40.下列程序的输出结果是【】。

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

三、1.选择题(20题)41.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

42.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

43.设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。

A.gets(s);

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

C.while((s[i++]=getchar())!='\n');s[i]='\0';

D.do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';

44.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。

A.c1∧c2B.c1&c2C.~c2D.c1|c2

45.若有说明:intx[][3]={1,3,5,7,9,11,13};,则x数组的行数为______。

A.2B.3C.4D.无确定值

46.定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

47.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.daf","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);

A.12300B.123C.1D.321

48.对建立良好的程序设计风格,下列描述正确的是()。

A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无

49.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}执行后的结果是()。

A.输出字符a的ASCII码B.输出字符c的ASCII码C.输出字符cD.程序出错

50.下列叙述中,错误的是()

A.数据的存储结构与数据处理的效率密切相关

B.数据的存储结构与数据处理的效率无关

C.数据的存储结构在计算机中所占的空间不一定是连续的

D.一种数据的逻辑结构可以有多种存储结构

51.下面说明不正确的是()。

A.chara[10]="china";

B.chara[10],*p=a;p="chiua";

C.char*a;a="china";

D.chara[10],*p;p=a="china";

52.有以下程序:#include<stdio.h>#include<strine.h>structSTU{charname[10];inthum;};voidf(char*name,ihtnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].nnm;strepy(name,s[0],name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*P;p=&s[1];f(p->name,p->hum);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是()。

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

53.现有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(L[i]){if(k[i]%2==0||k[i]%5==0)count++;i++;}printf("%d,%d\n",count,i);}则程序段的输出结果为

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

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

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

55.以下数组定义中错误的是______。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6)};

C.intx[][3]={{1,2,3},{4,5,6}};

D.mtx[2][3]={1,2,3,4,5,6};

56.下列程序的运行结果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}

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

57.设有如下定义:char*aa[2]={"abcd","ABCD"},则以下说法中正确的是()。

A.aa数组中元素的值分别是{"abcd","ABCD"};

B.aa是指针变量,它指向含有两个数组元素的字符型一维数组

C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D.aa数组的两个元素中各自存放了字符‘a’和‘A’的地址

58.有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}执行后输出结果是()。

A.70B.07C.11D.430

59.从工程管理角度,软件设计一般分为两步完成,它们是()。

A.概要设计与详细设计B.数据设计与接口设计C.软件结构设计与数据设计D.过程设计与数据设计

60.定义下列结构体(联合)数组:structst{charname[15];intage;}a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17};执行语句printf["%d,%c",a[2].age,*(a[3].name+2))的输出结果为()。

A.15,AB.16,HC.16,AD.17,H

四、选择题(20题)61.

62.

63.下列描述中不正确的是()。

A.字符型数组中可能存放字符串。

B.可以对字符型数组进行整体输入、输出。

C.可以对整型数组进行整体输入、输出。

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

64.

以下程序执行后sum的值是()。

main

{inti,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d\n",sum):

}

A.15B.14C.不确定D.0

65.

66.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

67.算法的时间复杂度是指()。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程所需要的基本运算次数D.算法程序中的指令条数

68.若程序中有宏定义行:#defineN100则以下叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C源程序进行预处理时用100替换标识符N

C.对C源程序进行编译时用100替换标识符N

D.在运行时用100替换标识符N

69.

70.以下关于结构化程序设计的叙述中正确的是()。

A.结构化程序使用goto语句会很便捷

B.在c语言中,程序的模块化是利用函数实现的

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

71.

72.

73.设有如下说明

typedefstruct

{intnumber;charclass;doublescore;}student;

则以下选项中,能正确定义结构体数组并赋初值的语句是()。

A.studenttt[2]={{189,’A’,62},{190,’B’,75}};

B.studenttt[2]={189,’"A",62,190,"B",75};

C.structtt[2]={{189,’A’},{190,’B’}};

D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};

74.有以下程序函数fun只对下标为偶数的元素进行操作.:

程序运行后的输出结果是()。A.A.7,2,5,4,3,6,1,

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

C.7,6,5,4,3,2,1,

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

75.

76.有以下程序

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

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

A.5.OOB.5C.5.2lD.0.0

78.数据流图中带有箭头的线段表示的是()。

A.控制流B.事件驱动C.模块调用D.数据流

79.阅读下面程序段,则执行后的结果为()。

A.64B.8C.56D.0

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为l3579。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度

不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEFGHl。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{

}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;

chararr[100]={"##################"};

printf(”Thestrin9:kn”);

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

}

参考答案

1.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

2.C

3.D解析:此题中s是—个字符数组,而字符数纽是在编绎时为它分配内存单元的,即此字符数组的地址在编译时是确定的,所以对此地址变量并不能赋值,故语句“s+=2;”错误,故程序出错。

4.BC语言中,字符串是用一对双引号标识的字符序列,并用字符型数组来存放。C选项和D选项不属于字符串,A选项定义的是一个字符变量str,但赋值字符串,显然也不正确。故本题答案为B选项。

5.B解析:我们严格区分调试与测试,调试是已知有错误而来找错误,是被动的;测试有很多种,比如未发现错误但不能保证程序没错而来找BUG,还比如我们运行测试程序是否符合用户的要求,是主动的。所以答案是选项B。A、C、D都是具体的程序调试方法,而B是宏观的程序测试方法。测试有单元测试、集成测试、确认测试、系统测试。比如我们在进行单元测试时,发现程序有错误,我们再可以根据A、C、D的方法来找错误。

6.DC语言中,%f是格式控制符,它既可以输出单精度数也可以输出双精度数。故本题答案为D选项。

7.C

8.C解析:本题考核的知识点是main()函数的作用,以及main()函数在程序中出现的位置。一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项c不正确。所以,4个选项中C符合题意。

9.Badd_more函数接收两个参数a、b,返回“a+b-2”。main函数中,for循环调用add_more函数。当i=2时,传入实参i和2,所以每次调用函数add_more时,b的值都是2。函数add_more返回值等价于实参i。所以每次for循环输出的值就是i的值。故本题答案为B选项。

10.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

11.A解析:C++语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含%运算,它的运算对象也必须是整型。

12.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

13.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。

14.D

15.A

16.A条件表达式:x=表达式1,表达式2:表达式3的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式1:(x-y等价的是(x-y>0)。

17.D自增运算符是将运算对象的值增1,它有前缀形式“++a”和后缀形式“b++”。其中“++a”表示首先将a的值自增1,然后表达式“++a”的值就是自增后a的值;而“b++”表示首先将b的值作为表达式的值,然后再将b的值自增1。本题中,a的初值为10,b的初值为11,则表达式“++a==b++”,等价于“11==11”,条件为真,所以输出“T”。if语句执行完后,a的值为11,b的值为12,输出“a=11,b=12”。故本题答案为D选项。

18.C本题中由循环条件可知,遇到‘\\0’或x与y所指的字符不相等时循环结束。所以函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。故本题答案为C选项。

19.A题干中,“x++&&y++”属于逻辑与表达式。仅当“x++”和“y++”的结果为真,整个逻辑表达式的结果才为真,否则整个表达式的结果为假。当“x++”的结果为0时,“y”就会被短路,即不再执行“y++”表达式,整个表达式的结果为假。所以当x的值为0时,“x”的结果也是0,“y”操作被“短路”,y值不变。故本题答案为A选项。

20.C

21.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

22.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

23.完整性控制完整性控制

24.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

25.98

26.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。

27.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要输出suet就要将指针从字符串开始移动到字符串结尾,表达式p=a使p指向字符串的首地址;表达式p+=2使每次循环p值加2,是向前移动指针;空白处应判断是否到达字符串结尾,因此应填字符串的首地址加字符串长度,strlen(a)的返回值为字符串a所含的字符个数。

28.1616解析:函数运算不改变数据类型,所以结果也是double型,fabs(x)是对x取绝对值,pow(y,fabs(x))是y的labs(x)次幂,即2.04。0=16.000000(注意;结果为double型)。

29.数据存储数据存储

30.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。

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

32.q<p+nq<p+n解析:通过地址传递可以在被调函数中对调用函数中的变量进行引用。

33.5555解析:分析程序执行过程,第一次循环时,j=3,i-5,因为switch(3),所以执行case3,调用P(a[-i)=p(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(s[i++])=P(a[4])=P(5),输出5,之后i的n等于5。

34.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳过对应的输入数据,所以第二个输入数200被跳过去了,只有100,300,400三个数被从键盘输入了进来。

35.256256解析:本题考查对存储器按字节进行编址的规则及其寻址范围(2n),其中n为存储器芯片中地址线的条数。

36.#include"math.h"m>>i&1m|k

37.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:此题是双重for循环结构应用在了二维数组中。外层for循环用来控制二维数组的行,内层for循环控制二维数组的列。

38.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。

39.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

40.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf('%d\\n',i++);输出1,同时i自加1;执行第二次for循环时,i=3;同样的if语句条件不满足,所以直接执行printf('%d\\n',i++);输出3,同时i自加1;执行第三次for循环时,i=5,if语句条件满足,所以执行printf('%d\\n',i),输出5,然后break语句跳出了for循环。

41.D解析:double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf'('%1f',p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%1e)。否则,数据不能正确输入。所以选项D)为正确答案。

42.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

43.B解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()数接收字符串时的结束标志为回车或者空格。因此选巧

44.A解析:按位异或“^”运算,是当对应位上的二进制数值相同时结果为0,否则为1。因为c1,c2的值相同,所以异或的结果为0,选项A)正确。按位与“&”运算符只有当所有对应位上的数都不相同时结果才为0,所以c1&c2的值不可能为0,选项B)错误。“~”是按位取反,由于十进制数92转化成二进制数并不是全为1,所以即使取反也不能得到全为。的答案,所以错误。“|”是按位或运算,由于十进制数92转化为二进制数也不是全为0,所以按位或运算后也不会全为0。

45.B解析:计算行数的方法是用数组的元素个数除以列数,尾数为小数直接进一位。

46.B解析:本题中的二维数组的每个元素就是一个由3个元素构成的一维数组,根据条件for(k=0;k<3;++)和要求的a[k][k]可以得出本题的答案应该是951。

47.B解析:在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。

48.A解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。

49.D解析:因为字符数组s1)中的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。

50.B解析:数据处理是计算机应用的重要领域,在实际数据处理时,被处理的各数据元素总是被存放在计算机的存储空间中,并且各数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,一般也不可能相同。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一般来说,数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率也是不同的。

51.D解析:C语言中操作一个字符串常量的方法有:

①把字符串常量存放在一个字符数组之中。

②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。

当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。

本题选项D)错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

52.A解析:main函数中将定义的结构体类型指针变量p指向结构体类型数组s[1],通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了main函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就对main函数中p->name的改变,而函数f中对形参num的改变不会影响main函数中p-?num的值,因为此时传递给num的是一个值,而不是地址。

53.D解析:在C语言中,定义一维数组的语句一般形式如下:

类型名数组名[常量表达式];

一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计算有多少个数组元素。

54.B

55.B解析:二维数组赋初值时,第一个维数即行数可以省略,但是列数不能省略。因此选项A、C正确。选项D是按数据在二维数组中的顺序初始化。在选项B中,列维数的初始化格式跟定义的维数不一致,为错误选项。

56.A解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。

57.C解析:aa数组被定义为字符型指针数组,有两个元素,分别存放字符串'abcd'和'ABCD'的首地址。

58.A解析:在位与运算符&中参加运算的两位都为1时,其结果为1,否则结果为0。所以本题中的4|3:01002|00112=01112=7。位与运算符|中参加运算的两位只要有一个为1,则结果为1,只有当相应的两位都为0结果才为0。所以本题中的4&3=01002&00112=00002=0。最后输出a和b的值为7和0。故4个选项中选项A符合题意。

59.A解析:从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架;详细设计是将其进一步精化成软件的算法或表示和数据结构。而在技术上,概要设计和详细设计又由若干活动组成,包括总体结构设计/数据设计和过程设计。因此,本题的正确答案是A。

60.C解析:本题主要考查结构体数组。a[2].age为结构体a[2]的age成员,即16。a[3].name为指向结构体a[3]的name成员的第一个元素的指针,即指向“Z”,(a[3].name+2)将指针后移两位指向第三个元素“A”,*(a[3].name+2))是取指针所指向地址的内容。

61.D

62.D

63.C

64.C

\nsum+=i等价于sun+i,在本题中sum没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。

\n

65.D

66.D本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两

温馨提示

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

评论

0/150

提交评论