2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年广东省河源市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义语句:“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。A.1.9B.1C.2D.2.4

2.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

3.若有下列定义,则对a数组元素地址的正确引用是()。inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

4.

5.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

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

6.

有以下程序:

main

{intx=102,y=012;

printf("%2d,%2d\n",x,y);

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

7.下列叙述中,不符合良好程序设计风格的是()。

A.程序的效率第一,清晰第二B.程序的可读性好C.程序中有必要的注释D.输人数据前要有提示信息

8.有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",'f',95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是()。A.A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

9.

10.有以下程序:#include<stdio.h>voidfun(int*a,int*b){for(;(*a<*B)||(getchar()!=‘@’);){(*a)++;(*b)--;}}main(){inti=0,j=5;fun(&i,&j);printf(“%d,%d\n”,i,j);}程序运行时在第1列开始输入ab@并按<Enter>键,则运行结果是()。

A.7,1B.3,2C.0,5D.5,0

11.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序运行时输入welcomeyoutobeijing并按<Enter>键,则输出结果是()。

A.w,youjing,o

B.welcome,you,jing,to

C.w,you,eeijing,u

D.w,xelcome,eeijing,u

12.下面程序的输出结果是

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%d\n",*p+9);}

A.0B.1C.10D.9

13.在下述论述中,正确的是()。①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的顺序二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④

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

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

15.以下关于简单程序设计的步骤和顺序的说法中正确的是()。

A.确定算法后,整理并写出文档,最后进行编码和上机调试

B.首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档

C.先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档

D.先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构

16.设有定义“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

17.下面程序运行的结果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}

A.x=4B.x=0C.x=2D.x=3

18.考虑一个特殊的hash函数h,能将任一字符串hash成一个整数k,其概率P(k)=2^(-k),k=1,2,…,∞。对一个未知大小的字符串集合S中的每一个元素取hash值所组成的集合为h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()

A.1024B.512C.5D.10

19.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序运行后的输出结果是()。

A.15B.12C.16D.20

20.若有以下定义:floatx;inta,b,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");case1+2:printf("**\n");}

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

二、2.填空题(20题)21.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

22.软件工程研究的内容主要包括:软件开发技术和【】。

23.如果输入'1'、'2'、'3'、'4',则以下程序的运行结果为【】。

#include<stdio.h>

main()

{charc;

inti,k;

k=0;

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

{while(1)

{c=getchar();

if(c>='0'&&c<='9')break;

}

k=k*10+c-'0';

}

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

}

24.有以下程序:

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

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

25.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

26.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar();

n1=ch1-'()';n2=n1*10+(ch2-'()');

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

}

程序运行时输入:12<回车>,执行后输出结果是【】。

27.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

28.以下程序的输出结果是【】。

main()

{

intp[7]={11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

29.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

30.fseek函数的正确调用形式是【】。

31.在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为【】。

32.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控。

33.以下程序的运行结果是()。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

35.有以下程序:

#include<string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i<argc;i+=2)len+=strlen(argv[i]);

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

}

经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行:

exabcdefgh3k44

执行后的输出结果是【】。

36.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

38.若intx=1,y=2;则计算表达式y+=y-=x*=y后的y值是()。

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

40.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。

三、1.选择题(20题)41.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}执行后的输出结果是

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

42.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

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

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据和相关文档的集合

44.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序运行后的输出结果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

45.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。structnodeintdata;structnode*next;}*p,*q,

*r;

现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序是

A.r->next=q;q->next=r->next;p->next=r;

B.q->next=r->next;p->next=r;r->next=q;

C.p->next=r;q->next=r->next;r->next=q;

D.q->next=r->next;r->next=q;p->next=r;

46.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

47.下列二维数组初始化语句中,不正确的是()。

A.intb[][5]={2,9,6,0,8,7,4};

B.intb[3][5]={0,0,9}

C.intb[][4]={{3,9},{7,6,8},{2}};

D.intb[3)[2]={(8,4),(2,1),(5,9)};

48.以下选项中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

49.下列叙述中正确的是A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

50.下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

51.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={′1′,′2′,′3′,′4′,′5′};

D.charc2[]={′\x10′,′xa′,′\x8′};

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

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

53.有以下程序#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

54.以下4个程序中,完全正确的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

55.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()

A.多对多B.一对一C.多对一D.一对多

56.下面程序的运行结果是#include<stdio.h>#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}

A.正数B.负数C.零D.不确定的值

57.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

58.下面程序段中c的二进制值是______。chara=3,b=6,c;c=ab<<1;

A.1011B.1111C.11110D.11100

59.数据的完整性是指数据的正确性、有效性和______。

A.可维护性B.独立性C.安全性D.相容性

60.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

四、选择题(20题)61.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书

62.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。

A.s1的内容更新为abcdefghi

B.s1的内容更新为defghi\0

C.s1的内容更新勾defghiabc\0

D.s1的内容更新为abcdefghi\0

63.对长度为n的线性表排序,在最坏情况下,比较次数是nlog2n的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

64.下面叙述中正确的是(

)。A.全局变量的作用域一定比局部变量的作用域范围大B.静态类型变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋值的auto变量和static变量的初值都是随机值

65.有以下程序段当执行上述程序段,从键盘上输A,555667777123后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

66.有两个关系R、S如下:

由关系R通过运算得到关系s,则所使用的运算为()。

A.选择B.投影C.插入D.连接

67.C源程序中不能表示的数制是()。

A.十六进制B.八进制C.十进制D.二进制

68.以下不能定义为用户标识符的是()

A.MainB._0C._intD.sizeof

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

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

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

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

D.以上3种描述都不对

70.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序运行时从键盘输入9<回车>,则输出结果是()。

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

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

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

72.设有如下程序段:

则执行P=s;语句后,以下叙述中正确的是()。

A.可以用*P表示s[O]

B.S数组中元素的个数和P所指字符串长度相等

C.s和P都是指针变量

D.数组s中的内容和指针变量P中的内容相等

73.

有下列程序:

main

{intk=5,n=0;

while(k>0)

{switch(k)

{dcfault:break;

case1:n=n+k;

case2:

case3:n+=k;

}

k--;

}

printf("%d\n".n);

}

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

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

74.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。

A.scanfB.getcharC.getsD.getc

75.有以下程序:

#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,

76.(45)信息隐蔽的概念与下述哪一种概念直接相关()

A.软件结构定义

B.模块独立性

C.模块类型划分

D.模拟耦合度

77.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表

78.有以下程序

79.有以下程序:

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

A.10B.16C.6D.12

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据以下公式求π的值,并作为函数值返回。例如,给指定精度的变量eps输人0.0001时,应当输出Pi=3.141358。π/2=1+t/3+1/3*e/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:,

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已在主函数中放入结构体数组s中,请编写函数fun(),其功能是把低于平均分的学生记录放入b所指的数组中,低于平均分的学生人数通过形参n返回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN8typedefstruct{ charnum[10]; doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}voidmain(){ STRECs[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf(“The%dstudentdatawhichislowerthan%7.3f:\n”,n,ave); for(i=0;i<n;i++)<p=""></n;i++)<> /*输出成绩低于平均分的学生记录*/ printf(“%s%4.1f\n”,h[i].num,h[i].s); printf(“\n”);}

参考答案

1.B此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,转化一下取整除部分,结果Z=1

2.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

3.D本题考查数组元素的地址的引用。A中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:数组元素下标从0开始);B中,*a+1指的是将数组a的第一个元素加1;选项C中,不存在这种引用方式;D中,&a[0]引用的是数组的首地址。

4.A

5.C

\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。

\n

\n

\n

6.C解析:本题中,“printf('%2d,%2d\\n',x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是2。而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为102和10(y的初值012表示八进制整数12,等于十进制的10)。所以,4个选项中选项C符合题意。

7.A一般来讲,程序设计风格首先应该简单和清晰,其次程序必须是可以理解的,可以概括为“清晰第一,效率第二”。

8.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。

9.D

10.Dfun函数接收两个整型指针变量a、b。for循环判断a、b指向的值大小和getchar读入的字符是否为“@”来决定循环是否执行。循环体内对a、b指向的值各自自增1、自减1。main函数定义并初始化实参i的值为0,实参j的值为5,调用函数fun,传入i、j的地址。所以形参a指向i,形参b指向j,*a的值为0,*b的值为5,*a<*b为真,执行循环体;*a的值为1,*b的值为4,*a<*b为真,执行循环体;*a的值为2,*b的值为3,*a<*b为真,执行循环体;*a的值为3,*b的值为2,*a<*b为假,getchar读入字符“a”,执行循环体;*a的值为4,*b的值为1,*a<*b为假,getchar读入字符“b”,执行循环体;*a的值为5,*b的值为0,*a<*b为假,getchar读入字符“@”,fun函数执行完毕,main函数输出5,0。故本题答案为D选项。

11.A题干中,定义一个二维字符数组v。然后通过for循环,输入4个字符串welcome、you、to、beijing,将其分别存放在v的4个元素中。数组v是存放4个字符串的二维数组;“**v”表示第1个字符串的第一个字符“w”;“*(v+1)”指向第2个字符串“you”;“v[3]+3”指向第4个字符串的第3个字符开始后的整个字符串“jing”;“*(v[2]+1)”表示第3个宇符串的第2个字符“o”。故本题答案为A选项。

12.C解析:此题考查了指针引用一维数组元素的方法。*p+9因为运算符'*'的优先级高于'+',所以输出结果为p指向的元素1,然后加9,值为10。

13.D

14.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都足逻辑1时,表达式才返回值是1;当“||”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4||14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。

15.B\n选项C和D可直接排除,程序是数据结构和算法的组合体,所以是先选择数据结构,然后继而选择相对应的算法,编码并上机调试,最后整理文档。

\n

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

17.C解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。

18.A

19.B#define命令是C语言中的一个宏定义命令,标识符一般使用大写,用标识符定义一个:字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后缀自增运算a++表示先运算,后自加。意思是遇到a++了,先把当前的a的值拿来参加运算,后面再自加。SUB(a++,b++)→(a++)*(b++)=3*4。故本题答案为B选项。

20.C

21.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。strcpy(t,s)函数的功能是把字符数组s所指字符串的内容复制到字符数组t所指的存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环.s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的存储空间中,然后输出字符数组t。

22.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。

23.k=1234

24.运行后报错运行后报错解析:指针q没有指向确定的存储单元,故不能赋值。

25.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

26.1212解析:字符类型的数据在内存中以相应的ASCII码存放,在C语言中,字符数据可以等价为与其相应的ASCII码的整数,还可以作为整数参加运算。在本题中,n1=h1-0'=1-0=49-48=1,n2=n1*10+(ch2-'0')=1*10+(2-0)=10+2=12。

27.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。

28.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2==1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。

29.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:

p(double*)malloc(sizeof(double));

30.fseek(文件指针位移量起始点)fseek(文件指针,位移量,起始点)解析:本题考查函数fseek的用法。fseek函数的调用形式为:

fseek(文件指针,位移量,起始点)

“起始点”用0,1或2代替,其中,0代表“文件开始”;1为“当前位置”;2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。

31.nn解析:在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为n。

32.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

33.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i的初值传递给形参m,进行fun()函数后的运算,输出结果为m=4,k=4。将k值输出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i再自行增加1,i=5,所以主函数输出的结果为“i=5k=5”。

34.11解析:本题是一个陷阱题。在if语句的判断表达式中,使用的不是逻辑运算符==而是赋值运算符=,使该表达式返回的结果正好相反。如果是c==a,则结果为假。但是c=a则是将a赋给c,且表达式的结果是赋值之后的c的值,因此结果为1是真.故最后输出c的值1。

35.66解析:本题中命令行输入5个符号串,所以argc=5,argv[0]指向符号串'ex',argv[1]指向符号串'abcd',argv[2]指向符号串'efg',argv[3]指向符号串'h3',argv[4]指向符号串'k44',for循环的作用是计算strlen(argv[1]),strlen(argv[3])=4+2=6。

36.*(str+I)或str[I]*(str+I)或str[I]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,I=I+1,继续取下一个元素进行判断,直到*(str+I)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+I)相当于str[I]。

37.21

38.0

39.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

40.4545解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为。

41.A解析:本题考核的知识点是位运算。在位与运算符“&”中参加运算的两位都为1时,其结果为1,否则结果为0,位与运算符“|”中参加运算的两位只要有一个为1,则结果为1,只有当相应的两位都为。结果才为0。所以最后输出a和b的值为7和0。所以,4个选项中选项A符合题意。

42.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

43.D解析:软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。

44.B解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行“a=f/=c*=(x=6.5)”,该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值的变为6.5,然后执行“c*=(x=6.5)”相当于执行“c=c*(x=6.5)”,此时c的值为65,接着向左执行“f/=c*=(x=6.5)”,语句相当于执行“f=f/c”接着向最右边执行“a=f,由于a是整型变量,所以a最后取f的整数部分为1。程序最后输出的a、c、f和x的值分别为1、65、1.5、6.5。

45.A解析:题目中要求将q和r所指结点的先后位置交换,即要求p所指结点的指针域指向r所指向的结点,r所指向的结点的指针域指向q所指向的结点,q所指向的结点的指针域指向r所指向的结点。选项A首先让r所指向的指针的指针域指向q所指向的结点,这样就将r所指向的结点的指针域指向的结点丢失了,故选项A错误。选项B首先q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让p所指向结点的指针域指向r所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项B正确。选项C首先让p所指向结点的指针域指向r所指向的结点,然后让q所指向的结点的指针域指向r所指向的结点的指针城所指向的结点,最后让r所指向的结点的指针域指向q所指向的结点,满足要求,故选项C正确.选项D首先让q所指向的结点的指针域指向r所指向的结点的指针域所指向的结点,然后,让,所指向的结点的指针城指向q所指向的结点让,最后让P所指向结点的指针城指向r所指向的结点,满足要求,故选项D正确;所以,4个选项中选项A符合题意。

46.B解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说得函数调用为函数的间接递归调用。所以,4个选项中选项B符合题意。

47.D解析:选项D)定义的是3行2列的数组,赋值时应该用“{}”而不是“()”来对每一行的数组元素进行赋值。注意:二维数组元素的引用。

48.C解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\\”与三位八进制数值或两位十六进制数值代替单个字符。

49.D解析:break语句除了能用于switch语句外,还可以用于循环语句中,因此选项A不正确。在switch语句中,可以使用default来执行所有case均失配时的分支,也可以不使用default,此时若所有case均失配则跳出switch,因此选项B不正确。在switch语句中,每个case的作用就是标出一个执行的起点,当符合某个case时,程序就从该case所标出的起点处开始执行,若没有break语句中断执行的话,程序会一直执行到switch的最后一条语句,而不是碰到下一个case就跳出switch。虽然break与case的配对使用会让所有case分支互不重叠条理明确,但不配对使用在C语言中也是允许的。因此选项C不正确,应该选择D。

50.A解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另一个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。

51.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

52.C解析:p被定义为指针型变量,指向字符数组a的首地址。执行p+=3;指针后移3位,指向d。strcpy(p,'ABCD')将字符串'ABCD'(连同\'\\0\')复制到p所指向的地址单元中,strlen()函数计算p所指向的字符串的长度,返回字符串中字符的个数(不计\'\\0\'),返回值为字符串'ABCD'中字符的个数4。

53.D解析:本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句。y=0符合case0语句,执行a抖并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

54.B解析:选项A在定义main()函数时,函数头后面多了一个分号,故选项A不正确;C语言中的注释是不能嵌套的,故选项C不正确:选项D在使用预编译指令#include时漏掉了#号,所以也是错误的。故应该选择B。

55.C解析:该题考查的是实体间的联系。多对多联系(m:n):如果对于实体集A中的每个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B之间是多对多联系,记作m:n。一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之有联系,反之亦然,则称实体集A与实体集B之间是一对一联系,记作1:1。一对多联系(1:n):如果对于实体集A中每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B之间是一对多联系,记作1:n。那么根据题意可知是多对一联系。所以选项C是正确的。

56.B解析:本题考查了用指针处理字符串的方法。用指针处理字符串,首先要使指针指向该字符串。例如本题中的s1='AbDeG'就是使字符指针指向了字符串'AbDeG',而指针s1+=2则是指针向后移动了两个字符的位置,指向了字符‘D’。strcmp则是字符串比较函数。

57.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。

58.B解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=ab<<1先运算b<<1得二进制值为00001100,再运算a∧00001100,最后得二进制值00001111。

59.D解析:数据模型应该反映和规定本数据模型必须遵守的、基本的、通用的完整性约束条件。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。

60.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

61.D需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。

62.Dstrcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。

63.D在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n一1)/2,堆排序需要比较的次数为nlog2n。

64.B

65.A本题考查的是格式输)ki$i数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。因此j的值为55,y的值为566.0,字符数组nanle的值为7777123。故本题答案为A)。

66.B解析:专门的关系运算包括:选择、投影和连接。1、选择:从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。2、投影:从关系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。3、连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。选择和投影运算的操

温馨提示

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

评论

0/150

提交评论