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

下载本文档

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

文档简介

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

一、单选题(20题)1.

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

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

3.有以下程序:#include<stdio.h>main(){FILE*f;f=fopen(“fllea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有内容为hello,则运行以上程序后,文件filea.txt中的内容为()。

A.abcloB.abcC.helloabcD.abchello

4.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L

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

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

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

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

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

6.存储以下数据,占用存储字节最多的是()。

A.0B.‘0’C.“0”D.0.0

7.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

8.有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf(“%2d%f%s”,&j,&y,name);当执行上述程序段时,从键盘上输入555667777abc后,y的值为()。

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

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

10.有以下程序,其中函数f的功能是将多个字符串按字典顺序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序运行后的输出结果是______。A.2B.3C.6D.4

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

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

12.一个长度为99的循环链表,指针A和指针B都指向了链表中的同一个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同时移动多少步A和B才能再次指向同一个节点()。

A.99B.100C.101D.49E.50F.51

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

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

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

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

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

14.

15.有以下程序:#include<stdio.h>main(){inta[]={10,20,30,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*P;p++;}printf("oAd\n",a[2]);}程序运行后的输出结果是()。A.30B.40C.10D.20

16.算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性

17.假定X和Y为double型,则表达式x=2,y=x+3/2的值是()。

A.3.500000B.3C.2.000000D.3.000000

18.二维数组A按行顺序存储,其中每个元素占1个存储单元。若A[1][1]的存储地址为420,A[3][3]的存储地址为446,则A[5][5]的存储地址为_______

A.470B.471C.472D.473

19.以下选项中不能用作C语言程序合法常量的是()。

A.123B.‘\123’C.1,234D.“\x7D”

20.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

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

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

structNODE

{

intnum;

stmctNODE*next;

};

main()

{structNODEs[3]={{1,'\0'),{2,'\0'),{3,'\0'}),*p,*q,*r;

intsum=0;

s[0].next=s+1;

s[1].next=s+2;

s[2].next=s;

p=s

q=p->next;

r=q->next;

sum+=q->next->num;

sum+=r->next->next->num;

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

}

22.下面程序的输出结果是【】。

#defineMAX3

inta[MAX];

main()

{fun1();{un2(A);printf("\n");}

funl()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

23.媒体在计算机领域中的含义,是指存储信息的实体和【】。

24.实现算法所需的存储单元多少和算法的工作量大小分别称为算法的【】。

25.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

26.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

11

121

1331

14641

其构成规律是:

(1)第0列元素和主对角线元素均为1

(2)其余元素为其左卜方和正上方元素之和

(3)数据的个数每行递增1

请将程序补充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

for(i=1;j<N;i++)

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

27.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。

28.下面的程序实现的是从指针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;}

29.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

30.若有如下程序:

main()

{ints[]={1,2,3,4,5,6},*p=s;

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

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

31.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

32.层次模型的典型代表是IBM公司的【】数据库管理系统。

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

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

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

}

34.在关系运算中,【】运算是在给定关系的某些域上进行的运算。

35.面向对象的模型中,最基本的概念是对象和______。

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

charstr[]="ABCD",*p=str;

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

37.【】(黑箱或白箱)测试方法完全不考虑程序的内部结构和内部特征。

38.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

39.函数sub的功能是根据下面近似分式求π的值。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请在下面的函数中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

40.指针变量p和数组a的说明如下:

int*a[3]={"aa","bb","cc"},**p;

执行语句p=&a[2];后,*p指向的字符串是______。

三、1.选择题(20题)41.语句“a=2;p=&a;b=*p++;”执行后的结果是()。

A.a=3b=3B.a=2b=2C.a=2b=1D.a=2b=3

42.有以下程序:#include<studio.h>#defmeF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。

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

43.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程

B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C.关系中的每一列称为元组,一个元组就是一个字段

D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字

44.有以下程序:intf1(doubleA){returna*a;}intf2(intx,inty){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(2.1,4.0);}程序执行后,变量w的值是()。

A.20.21B.20C.20.0D.0.0

45.有以下程序voidfun(char*c,intD){*c-*c+1;d=d+1;printf("%c,%c,",*c,D);}main(){chara='A',b='a';fun(&b,A);printf("%c,%c\n",a,B);}程序运行后的输出结果是

A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b

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

47.下列有关格式输入函数scanf的叙述中正确的是()

A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”

B.可以只有格式控制项,没有地址列表项

C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址

48.以下说法正确的是()。

A.C程序总是从第一个函数开始执行

B.在C程序中,被调用的函数必须在main函数中定义

C.C程序总是从main函数开始执行

D.C程序中的main函数必须放在程序的开始部分

49.下面程序段的执行结果为()。inti=3,j=0,k=0;for(;i>0;--i){++k;do{++j;if(i!=j)break;++k;}while(j<5);}printf("i=%dj=%dk=%d\n",i,j,k);

A.i=0j=4k=12B.i=0j=5k=5C.i=0j=4k=4D.i=0j=3k=3

50.以下叙述中正确的是A.构成C语言程序的基本单位是函数

B.可以在一个函数中定义另一个函数

C.main()函数必须放在其他函数之前

D.所有被调用的函数一定要在调用之前进行定义

51.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

52.C语言规定,函数返回值的类型是()。

A.由调用该函数时的主调函数类型所决定

B.由return语句中的表达式类型所决定

C.由调用该函数时系统临时决定

D.由定义该函数时所指定的数值类型决定

53.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序运行后的输出结果是()

A.BABBABB.ABBBBAC.BABABAD.BAABBA

54.设有如下关系表:RSTABCABCABC112313112223223313则下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

55.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。

A.X||YB.X|YC.X&YD.xy

56.若有说明:inta[][3]={0,0};则不正确的叙述是()。

A.数组a的每个元素的初值都是0

B.数组a的第一维大小为1

C.数组a的行数为1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

57.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

58.设计软件结构是在软件生命周期的()。

A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是

59.下面程序的执行结果是______。#defineMAX10nta[MAX],i;main(){printf("\n");sub1();sub3(A);sub2();sub3(A);}sub1(){for(i=0;i<1MAX;i++)a[i]-i+i;}sub2(){inta[MAX],i,max;max=5;for(i=0;i<max;i++)a[i]=i;}sub3(inta[]){inti;for(i=0;i<MAX;i++)printf("%d",a[i]);printf("\n");}

A.02468101214161801234

B.01234024681012141618

C.012345678901234

D.024681012141618024681012141618

60.下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是()。#include<stdio.h>main(){chars1[]="chinese",s2[]="japnese";inti;for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)if(s1[i]==s2[i]&&i<7)__________________;}

A.putchar(s2[i]);putchar(i)

B.puts(s1[i],i)

C.printf("%c%d\n",s2[i],i)

D.printf("%c",s1[i]);printf("%d\n",i)

四、选择题(20题)61.以下所列的C语言常量中,错误的是()。

A.0xFFB.1.2e0.5C.2LD.‘72’

62.运行下面程序时,从键盘输入字母H,则输出结果是()。

A.

B.

C.

D.

63.有以下程序:

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

A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

64.

65.

66.

有以下程序:

main

{union

{charch[2];

intd;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位编译系统上,程序执行后的输出结果是()

A.21,43B.43,21C.43,00D.21,00

67.用数据流图(DFD.作为描述工具的软件开发阶段是()。

A.可行性分析B.需求分析C.概要设计D.详细设计

68.已知:intx,y;doublez;则以下语句中错误的函数调用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);

B.scanf("%1d*%d&1f",&x,&y,&z);

C.scanf("%x%*d%o",&x,&y);

D.scanf("%x%o%6.2f",&x,&y,&z);

69.(23)在深度为5的满二叉树中,叶子结点的个数为______。

A.32

B.31

C.16

D.15

70.

71.设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

72.算法分析最重要的目的是

A.找出数据结构的合理性B.找出算法中输入和输出之间的关系

C.分析算法的易懂性和可靠性D.分析算法的效率以求改进

73.已知一棵二叉树前序遍历和中序遍历分别为ABDEFGCHI和DBFEGACIH,则该二叉树的后序遍历为

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

74.有以下程序:

程序的运行结果是()。

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

75.已知:chara;intb;floatc;doubled;执行语句“c=a+b+c+d;”后,变量c的数据类型是()。

A.intB.charC.floatD.double

76.下面程序段的输出为()。

#include"stdio.h"

main

{

printf("%d\n",12<<2);

}

A.0B.47C.48D.24

77.若有定义:“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是()。

A.a=a++,i++;

B.i=(a+k)<=(i+k);

C.i=a%11;

D.i=!a;

78.

79.在下列关于二叉树的叙述中,选出正确的一项()。

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

80.有以下程序

五、程序改错题(1题)81.以下程序可把输入的十进制数以十六进制数的形式输出。请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,定义了NxN的二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a数组中的值为0127919745238314568259141则返回主程序后s的值应为3.375。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}

参考答案

1.D

2.D

3.B执行“fprintf(f,“abc”);”后,f文件原有内容被“abc”覆盖。故本题答案为B选项。

4.D在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—个字母l(L的小写)或L;实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等;选项A中字母o不符合要求,选顶B中超出八进制的范围,选项C中e后面的不为整数,因此选顶D是正确的。

5.A

6.D

7.C树最适合用来表示元素之间具有分支层次关系的数据,故本题选C。

8.Ascanf是格式输入函数,即按用户指定的格式从键盘上把数据输入指定的变量中。其中,在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以j的值为55,y的值为566.0,字符数组name的值为7777abc。故本题答案为A选项。

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

10.D解析:字符串比较函数“strcmp(char*s1,char*s2)”的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到到"\\0"为止。如果全部相同,则认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当s1<s2,返回值<0;当s1=s2时,返回值二0:当s1>s2时,返回值>0。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是4。

11.CC。【解析】数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台五个部分组成,可见DB和DBMS都是DBS的组成部分。

12.A

13.B解析:C语言中注释可以放在任何位置,选项A错误;C语言中的变量只要在使用之前定义即可,位置可以是使用前的任何位置,故选项B正确;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

14.C

15.AFor循环结束后,数组a的值并没有变化,由于数组是由0开始,所以a[2]的值是30。

16.A

17.D本题考查C语言中变量类型的转换。

C语言中若参与运算的变量的数据类型不同,则先转换成同一类型,然后进行运算。转换数据始终往长度增加的方向进行,以确保精确度,如int和long运算,则将int转换为long再运算,所有的浮点运算都是以双精度(double)进行的。

题目中x、y都为double型数据,而表达式3/2为两个整型变量之间的计算,计算结果只保留整数部分,小数部分省略掉。3/2的结果为1。后面变为计算y=x+1,这时都需要变为double型数据,结果为3.000000。

18.C

19.CC选项中不能含有逗号,所以“1,234”不能用作C语言程序的合法常量。B选项表示的是八进制的常量,D选项表示的是十六进制的常量。故本题答案为C选项。

20.D根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,因此本题中度为2的结点为l一1=0个,据此可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即深度为7,选择D)。

21.55解析:主函数首先声明了一个结点数组s[3],并分别初始化其成员num为1、2、3,而成员next全部被初始化为'\\0'也就是0。下面又用三条语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分别将三个结点指向其后面一个结点,而最后一个结点指向第1个结点,构造出一条单向循环链表。接下来用结点指针p=s即让其指向s[0],然后让q=p->next,即指向了s[1],r=q->next即让r指向s[2],然后让一个累计变量sum累加q->next->num和r->next->next->nm,因为q指向s[1]所以它的next指针指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故第2次累加的是s[1].num=2。所以程序最终输出结果为5。

22.24

23.载体载体

24.空间复杂度和时间复杂度算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。

25.11解析:运算符的优先级次序由高到底是!,算术运算符,&&,||。先运算!(x=y),由于x=3非零,则表达式!(x=y)的值为0。再运算x+z,x+z=3+4=7,非零则运算y-z,y-z=3-4=-1,非零则表达式x+z&&y-z的值为1。0||1=0,则表达式!(x=y)||x+z&&y-z的值是1。

26.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i]在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。

27.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。

28.q<p+nq<p+n解析:考查对于函数的地址传递的掌握情况。通过地址传递可以在被调函数中对调用函数中的变量进行引用。

29.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

30.4不定值4,不定值

31.JD

32.IMS(informationManagementSystem)

33.282,8解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。这里程序初始时a=1,b=10,经过操作b-=a;a++后b=9,a=2,判断条件b--<O不成立,退出循环,但b的值被减1,因此结果为:a=2,b=8。

34.投影投影解析:在关系运算中,投影运算是在给定关系的某些域上进行的运算。

35.类类

36.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

37.黑箱黑箱解析:本题考查了软件测试中的黑箱测试。黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

38.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。

39.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果写为1/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实型。

40.cc。cc。解析:a是指针数组,每个数组元素存放的是字符数据的地址,数组a的3个元素分别指向字符串常量'aa'、'bb'和'cc',指针p赋予数组元素a[2]的值,即指向第3个字符串。

41.B解析:执行p=&a;,将变量a的地址赋给指针变量p,运算符*和++的优先级相同,都具有自右向左的结合性,p++是先使用p的值再对p加1,则计算*p,即取p所指向的存储单元的值2,赋值给b,再对p的值加1。输出结果为a=2b=2。

42.A解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。

43.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。

44.C

45.D解析:本题考查用地址作为参数与值作为参数传递之间的不同。在c语言中,数据传递是单向传递的。“值传递”就是实参把对应的值传给相应的形参变量,然后形参和实参不再有任何联系,在被调用函数中,对形参的修改并不影响对应的实参。“地址传递”就是实参把相应的地址传给相应的行参变量,在被调用函数中对行参的修改将修改对应的实参地址对应的值.程序中定义了两个字符型变量'a'和'b',并分别赋初值为,At和'a',然后调用函数fun(),将b的地址和a值作为实参.在函数fun()中第一个参数是传递地址,故在调用函数fun()中对参数做的修改(即将b值加一)将影响字符型变量的值(变为b),函数fun()第二个参数是传值的,故在调用函数fun()对第二个参数做的修改不影响字符型变量a(即'a'的值仍为'A'),所以在fun()函数中输出的是d为b,B,接着在主函数中,输出a,b,然后退出fun()函数,接着执行后面的语句,输出A,b.所以最后输出为b,B,A,b。所以4个选项中D正确。

46.D解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。

选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误。因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。

选项C错误,因为根据一个算法所编制出的程序程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。

所以,本题的正确答案为D。

47.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。

48.C解析:C程序是由main函数开始运行,通过main函数调用其他函数,所以,选项A)错误;在C程序中,函数不能嵌套定义,即不能在一个函数中定义另一个函数,选项B)错;C程序总是从main函数开始执行,但main函数不必放在最前面,故选项D)错。

49.C解析:程序开始时(i,j,k)三个值分别为(3,0,0),然后进入for循环,由于for的第一条语句空缺,所以不做初始化,此时i为3满足循环条件,进入循环体。然后执行“++k;”使k变成1,再无条件进入do-while循环体执行“++j;”使j变成1,此时i和j不相等所以执行break;语句跳出do-while循环。

准备开始第二遍for循环,i的值被减1,此时3个值分别为(2,1,1),i为2满足循环条件,进入循环体。然后依次执行++k;和++j;使它们增1,此时i和j同为2相等,所以跳过break;语句再执行一次++k;使k为3,由于此时j满足do-while的循环条件,所以下一步回到前面执行do后面的++j;语句,使j为3,此时i和j不相等,所以执行break;跳出do-while循环。

准备开始第三遍for循环,i的值被减1,此时3个值分别为(1,3,3),i为1满足循环条件,进入循环体。然后依次执行++k;和++j;使它们增1,此时i和j不相等,所以执行break;跳出do-while循环。

准备开始第四遍for循环,i的值被减1,此时3个值分别为(0,4,4),i为0不满足for语句的循环条件,所以执行循环体后面的printf()函数输出3个值,故正确答案为C。

50.A解析:根据函数的定义语法规定,在C语言程序中,不能嵌套定义,即不能在函数中再定义函数;main()函数在C语言程序中是必须的,但函数可以放在程序中的任意位置;当在所有函数的外部、被调用之前说明函数时,在函数说明后面的任何位置上都可以对函数进行调用。函数说明也可以放在调用函数的说明部分,如在main函数内部进行说明,则只能在main函数内部才能识别函数。

51.D解析:因为变量t的初始值等于1,经过第一次dowhile循环中,执行t=t-2这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,再执行t=t-2这条语句一次,所以变量t的值为-3,接着再判断关系表达式t!=n是否成立,如果关系表达式成立,执行第三次循环,否则退出循环。由此可知,所以只要输入变量n的值为负奇数,则一定会使t==n成立,则退出dowhile循环。

52.D

53.A

54.B解析:并(∪):关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合。

55.D解析:“||”为或运算符,当其左有表达式中只要一个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。

56.D解析:本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。②二维数组第一维的大小由下列规则确定;当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。

57.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。

58.BB。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。

59.D解析:函数sub1给全局作用范围内数组a(长度为10)的每个元素赋值,函数sub2中数组a仅在本函数范围内有效,长度也是10,但仅给前5个元素赋值,main函数调用sub3时,传递数组地址均是全局作用范围内数组a的地址,因此两次调用打印的结果相同。

60.C解析:putchar(s)的功能是把字符s输出到标准输出设备;puts(s1)是把s1指向的字符串输出到标准输出设备。

61.B在C语言中,用e来表示科学计数法时,规定在e后面的数字必须为整数。

62.C参考答案

63.DCou血ue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印一一x的操作,即打印5后跳出循环。第三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x一一的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环。第四次判断循环条件时x的为2,满足循环体中if条件,打印x一一,即打印2后将x减一,执行continue语句,跳出本次循环。在进行for条件表达式中第三个表达式x一一的操作后x的值为0,不满足条件结束循环。所以打印结果为8,5,4,2,。

64.C

65.D

66.A

\ns是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

67.B\n结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。而结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的、称为结构化规格说明的目标文档。

\n

68.BB项的格式应该为scanf("%1d*%d%1f",&x,&y,&z);

69.C

70.D

71.D\n由n!的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C

温馨提示

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

评论

0/150

提交评论