2021-2022年云南省丽江市全国计算机等级考试C语言程序设计_第1页
2021-2022年云南省丽江市全国计算机等级考试C语言程序设计_第2页
2021-2022年云南省丽江市全国计算机等级考试C语言程序设计_第3页
2021-2022年云南省丽江市全国计算机等级考试C语言程序设计_第4页
2021-2022年云南省丽江市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年云南省丽江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

2.下列叙述中正确的是A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

3.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误

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

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

A.&aB.FORC.printD._00

6.下列变量声明合法的是()。

A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=OxfdaL;

D.float2

7.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

8.对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法是()

A.堆排序B.快速排序C.插入排序D.归并排序

9.

10.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。

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

11.

12.下面程序段的运行结果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

13.若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是______。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

14.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是

A.34756B.23445C.35745D.12345

15.

16.算法的空间复杂度是指()。

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

B.算法所处理的数据量

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

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

17.

18.有以下程序(说明:字母A的ASCIl码值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序运行后的输出结果是()。A.BYB.BTC.YTD.YE

19.下面关于B树和B+树的叙述中,不正确的结论是()。

A.B树和B+树都能有效的支持顺序查找

B.B树和B+树都能有效的支持随机查找

C.B树和B+树都是平衡的多叉树

D.B树和B+树都可用于文件索引结构

20.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456

二、2.填空题(20题)21.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

22.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

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

24.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0);

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

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

26.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

27.若a=10,b=20,则表达式!(a<b)的值是【】。

28.软件开发环境是全面支持软件开发全过程的______的集合。

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

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

fun();

printf("\n");

}

30.对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当插入第5个记录到有序表时,寻找插入位置需比较【】次。

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

main()

{

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

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

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

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

}

32.问题处理方案的正确而完整的描述称为______。

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

34.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

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

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

35.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

36.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

37.若有以下定义和语句:

intw[10]={23,54,10,33,47,98,72,80,61},*p;

p=w;

则通过指针p引用值为98的数组元素的表达式是【】。

38.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

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

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

main()

{inti=1;

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

}

40.在数据库的概念结构设计中,常用的描述工具是【】。

三、1.选择题(20题)41.下列选项中,不属于模块间耦合的是()

A.内容耦合B.异构耦合C.控制耦合D.数据耦合

42.在16位IBM-PC机上使用C语言,若有如下定义:stmctdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是()。

A.1B.2C.7D.11

43.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

44.执行以下程序段的输出结果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);

A.0X0B.0X12C.0x0D.0

45.在下述程序中,判断i>j共执行的次数是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

46.有以下程序

#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

47.用树形结构来表示实体之间联系的模型称为()。

A.关系模型B.层次模型C.网状模型D.数据模型

48.下面程序在屏幕上的输出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc

49.有以下程序:#iaclude<stdio.h>main(){intp[8]:{11,12,13,14,15,16,17,18},i=0,j:0;while(i++<7)if(p[i]%2)j+=p[i];printf("%'d\n",j);}程序运行后的输出结果是()。

A.42B.45C.56D.60

50.下列程序的输出结果是______。#include<stdio.h>main(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}

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

51.以下程序的输出结是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}

A.200100B.100100C.100200D.200200

52.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。

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

53.以下程序运行后,输出结果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

54.假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

55.以下程序运行后的输出结果是()main(){chars[]="1234",*ps;for(ps=s;ps<s+3;ps++)printf("%c",ps);printf("\n");}

A.123B.112123C.1234D.乱码

56.现有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[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

57.以下不是面向对象思想中的主要特征的是

A.多态B.继承C.封装D.垃圾回收

58.下列关于switch语句和break语句的结论中,只有()是正确的。

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

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

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

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

59.产生软件危机的原因是:一方面与软件生产本身的复杂性有关;另一方面,和______的方法不正确有关。

A.软件的使用B.软件的成本C.软件的开发和维护D.软件的文档资料

60.阅读如下程序段

#include"stdio.h"

voidfc(FILE*);

main(intargc,char*argv[])

{FILE*fp;

inti=1;

while(--argc>0)

{fp=fopen(argv[i++],"r");

fc(fp);

fclose(fp);}}

voidfc(FILE*p)

{charc;

while((c=getc(p))!='#')

putchar(c-32);}

这个程序段编译、连接以后生成可执行文件50.exe,假定磁盘当前目录下有3个文本文件,其文件名和内容分别为:

文件名内容

k1.txtchina#

k2.txtese#

k3.txtyear#

四、选择题(20题)61.

62.软件生命周期是指()。

A.软件的开发过程

B.软件的运行维护过程

C.软件产品从提出、实现、使用维护到停止使用退役的过程

D.软件从需求分析、设计、实现到测试完成的过程

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

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

64.

65.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。

A.extem和static

B.auto和static

C.register和static

D.register和ex[erll

66.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A.-369B.369C.0.369D.整数集合11,2,3,4,51

67.

68.

69.

70.现有定义inta;doubleb;floatc;chark;,则表达式a/b+C—k值的类型为:()。

A.intB.doubleC.floatD.char

71.若有定义语句:A.1B.1.9C.2D.2.4

72.

73.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

74.若有定义inta[9],+P=a;,则P+5表示()。

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

75.若有说明:inta[3][4]={0};,则下面正确的叙述是

A.只初始化了第一个元素,即a[0][0]可得到初值0

B.此初始化语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

76.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

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

B.1,2,3,3,2,1,

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

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

77.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

78.以下程序爱中,与语句:

79.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

80.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

五、程序改错题(1题)81.下列给定的程序中,proc()函数的功能是:将str所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。

例如,若输人:Howdoyoudo,则输出:HoWdOyoUd0。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

参考答案

1.D解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。

2.D解析:在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确,C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

3.Ado-wlfile的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。

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

5.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字符“&”,所以其不合法。故本题答案为A选项。

6.A解析:解答本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言中的一个关键字,不能再用做变量名和函数名;③C语言规定,指数形式的实型常量e或E后面的指数必须是整数。

7.B本题考查指针函数。其定义的基本格式为:类型说明符(*函数名)。“类型说明符”表示返回的指针值指向的数据类型。

8.B

9.B

10.C

11.B

12.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

13.B解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。

14.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。

15.A

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

17.B

18.Dfun函数的意思是当*s%2==0的时候就输出并且s自加l次,然后判断。所以可知只有第2和第4个位置上的才符合要求,所以答案为D。

19.A

20.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

21.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

22.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

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

24.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

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

26.输出结果输出结果解析:注意:测试的基本方法和步骤。

27.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

28.软件工具软件工具解析:软件开发环境是各类软件开发工具的集合体。

29.33333333解析:本题考查for循环,for(cc=1;cc<=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。

30.11解析:直接插入排序是在已排好序的序列中用顺序查找法查找插入位置。第5个记录是15,15和23比较,就知道15应放在原23放的位置,23及其以后的记录后移。

31.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。

32.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

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

34.&a&bmaxintxyreturn(z)

35.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

36.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

37.*(p+5)

38.52

39.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

40.E-R图E-R图解析:E-R图是设计概念模型的有力工具。

41.B\nB)【解析】耦合可以分为下列几种,它们之间的耦合度由高到低排列:

\n内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。

\n公共耦合——若一组模块都访问同一全局数据结构,则称为公共耦合。

\n外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合

\n控制耦合——若一模块明显地把开关量、名字等信息送入另一模块控制另一模块的功能,则称为控制耦合。

\n标记耦合——若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。

\n数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。

\n直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。

\n

42.D解析:结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

43.D解析:本题中是一个含有两个结点的循环链表。

C语言中结构体的定义为:

struct结构题类型名

{

成员项表;

};

44.D解析:格式字符X或x是以十六进制无符号形式输出整型数(注:输出时不显示前导0x或0X)。

45.D

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

47.B解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有3种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。所以,本题的正确答案是B。

48.BC语言中允许使用一种特殊形式的字符常量,就是以一个“\\”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:\\n,换行;\\t,水平制表;\\b,退格;\\r,回车。

49.B解析:程序执行过程如下:

i=0:i++<7为真,p[i]%2即为p[1]%2,值为0,不执行j+=p[i];j=0;

i=1:i++<7为真,P[i]%2即为p[2]%2,值为1,执行j+=p[i];j=13;

i=2:i++<7为真,p[i]%2即为P[3]%2,值为0,不执行j+=p[i];j=13;

i=3:i++<7为真,p[i]%2即为P[4]%2,值为1,执行j+=p[i]];j=13+15=28;

i=4:i++<7为真,p[i]%2即为p[5]%2,值为0,不执行j+=P[i];j=28;

i=5:i++<7为真,P[i]%2即为P[6]%2,值为1,执行j+=P[i];j=28+17=45;

i=6:i++<7为真,P[i]%2即为p[7]%2,值为0,不执行j+=p[i];j=45;

i=7:i++<7为假,结束循环,输出j的值45。

可见,程序的功能是求除p[0]外的其他奇数的和。

50.B

51.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。

52.C解析:函数func的作用是返回两个形参的和,第一个形参是x,y分别自减和自增后的和13,第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func的返回值为13+8=21。

53.B

54.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,当a为假时,其值等于表达式c的值。第一个表达式:w=6<x=4为假,所以返回x的值,即m=x=4;第二个表达式:m=4<y=3为假,所以返回y的值,即m=y=3。

55.D

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

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

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

57.D解析:面向对象思想中的三个主要特征是:封装性、继承性和多态性。

58.D

59.C解析:在软件开发和维护的过程中存在着不少问题,从而导致软件危机。软件危机一方面与软件生产本身的复杂性有关,另一方面也和软件开发与维护的方法不正确有关。

60.88解析:题目实现的功能是把小写字母转为大写字母,并顺序输出显示。

61.B

62.C\n通常将软件产品从提出、实现、使用维护到停止使用、退役的过程称为软件生命周期。

\n

63.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。

64.B

65.Aauto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字通常会被省,因为所有的变量默认就是aut0的。register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。

66.B只有B)选项369可以用无符号整数来表示和存储。A)选项~369有负号。选项c)0.369是qJ、数,它们都不能用无符号整数类存储。选项D)是一个整数集合需要用数组来存储。

67.A

68.B

69.D

70.B双目运算中两边运算量类型转换规律:

运算数1\t\t\t\r\n\t\t\t\t\t运算数2\t\t\t\t\r\n\t\t\t\t\t转换结果类型\t\t\t\t\r\n\t\t\t\t\t短整型\t\t\t\t\r\n\t\t\t\t\t长整型\t\t\t\t\r\n\t\t\t\t\t短整型一>长整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t长整型\t\t\t\t\r\n\t\t\t\t\t整型一>长整型\t\t\t\t\r\n\t\t\t\t\t字符型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t字符型一>整型\t\t\t\t\r\n\t\t\t\t\t有符号整型\t\t\t\t\r\n\t\t\t\t\t无符号整型\t\t\t\t\r\n\t\t\t\t\t有符号整型一>无符号整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t浮点型\t\t\t\t\r\n\t\t\t\t\t整型一>浮点型\t\t\t\t\r\n\t在a/b的时候,a,b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short一>int->unsigned->long->double←float。

71.Ax、y为整数,x/y值为l,加上o.9为1.9,赋值给整型2,接受后为1。

72.A

73.B选项A为表达式,因此不正确,选项C中a++本身就是表达式,无需再赋值,选项D中,在强制类型转换时,类型名应用括号括起来,故选择8选项。

74.B本题考查了通过指针来引用一维数组元素的方法。题中*P=a;这一赋值语句是指针P指向了数组a的首地址,P+5是指针P向后移动了5个int类型的存储单元,所以P+5指向了数组元素a[5]。

75.D二维数组进行初始化时可以按照分段进行赋值,将每一行看成一段,每一段的个数为列数。也可以按行连续赋值,不用分段,将所有的数值写成一行,系统会在数组每一行的元素个数与列数相同时,从下一行开始继续赋值。也可以对部分数组赋初值,未赋初值的元素自动取0。题目中可以看成是对数组按行进行连续赋值,并且只给出了第一行第一列的数值0,对于未赋值的元素,系统自动取0,故整个数组中的每个元素都可以取初值0。

76.D\n这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

\n

77.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

78.Ak=a>b?(b>C?1:o):o;a>b并且b>C,k为1,其他情况k为o,答案为A)。

79.D结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环3种基本控制结构构造。

80.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

81.

82.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str长度

\nwhile(i<(n+1)/2)//循环逆置交换

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。\n2021-2022年云南省丽江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

2.下列叙述中正确的是A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

3.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误

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

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

A.&aB.FORC.printD._00

6.下列变量声明合法的是()。

A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=OxfdaL;

D.float2

7.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

8.对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法是()

A.堆排序B.快速排序C.插入排序D.归并排序

9.

10.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。

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

11.

12.下面程序段的运行结果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

13.若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是______。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

14.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是

A.34756B.23445C.35745D.12345

15.

16.算法的空间复杂度是指()。

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

B.算法所处理的数据量

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

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

17.

18.有以下程序(说明:字母A的ASCIl码值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序运行后的输出结果是()。A.BYB.BTC.YTD.YE

19.下面关于B树和B+树的叙述中,不正确的结论是()。

A.B树和B+树都能有效的支持顺序查找

B.B树和B+树都能有效的支持随机查找

C.B树和B+树都是平衡的多叉树

D.B树和B+树都可用于文件索引结构

20.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456

二、2.填空题(20题)21.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

22.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

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

24.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0);

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

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

26.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

27.若a=10,b=20,则表达式!(a<b)的值是【】。

28.软件开发环境是全面支持软件开发全过程的______的集合。

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

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

fun();

printf("\n");

}

30.对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当插入第5个记录到有序表时,寻找插入位置需比较【】次。

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

main()

{

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

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

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

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

}

32.问题处理方案的正确而完整的描述称为______。

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

34.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

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

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

35.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

36.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

37.若有以下定义和语句:

intw[10]={23,54,10,33,47,98,72,80,61},*p;

p=w;

则通过指针p引用值为98的数组元素的表达式是【】。

38.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

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

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

main()

{inti=1;

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

}

40.在数据库的概念结构设计中,常用的描述工具是【】。

三、1.选择题(20题)41.下列选项中,不属于模块间耦合的是()

A.内容耦合B.异构耦合C.控制耦合D.数据耦合

42.在16位IBM-PC机上使用C语言,若有如下定义:stmctdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是()。

A.1B.2C.7D.11

43.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

44.执行以下程序段的输出结果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);

A.0X0B.0X12C.0x0D.0

45.在下述程序中,判断i>j共执行的次数是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

46.有以下程序

#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

47.用树形结构来表示实体之间联系的模型称为()。

A.关系模型B.层次模型C.网状模型D.数据模型

48.下面程序在屏幕上的输出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc

49.有以下程序:#iaclude<stdio.h>main(){intp[8]:{11,12,13,14,15,16,17,18},i=0,j:0;while(i++<7)if(p[i]%2)j+=p[i];printf("%'d\n",j);}程序运行后的输出结果是()。

A.42B.45C.56D.60

50.下列程序的输出结果是______。#include<stdio.h>main(){inti=1,j=3;printf("%d,",i++);{inti=0;i+=j*2;printf("%d,%d,",i,j);}printf("%d,%d\n",i,j);}

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

51.以下程序的输出结是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}

A.200100B.100100C.100200D.200200

52.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。

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

53.以下程序运行后,输出结果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

54.假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

55.以下程序运行后的输出结果是()main(){chars[]="1234",*ps;for(ps=s;ps<s+3;ps++)printf("%c",ps);printf("\n");}

A.123B.112123C.1234D.乱码

56.现有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[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

57.以下不是面向对象思想中的主要特征的是

A.多态B.继承C.封装D.垃圾回收

58.下列关于switch语句和break语句的结论中,只有()是正确的。

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

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

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

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

59.产生软件危机的原因是:一方面与软件生产本身的复杂性有关;另一方面,和______的方法不正确有关。

A.软件的使用B.软件的成本C.软件的开发和维护D.软件的文档资料

60.阅读如下程序段

#include"stdio.h"

voidfc(FILE*);

main(intargc,char*argv[])

{FILE*fp;

inti=1;

while(--argc>0)

{fp=fopen(argv[i++],"r");

fc(fp);

fclose(fp);}}

voidfc(FILE*p)

{charc;

while((c=getc(p))!='#')

putchar(c-32);}

这个程序段编译、连接以后生成可执行文件50.exe,假定磁盘当前目录下有3个文本文件,其文件名和内容分别为:

文件名内容

k1.txtchina#

k2.txtese#

k3.txtyear#

四、选择题(20题)61.

62.软件生命周期是指()。

A.软件的开发过程

B.软件的运行维护过程

C.软件产品从提出、实现、使用维护到停止使用退役的过程

D.软件从需求分析、设计、实现到测试完成的过程

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

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

64.

65.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。

A.extem和static

B.auto和static

C.register和static

D.register和ex[erll

66.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A.-369B.369C.0.369D.整数集合11,2,3,4,51

67.

68.

69.

70.现有定义inta;doubleb;floatc;chark;,则表达式a/b+C—k值的类型为:()。

A.intB.doubleC.floatD.char

71.若有定义语句:A.1B.1.9C.2D.2.4

72.

73.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

74.若有定义inta[9],+P=a;,则P+5表示()。

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

75.若有说明:inta[3][4]={0};,则下面正确的叙述是

A.只初始化了第一个元素,即a[0][0]可得到初值0

B.此初始化语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

76.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

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

B.1,2,3,3,2,1,

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

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

77.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

78.以下程序爱中,与语句:

79.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

80.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

五、程序改错题(1题)81.下列给定的程序中,proc()函数的功能是:将str所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。

例如,若输人:Howdoyoudo,则输出:HoWdOyoUd0。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

参考答案

1.D解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。

2.D解析:在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确,C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

3.Ado-wlfile的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。

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

5.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字符“&”,所以其不合法。故本题答案为A选项。

6.A解析:解答本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言中的一个关键字,不能再用做变量名和函数名;③C语言规定,指数形式的实型常量e或E后面的指数必须是整数。

7.B本题考查指针函数。其定义的基本格式为:类型说明符(*函数名)。“类型说明符”表示返回的指针值指向的数据类型。

8.B

9.B

10.C

11.B

12.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

13.B解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。

14.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。

15.A

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

17.B

18.Dfun函数的意思是当*s%2==0的时候就输出并且s自加l次,然后判断。所以可知只有第2和第4个位置上的才符合要求,所以答案为D。

19.A

20.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

21.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

22.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

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

24.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

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

26.输出结果输出结果解析:注意:

温馨提示

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

最新文档

评论

0/150

提交评论