2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年山东省东营市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下选项中能用作数据常量的是()。

A.115LB.0118C.1.5e1.5D.o115

2.该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;

B.*p=&n;

C.scanf("%d",&p)

D.printf("%d\n",p);

3.在C++中,一个函数带有参数说明时,则参数的默认值应该在()中给出。A.函数定义B.函数声明C.函数定义或声明D.函数调用

4.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

5.以下程序中函数sort的功能是对数组a中的数据进行由大到小的排序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[]={1,2,3,4,5,6,7,8,9,10},i;son(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3;8,7,6,5,4,9,10,

D.1,2,10,9,8,7,6,5,4,3,

6.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序运行后的输出结果是()。

A.18,34,100B.24,34,92C.24,34,100D.18,34,92

7.有下列程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c=k;执行该程序段后,k的值是()。

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

8.有以下程序#include<stdio.h>intfun(chars[]){intn=0;while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)return(n);}main{chars[10]={6,1,*,4,*,9,*,0,*);printf("%d",fun(s));}程序运行的结果是()。A.9B.61490C.61D.5

9.若有如下程序:#definePI3.1415926#defineA(r)2*PI*rmain(){floata,1;a=3.0;1=A(a);printf("r=%.2f,1=%.2f\n",a,1);}则程序运行后的输出结果是()

A.r=3.001=18.85

B.3.00,18.85

C.r=3.0000001=18.8495555

D.r=3.01=18.8495555

10.

11.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.选择排序C.快速排序D.归并排序

12.

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

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

14.以下不正确的叙述是()。

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变

D.当从键盘输入数据时,对整型变量只能输入整型数值,对实型变量只能输入实型数值

15.若有定义:“inta=4,b=5;floatx=3.4,y=2.1;”,则下列表达式的值为()。(float)(a+b)/2+(int)x%(int)y;

A.5.5B.55C.5.500000D.55.00000

16.已知函数test定义为()。A.执行函数test后,函数没有返回值

B.执行函数test后,函数不再返回

C.执行函数test后,函数返回任意类型值

D.以上三个答案都是错误的

17.按照标识符的要求,()符号不能组成标识符。A.连接符B.下划线C.大小写字母D.数字字符

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

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

19.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

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

A.算术运算符中不包含“=”运算符

B.模运算符“%”是c语言基本的算术运算符

C.算术运算符中只有“*”、“/”优先级高于关系运算符

D.自加和自减运算符只能用于变量,而不能用于常量或表达式

二、2.填空题(20题)21.软件工程的出现是由于【】。

22.下列程序用来输出结构体变量ex所占存储单元的字节数。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

23.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567"};

for(i=0,j=strlen(str)[14];i<j;i++,j--)

{k=str[i];str[i]=str[i];str[j]=k;}

printf("%s\n",str);}

24.若fp已下确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(【】);。

25.多媒体计算机所用的CD-ROM是【】。

26.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

27.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

28.下列软件系统结构图的宽度为[]。

29.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空。

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

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

}

}

30.请用位运算实现下述目标(设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);

}

31.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

32.若a的值为1,则表达式!a‖++a的值是______。

33.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

34.下面程序的运行结果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

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

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

37.若a是血型变量,则表达式(a=2*3,a*2),a+6的值为______。

38.以下程序调用函数swap_p将指针s和t所指单元(a和b)中的内容交换,请填空。

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

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

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

39.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

40.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。

voidfunc(intx,inty,【】z)

{*z=x+y;

}

三、1.选择题(20题)41.下列选项中正确的语句组是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

42.有以下程序:structSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={"LiSiGuo",2042);c=b;}voidf2(structSTU*c){structSTUb={"SunDan",2044);*c=b;}main(){structSTUa={"YangSan",2041},b={"WangYin",2043);f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}执行后输出结果是()。

A.20412044B.20412043C.20422044D.20422043

43.如果需要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是()。

A.fp=fopen("FILE","r");

B.fp=fopen("FILE","a+");

C.fp=fopen("FILE","w+");

D.fp=fopen("FILE","r+");

44.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

45.以下函数定义的类型符是()。fff(doublex){printf("%f",x+x);}

A.与x类型相同B.void类型C.int类型D.无法确定

46.已知chara=15,则a,-a和!a的整型值分别为______。

A.240、-15、0B.-16、-15、0C.0、-15、240D.0、-15、0

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

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

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

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

49.在printf的格式字符中,e格式字符的作用是()。

A.以十六进制无符号形式输出整数

B.以带符号的十进制形式输出整数

C.以指数形式输出实数

D.以字符形式输出,且只输出一个字符

50.下列选项中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

51.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

52.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是()。

A.a^bB.a|bC.a&bD.a<<4

53.字符串"\\\'abcd\123\xAB\t"的长度是()。

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

54.设有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr==str;执行上面的程序段后,*(ptr+10)的值为()。

A.'\0'B.'0'C.不确定的值D.'0'的地址

55.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

56.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*1OL;

57.当执行下面的程序时,如果输入ABC,则输出结果是______。#include"stdio.h"#include"string.h"main(){charss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

58.需求分析阶段的任务是确定()

A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能

59.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是()

A.15B.10C.6D.3

60.源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符、注释和

A.程序的视觉组织B.尽量不用或少用GOTO语句C.检查输入数据的有效性D.设计良好的输出报表

四、选择题(20题)61.

62.有三个关系R、S和T如下:

则由关系R和s得到关系T的操作是()。

A.自然连接B.并C.交D.差

63.

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

A.用户定义的函数中可以没有return语句

B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C.用户定义的函数中若没有reillnl语句,则应当定义函数为void类型

D.函数的retU/Tl语句中可以没有表达式

65.

66.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是______。

A.12353514B.12353513C.12343514D.12343513

67.有以下程序:

#include<<stdio.h>

structstu

{intnum;

charname[10]:

intage;}

voidfun(structstu*p)

{printf("%s\n",(*p).name);}

themain

{

structstustudents[3]={{9801,"Zhang".20},

{9802,"Wang",19},{9803,"Zhao",18}}

fun(students+2);

}

输出的结果是()。

A.ZhangB.ZhaoC.WangD.18

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

A.&aB.FORC.pfintD.00

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

70.

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

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

72.待排序的关键码序列为15,20,9,30,67,65,45,90,要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。

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

73.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

74.以下关于C语言的叙述中正确的是()。

A.C语言的数值常量中夹带空格不影响常量值的正确表示

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致\

D.C语言中的注释不可以夹在变量名或关键字的中间

75.下面程序由两个源程序文件t4.h和t4.c组成,程序编译运行的结果是()。

t4.h的源程序为:

A.920B.1611C.911D.1610

76.若有定义语句:“intkl一10,k2=20;”,执行表达式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分别为()。

A.0和1B.0和20C.10和1D.10和20

77.

78.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

79.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

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

A.C语言的可执行程序是由一系列机器指令构成的

B.用C语言编写的源程序不能直接在计算机上运行

C.通过编译得到的二进制目标程序需要连接才可以运行

D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。

例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写一个函数voidproc(char*tt,intpp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefghxyzabcde“e后,程序的输出结果应该是:222233110000000000000000111。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.AA选项中“115L”表示长整型数据。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B选项错误。C选项中e后面应该是整数,而不能是小数1.5,所以C选项错误。D选项中八进制常量应该是以数字“0”开始,而不是以字母“o”开始。故本题答案为A选项。

2.A选项B)的正确写法应为p=&n;选项C)的正确写法应为scanf("%d",p);选项D)的正确写法应为print("%d\\n",*p)。

3.CC程序中函数可以在说明或定义时给一个或多个参数指定默认值,但是不能在函数说明定义时同时指定默认参数,默认参数值应该在函数名第一次出现时指定。

4.C解析:这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。

5.C解析:在main函数中调用sort函数时,实参&aa[3]把数组元素aa[3]的首地址传给形参数组a,使aa[3]与a[0]相对应。sort函数将从aa[3]开始的连续5个数进行了从大到小的排序,其他数组元素不变。

6.D程序中S1和S2都是宏定义。S1(a+b)宏展开后的表达式为4*a+b+4*(a+b),即4*1+2+4*(1+2),结果为18;S2(a,b)宏展开后的表达式为4*(a)*(b)+b*a,即4*(1)*(2)+2*1,结果为10;S1(3)宏展开后的表达式为4*3+4*(3),结果为24;32(3+a,b+3)宏展开后的表达式为4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,结果为92。最终输出:18,34,92。故本题答案为D选项。

7.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。

8.C在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。

9.A

10.B

11.A解析:以下几种算法的时间复杂度分别为:冒泡排序(n2);选择排序(n2);快速排序(nlog2n);归并排序(nlog2n)。当排序元素序列基本有序的情况下,冒泡排序的交换次数为0,只是顺序扫描数据而已,所以其效率是最高的。

12.B

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

14.D

15.C在计算(float)(a4-b)/2时,由于通过强制类型转换将(a+b)转换成了float型,所以应先将2转换成float型,再进行计算,得4.500000。在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,结果为1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。类型转换的一般规则是:低级类型从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→log→float→double。

16.A

17.A

18.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

19.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

20.C

21.软件危机的出现软件危机的出现

22.ex或structstex或structst

23.颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中—起定义,所以在第—个空\r\n\r\n

24.“d1.dat”“rb”或“d1.dat”“r+b”或“d1.dat”“rb+”“d1.dat”,“rb”,或“d1.dat”,“r+b”,或“d1.dat”,“rb+”,解析:打开文件的函数为fopen(”文件名”,“mode”),其中“mode”表示文件的打开方式。如果打开的是二进制文件,其mode字符串可以是:“rb”、“wb”、“ab”、“rb+”、“wb+”、“ab+”。“r”表示以只读方式打开。“w”表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。“a”为追加方式打开。若文件存在时;将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。“r+”打开一个已存在文件用于更新(可读可写)。“w+”创建个新文件用于更新,如果文件存在,文件被重写(可读可写)。“a+”打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填“d1.dst”,“rb”或其他等价的表达法。

25.只读光盘只读光盘

26.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

27.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

28.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

29.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i],即可实现将一个数组的前项和后项之和存入另一数组。

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

31.参照完整性参照完整性

32.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。

33.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。

34.66解析:经过分析将递归函数写成其数学表达式如下:

本题中定义了一个长度为3的数组aa并初始化。接着调用递归函数f,由上面的数学表达式以计算其返回值s=1+2+3=6,所以空格处应该填6。

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

36.软件开发

37.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

38.&s&t&s,&t解析:指针做函数参数时,形参和实参指向同一个数据,所以函数中对形参所指向的数据的改变也能影响到实参。本题中函数swap_p的形参为指向指针的指针,即双重指针,原理跟普通的指针是一样的。注意:通过指针来引用一个存储单元。

39.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

40.int*int*解析:从函数体中可看出,2是一个指向整型的指针,该函数的形参z是传地址调用。

41.D解析:C语言规定可以对字符指针变量直接赋字符串常量,但不能给字符数组直接赋字符串常量,对字符数组赋字符串常量应使用的是strcpy函数。正确答案为选项D。

42.A解析:本题中首先定义了一个结构体类型STU,它由一个字符数组和一个整形变量hum组成。然后定义两个函数f1和f2。其中f1是值传递的,f2是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a),由于函数n是值传递,故执行该函数后并没有改变a的值,再接着调用函数f2(&b),由于该函数是地址传递,执行该函数后将使变量b的值为{'SunDan',2044},故函数最后输出a.num和b.num的值为2041和2044。所以,4个选项中选项A符合题意。

43.D解析:本题考查打开文件函数fopen(),打开文件函数fopen()的调用形式为:fp=fopen(文件名,文件使用方式)。“文件使用方式”说明:方式“r”为以输入方式打开一个文本文件;方式“a+”为以读/写方式打开一个文本文件,保留文件中原有的数据;方式“w+”为以读/写方式建立一个新的文本文件:方式“r+”为以读/写方式打开一个文本文件。

44.D解析:输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。

45.C解析:在函数定义时,由于函数没有说明其类型,所以系统默认一律自动按整型处理。

46.A

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

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

49.C本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。

50.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。

51.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

52.A解析:1与1异或结果为0,0与1异或结果为1,可见要使某位数翻转,只要使其与1进行异或运算即可。0与0进行异或运算结果为0,1与0进行异或运算结果为1,可见要使某位的数不变,只要使其与0进行异或运算即可。

53.C解析:本题中的字符串出现了5个转义字符\\\\、\\\\'、\\123、\\xAB、\\t和4个字符‘a’、‘b’、‘c’、‘d’,所以字符串的长度是9,选项C符合题意。

54.A解析:本题涉及字符数组和指针两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上'\\0',所以题中数组str有11个元素;②ptr指向数组str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。

55.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

56.D解析:由于20000+20000、4000*10及30000+10000都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确.而D是长整型运算,不会超出长整型的范围。所以,4个选项中D为所选.

57.A解析:sdtrcat(str1,str2)合并字符串函数的作用是把str2所指字符串的内容连接到str1字符串的后面,自动删去str1原来串中的'\\0'。为了进行这项操作,要求str1所指的字符串后面有足够的空间来容纳str2所指字符串中的内容。函数值为str1所指第一个字符的地址。

58.D解析:结构化分析方法,数据流图,数据字典,软件需求规格说明书

评析,需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织,部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务:选项C)软件开发费用是在可行性研究阶段需完成的任务。

59.B

60.A解析:源程序文档化主要包括三个方面的内容:标识符的命名、程序中添加注释以及程序的视觉组织。

61.D

62.D关系T中的元组是关系R中有面关系s中没有的元组的集合,即从关系R中除去与关系s中相同元组后得到的关系T。所以做的是差运算。

63.B

64.B本题重点考察函数返回值的相关知识,函数

温馨提示

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

评论

0/150

提交评论