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

下载本文档

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

文档简介

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

一、单选题(20题)1.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

2.以下选项中合法的实型常数是()。

A.5E2.0B.E-3C.2E0D.1.3E

3.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

4.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式()。

A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息

5.下面关于数据库系统中叙述正确的是()。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型的一致

D.数据库系统比文件系统能管理更多的数据

6.

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

A.60B.50C.45D.55

8.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。

A.G中有弧

B.G中有一条从Vi到Vj的路径

C.G中没有弧

D.G中有一条从Vj到Vi的路径

9.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

10.

11.

12.下列语句中,显示没有下画线的超链接的语句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

13.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是

A.data的每个成员起始地址都相同

B.变量data所占内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf(“%I'm”,data.C);输出结果为5.000000

D.data可以作为函数的实参

14.已知8个数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树后,最后2层上的结点总数为______。

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

15.设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m之前的条件是_____________。

A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孙

16.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储

17.

18.若一棵二叉树具有10个出度为2的结点,则在该二叉树中,出度为0的结点个数是()

A.9B.11C.12D.不确定

19.字符串”a+b=12\n”的长度为()。

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

20.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.大写字母B.下划线C.数字字符D.连接符

二、2.填空题(20题)21.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

22.有以下程序

main()

{intx=1,y=1,z=1;

y=y+z;x=x+y;

printf("%d",x<y?y:x);

printf("%d",x<y?x++:y++);

printf("%d",x);

printf("%d",y);

}

运行结果是【】

23.注释说明了程序的功能,它分为【】注释和功能性注释。

24.以下程序的输出结果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

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

26.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

27.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;

28.定义长度为12的数组,下面四种方法中正确的有【】。

①intx[12];②intn=12;③constintn=12;④intx[]={1,2};

intx[n];intx[n];

29.下列程序的输出结果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

30.设y为血型变量,请写出描述“y是偶数”的表达式______。

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

#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]);

}

}

}

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

main()

{inta=1,b=10;

do

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

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

}

33.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

34.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。

35.以下程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(键表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{structlist*head;head=creatlist();}

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

37.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf(”pass");

case'd':case'D':printf(”warn");

}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

40.下面程序的输出是【】。

main()

{enumern{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

三、1.选择题(20题)41.有以下定义:#include<stdio.h>chara[10],*b=a;不能给数组a输入字符串的语句是()。

A.gets(a)B.gets(a10])C.gets(&a[0});D.gets(b);

42.微型机系统中,对输入设备赶进行管理的基本程序模块(BIOS)存放在()

A.RAM中B.ROM中C.硬盘中D.寄存器中

43.以下关于字符串的叙述中正确的是()。

A.C语言中有字符类型的常量和变量

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

44.若有定义:inta[4][10];,则以下选项中对数组元素a[i][j]引用错误的是______。(0<=i<4,0<=j<10)

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

45.以下函数返回a所指数组中最小的值所在的下标值

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

if(a[i]<a[p]);________;

return(p);}

在横线处应填入的是

A.i=pB.a[p]=a[i]C.p=jD.p=i

46.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

A.控制流B.加工C.数据存储D.源和潭

47.有以下程序main(){ints=0,a=1,n;scanf("%d",&n);do{s+=l;a=a-2;}while(a!=n);printf("%d\n",s);若要使程序的输出值为2,则应该从键盘给n输入不敷出值是

A.-1B.-3C.-5D.0

48.有以下程序

#include<stdlib.h>

structNODE

{intnum;stmctNODE*next;};

main()

{structNODE*p,*q,*r;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->num=10;q->num=20;r->num=30;

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

printf(“%d\n”,p->num+q->next->num);

}

程序运行后的输出结果是

A.10B.20C.30D.40

49.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的______的过程,包括确定数据库在物理设备上的存储结构和存取方法。

A.逻辑结构B.物理结构C.概念结构D.层次结构

50.以下对一维实型数组a的正确定义的是______。

A.floata(10);

B.intn=10;floata[n];

C.intn;floata[n];scanf("%d",&n);

D.#defineSIZE10floata[SIZE];

51.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。

A.charstr[]="string";c=str;

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

C.c=getchar();

D.charstr[]="string";strcpy("C,str")

52.若有以下定义: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");}

53.以下程序的输出结果是()。main(){inta=0,i;for(i=1;i<5;i++){switch(i){casc0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a);}

A.31B.13C.10D.20

54.请读程序:#include<srdio.h>main(){intn[2],i,j,k;{for(i=0,i<2;i++)n[i]=0;k=2;for(i=0;i<k;i++){for(j=0;j<k;j++)n[j]=n[i]+l;print{("%d\n",n[k]);}上面程序片段输出结果是()

A.不确定的值B.3C.23D.1

55.有以下程序

#include<string.h>

main()

{charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′};

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

以下叙述中正确的是

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

56.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是______。mein(){chars[100];intc,i;scanf("%c",&C);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

57.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

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

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

59.有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>,则输出结果是______。

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

60.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

四、选择题(20题)61.

62.有以下程序段:

以下选项中表达式的值为11的是()。

A.++pt一>xB.pt一>xC.*pt一>yD.(pt++)一>x

63.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

64.

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

A.概念设计和逻辑设计

B.模式设计和内模式设计

C.内模式设计和物理设计

D.结构特性设计和行为特性设计

66.以下关于字符串的叙述中正确的是()。

A.C语言中有字符串类型的常量和变量

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

67.

68.以下选项中,能表示逻辑值“假”的是()

A.1B.0.000001C.0D.100.0

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

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

70.(16)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名不属于数据流图合法图符的是_____。

A.控制流

B.加工

C.数据存储

D.源和潭

71.以下选项中不能作为C语言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

72.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

73.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

74.有以下程序

75.下列说法不正确的是()。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

76.(62)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()

A.ABCED

B.DBCEA

C.CDABE

D.DCBEA

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余算符“%”两边的类型相同时才能进行运算

78.

79.以下只有在使用时才为该类型变量分配内存的存储类型说明是()。

A.auto和static

B.auto和register

C.register和static

D.extern和register

80.

有以下程序:

fun(intx,inty){return(x+y);)

main

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

sum=fun((a++,b++,a+b),c++);

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

}

执行后的结果是()。

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

五、程序改错题(1题)81.在主函数中从键盘输入若干个数放人数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数proc()的功能是计算数组元素中值为负数的平均值(不包括0)。例如,数组中元素的值为78、-65、-15、35、-45、0,则程序的运行结果为-41.666667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.编写函数proc(),它的功能是求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

例如,m为100时,函数值应为s=7.416198。

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

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

试题程序:

参考答案

1.C

2.C解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。

一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点),

指数形式的小数;指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。

选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字:选项D中,E后面没有数字。最终可以判断选项C正确。

3.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

4.B

5.A\n数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据在不同位置出现时应保持相同的值。

\n

6.C

7.A函数fun的功能是求数组的n个元素之和。fun(a,5)=15。由于s岫是静态局部变量,所以保持l5不变,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

8.D若G中有一条从Vj到Vi的路径,则图的拓扑序列中顶点Vj在顶点Vi之前。设G(V,E)是一个具有n个顶点的有向图,V中顶点的序列v1,v2,…,vn称为一个拓扑序列,当且仅当该顶点满足下列条件:若在有向图G中,从顶点vi在vj有一条路径,则在拓扑序列中顶点vi必须排在顶点vj之前。

9.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

10.A

11.A

12.A

13.C解析:本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等.本题定义的共用体中成员C所占的内存最多,因此选项B是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项A是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项D也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项C是错误的。

14.B

15.C

16.C

17.B

18.B

19.B

20.D[解析]C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D)选项中的连接符不合法。

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

22.3233

23.序言性序言性解析:注释一般分为序言性注释和功能性注释。

24.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

25.类类

26.概念概念

27.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。

28.①③

29.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

30.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。

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

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

33.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

34.n-1

35.p->dataqp->data\r\nq解析:本题考查的是链表这一数据结构对结构体变量中的数据的引用。链表的特点是结构体变量中有两个域,一个是数据,一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

36.

37.对象对象解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。

38.passwarnpasswarn解析:n++是在执行完其所在的语句后再加1,因此,在执行case的时候,n的值依然为'c',执行case'c'后面的语句,先打印出“pass”;在执行完case'c'后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是passwarn。

39.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

40.DDBBCCDDBBCC解析:c语言对枚举的定义规定定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

41.B解析:函数gets()的调用形式为gets(str_adr);str_adr存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。选项A、选项B、选项C和选项D中只有选项B中gets函数的参数a[0]不能表示数组a的首地址,故选项B不正确。所以,4个选项中选项B符合题意。

42.B

43.D解析:本题考查的重点是C语言中对字符串的理解。选项B是错误的,两个字符串不一定非要字符一样多才可以比较大小;选项C是错误的,不能用关系运算符来对字符串进行大小比较。因为空串只有一个null字符(其值为零),从而,它一定比空格打头的字符串小,所以选项D是正确的。

44.B解析:本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。

45.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

46.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。

47.B解析:本题考核的知识点是do-while循环的简单应用。根据题目要求,最后要使输出的s值为2,在程序中改变s的值语句只有循环体中的s+=1;语句,而初始s的值为0,显然要使s的值变为2,该语句必须执行两次,即do-while循环中的循环体要执行两次,而在do-while中,首先不进行条件而执行do后面的循环体语句,然后在判断while循环条件。所以说不管循环判断条件是否为真s+=1;语句至少执行一次,根据分析,只需要while后面括号的循环判断表达式的值为真成立一次且只能为真一次,将四个选项中的内容依次代入该程序中不难得到只有n=-3刚好使循环判断条件a!=n为真一次.故4个选项中选项B符合题意。

48.D解析:主函数中首先定义了三个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量q->num的值为20,指针变量q->next指向指针变量r,r->num的值为30,所以变量q->next->num的值为30,因此,表达式q->num+q->next->num的值为20+30=50。

49.B解析:根据数据库物理设计的概念可知:为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理结构就是指数据库在物理设备上的存储结构与存取方法。

50.D解析:C语言不可动态定义数组,必须是整型常量,选项D中的SIZE是符号常量,也是常量,值为10,所以可以用符号常量来定义数组的长度。

51.A在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla'字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。

52.C

53.A解析:在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i=1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束。所以,4个选项中A正确。

54.A

55.A解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

56.D解析:根据给定的数据输入格式:123<空格>456<空格>789<回车>,第一个scanf语句中,格式字符为“%c”,只能得到一个字符\'1\',第二个scanf语句中格式字符为“%d”,变量i得到的数值为23,第三个scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组s得到的是'456\\0'。因而正确答案为选项D。

57.C算法具有的5个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。所以说,用C程序实现的算法可以没有输入,但必须要有输出。因此本题答案选C。

58.A解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。

59.A解析:char型数据类型以%d的形式输入时,输入的是ASCII值。65是字符A的ASCII码值,66是字符B的ASCII值。

60.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

61.C

62.A本题考查结构体数组初始化以及结构体变量的引用,题目中定义了一个结构体数组C并初始化,指针pt指向c的第一个元素,那么pt一>x为10,++pt一>x为11,4pt一>Y为1,(pt++)一>x为20,所以答案为A。

63.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b=00000011,转化为十进制后为3,b=b^a=00000010-00000011=00000001,即1。

64.C

65.A

66.D解析:C语言中只有字符串常量而没有字符串变量,故选项A不正确:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const\u3000char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。所以选项C也不正确。空串的长度为0,而以空格打头的字符串的长度至少为\u30001,故选项D正确,本题应该选择D。

67.D

68.C\n本题考查逻辑值假,在程序中非

温馨提示

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

评论

0/150

提交评论