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

下载本文档

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

文档简介

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

一、单选题(20题)1.下列SQL语句中,用于修改表结构的命令式是A.A.Alter

B.Create

C.Update

D.Insert

2.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

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

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

4.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A.3344B.2050C.3040D.0304

5.一个栈的入栈序列是a,b,c,d,e,f,则栈的不可能的输出序列为()

A.fedcbB.defbcC.defcbD.abcdef

6.

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

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

8.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。

A.77B.88C.810D.1010

9.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

A.线性结构B.树形结构C.图状结构D.集合

10.下面程序的输出结果是()。

#include<stdio.h>

main()

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

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

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

A.将函数内的局部变量说明为static存储类是为了限制其他编译单位的引用

B.—个变量作用域的开始位置完全取决于变量定义语句的位置

C.全局变量可以在函数以外的任何部位进行定义

D.局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运算结果保存至下一次调用

12.设有以下语句

charchl,ch2;scanf("%c%C",&chl,&ch2);

若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔

B.A和B之间不能有任何间隔符

C.A和B之间可以用回车间隔

D.A和B之间用空格间隔

13.设有定义“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若变量均已正确赋初值,则下列语句中错误的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

14.栈通常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

15.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3

16.有以下程序:voidfunl(char*p)程序执行后的输出结果是()A.ProhsbnB.PrphsbnC.ProgsbnD.Program

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

A.C语言只接受十进制的数

B.C语言只接受二进制、八进制、十六进制的数

C.C语言只接受二进制、十进制、十六进制的数

D.C语言只接受八进制、十进制、十六进制的数

18.以下合法的字符型常量是A.B.C.D.

19.C语言中运算对象必须是整型的运算符是()。

A.%=B./C.=D.<=

20.有下列二叉树.对此二叉树前序遍历的结果为()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

二、2.填空题(20题)21.类是一个支持集成的抽象数据类型,而对象是类的【】。

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

23.计算机中网络通信协议IP是【】。

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

25.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。

26.阅读下面程序,则程序的执行结果为【】。

#include"stdio.h"

main()

{inta=30,b=20,z;

z=fun(a+b,a-b);

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

fun(inta,intb)

{intz;

z=a/b;

returnz;}

27.若有定义:inta=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

28.有以下程序:

#include<stdio.h>

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

printf("%d%d\n",x,Y);

}

执行后的输出结果【】。

29.一棵二叉树第6层(根结点为第一层)的结点最多为______个。

30.以下程序的运行结果是:【】。

#include<stdio.h>

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

31.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

32.若x和n均是int型变量,且x=12,n=5,则执行y=x%=(n%=2)表达式后y的值为()。

33.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

34.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,称为【】。

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

36.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

37.结构化程序设计的3种基本结构分别是顺序、选择和______。

38.有以下程序,若运行时从键盘输入:18,11<回车>,则程序的输出结果是【】。

main()

{inta,b;

printf("Entera,b:");scanf("%d,%d",&a,&b);

while(a!=b)

{while(a>b)a-=b;

while(b>a)b-=a;

}

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

}

39.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

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

main()

{

inta=1,b=2;

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

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

}

三、1.选择题(20题)41.s1和s2已正确定义并分别指向两个字符串,若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,s1)>0)S;

D.if(strcmp(s1,82)>0)S;

42.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;

A.example.x=10

B.examplev2.x=10

C.structv2;v2.x=10

D.structexamplev2={10};

43.有以下程序:main(){inti=10,j=1;printf("%d,%d\n",i--,++j);}执行后输出结果是()。

A.9,2B.10,2C.9,1D.10,1

44.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

45.下述对C语言字符数组的描述中错误的是

A.字符数组的下标从0开始

B.字符数组中的字符串可以进行整体输入/输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D.字符数组可以存放字符串

46.若有定义intb[8],*p=b;则p+6表示()。

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

47.结构化程序设计的主要特点是______。

A.模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控制结构只有一个入口和一个出口

48.以下叙述中正确的是()。

A.C语言的源程序不必通过编译就可以直接运行

B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C.C语言程序经编译形成的二进制代码可以直接运行

D.C语言中的函数不可以单独进行编译

49.软件生命周期中花费时间最多的阶段是()

A.详细设计B.软件编码C.软件测试D.软件维护

50.有以下定义语句

doublea,b;intw;longc;

若各变量已正确赋值,则下列选项中正确的表达式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

51.有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)‖(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

52.有以下程序:voidf(intv,intw){intt;t=v;V=W;W=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d<%d\n",x,y,Z);}执行后输出结果是()。

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

53.有以下程序:intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx)returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序运行后的输出结果是()。

A.1268B.8621C.8162D.8612

54.语句:printf("%d\n",12&012);的输出结果是()。

A.12B.8C.6D.12

55.有定义语句:ihtb;charc[10];,则正确的输入语句是

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

56.若进栈序列为1、2、3、4、5,并且在它们进栈的过程中可以进行出栈操作,那么不可能是出栈序列的是______。

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

57.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

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

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

59.有以下程序:#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数组中都没有字符串结束符,故长度都不能确定

60.按条件f对关系R进行选择,其关系代数表达式为______。

A.R∞R

B.

C.бf(R)

D.Пf(R)

四、选择题(20题)61.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

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

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

A.自然连接B.交C.投影D.并

63.(31)算法一般都可以用哪几种控制结构组合而成()

A.循环、分支、递归

B.顺序、循环、嵌套

C.循环、递归、选择

D.顺序、选择、循环

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

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

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

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

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

65.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

66.在下列选项中,没有构成死循环的是

67.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2+b);‘’

}

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

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

68.

69.

若输入“abcdef”“abdef”,下述程序的输出结果为()。

#include<stdio.h>

#include<string.h>

main

{intn;

chars1[20],s2[20],*p1,*p2;

scanf("%s",s1);

scanf("%S",s2);

p1=s1;

p2=s2;

n=strcmp(p1,p2);

printf("Vood\n",n);

}

A.-1B.0C."abcdef"D."abdef"

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

intx=10,y=10;

printf(“%d%d\n”,x--,--y);

A.1010B.99C.910D.109

71.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是

72.设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是

A.10101001B.10101000C.11111101D.01010101

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

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

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

74.

75.以下程序的输出结果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

76.

77.

78.设有程序段:intk=12:while(k=1)k=k一1;则下列描述中正确的是()。A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

79.下列对于软件测试的描述正确的是()。

A.软件测试的主要目的是发现程序中的错误

B.软件测试的目的是证明程序是否正确

C.软件测试的目的是使程序运行结果正确

D.软件测试是证明软件中没有错误

80.下列选项中,能够满足“只要字符串sl等于字符串s2,则执行sT”要求的是()。程序执行后的输出结果是()。

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

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。

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

#include<;stdi0.h>;

六、程序设计题(1题)82.实现字符串拷贝的函数strcpy为()。

参考答案

1.A本题主要考查SQL中一些基本的命令。SQL常用的语句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。

在SQL语言中使用率最高的是Select,这个命令的作用是从表中查找出满足条件的记录。

Insert命令的作用是对数据表进行插入操作。

Update命令的作用是对数据表进行更新操作。

Delete命令的作用是对数据表中的数据进行删除操作。

Create命令的作用是创建数据表。

Alter命令的作用是修改表的结构。

Drop命令的作用是用来删除表,它与Delete的区别是进行Drop操作后,数据表不存在了,而进行Delete操作后,数据表还在,只是数据被删除了。

2.C

3.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

4.C本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行casel,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执行casel,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行casel,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3040。

5.B

6.A

7.B

8.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。

9.A

10.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3

11.A将函数内的局部变量说明为static存储类,第1次调用该函数时才对其初始化,后续调用时使用上一次调用结束后的值;函数体内的局部变量无论是否声明为stat\x1fic,外部编译单位都不能引用,选项A错误,其他选项正确。本题答案为A选项。

12.B\nscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf('%c%c',&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。

\n

13.Cmark为结构体中的数组,不能直接赋值,所以C选项错误。故本题答案为C选项。

14.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。

15.A虽为嵌套的for循环,但“m=m%j”只执行1次,即当i=3时,内层循环条件成立,m=55%3=1,故选A。

16.A本题中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为hsbn,前面不变。

17.DC语言中,整型常量可以用十进制、八进制和十六进制表示。故本题答案为D选项。

18.A解析:C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用以一个“\\”开头的字符序列来表示字符常量。其中,形式“\\ddd”表示1到3位8进制数所代表的字符;形式“\\xhh”表示1到2位16进制数所代表的字符。在本题中‘\\x13’表示回车符,是一个字符常量;‘\\081’用\u30008进制数所代表的字符,但形式不正确,因为8进制数所表示的字符中不会出现数字“8”;‘65’不是一个字符,而是一个+进制数字;“\\n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。

19.A解析:C++语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含%运算,它的运算对象也必须是整型。

20.D

\n所谓二叉树的前序遍历是指先访问根结点,访问左子树,最后访问右子树,本题中序为DYBEAFCZX,后序为YDEBFZXCA。

\n

21.实例将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。

22.77解析:在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k=4+2=6,再回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。

23.网际协议网际协议

24.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

25.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。

26.55解析:函数调用的时候,函数名字必须与所调用的函数名完全一致,形参与实参类型要一致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型的函数放到主函数后面时,可以不需要事先说明就调用这个函数。return既可以返回一个普通常量,也可以返回一个指针变量。

27.22解析:本题考查的是基本赋值运算符和赋值表达式。表达式c=(b-=a-4)等价于c=(b=b-a+4)等价于c=b=2;表达式a(c%2+(b-1))等价于a=1+2-1=2;因此最后a的值为2。

28.8484解析:f函数中变量x传的是变量的地址,而变量y是传的值,调用函数f后,虽然f函数中的。x变为8,y值也变了,但main函数中的y未变,仍然为4。

29.3232解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。

30.efghefgh解析:函数*ss的作用是使字符串指针往后移strlen(s)/2个位置。形参指针a指向字符串'abcdefeh',调用函数*ss后,指针指向e,所以输出为efgh。

31.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

32.00解析:n%=2等价于n=n%2,结果为1:x%=1等价于x=x%1,结果为0。

33.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必需判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应flag==0或*(s-1)=='';最后一个空格需填写的是返回的单词的个数,即num。

34.物理独立性物理独立性解析:逻辑独立性是指,由于数据的局部逻辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其局部逻辑结构叮以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。物理独立性是指,由于数据的存储结构与逻辑结构之间山系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改。

35.类类

36.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。

37.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。

38.1111解析:首先,程序通过scanf()函数将18和11分别读入到变量a和b中。然后,因为a!=b为真,进入外层while循环。此时a>b为真,执行a-=b;,a的值变为18-11=7:接下来b>a也为真,执行b-=a;,b的值变为11-7=4。此时a!=b还是为真,第2次进入外层循环。a>b为真,执行a-=b;,a的值变为7-4=3。b>a为真,执行b-=a;,b的值变为4-3=1接下来a!=b为真第3次进入外层循环。a>b为真,执行a-=b,a的值变为3-1=2。b>a为假,不执行b-=a;;然后第4次进入外层循环,a>b为真,执行a-=b,a的值变为2-1=1。b>a为假,不执行b-=a;此时a和b均为1了,a!=b条件为假,外层循环结束。故本题输出的结果是11。

39.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

40.212,1解析:本题中,执行a=a+b时,a=1,b=2,a=1+2=3,b=a-b时,a=3,b=2,b=3-2=1;a=a-b时,a=3,b=1,a=3-1=2;因此,本题的输出是2,1

41.D解析:在C语言中字符串的比较用stremp()函数,该函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若小于返回值小于0,相等返回值为0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符中,女B果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本题中要求当sl所指字符串大于s2所指串时,执行语句s,因此应该为stremp(s1,s2)>0或者strcmp(s2,s1)<0。

42.D解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构钵类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

43.B解析:++、--运算符在变量之前是先使变量的值加1或减1,然后再使用变量的值;如果在变量之后则先使用变量之前的值,再把变量的值加1或减1。显然,程序中表达式i--的值为10,++j的值为2,所以最后输出的值为10和2,故B选项为所选。

44.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。

45.C解析:在C语言中,通过使用库函数允许对字符数组进行整体输入/输出。C语言不允许通过赋值运算符对字符数组整体进行赋值,对字符串使用符号:只能在说明字符数组并进行初始化的时候进行。字符串结束标志为'\\0',计算字符串的实际长度时。不计入串长。

46.B解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将p+6指的是将指针向后移动了6个存储单元,指向b[6],存放的是b[6]的地址。

47.D解析:按照结构化设计方法设计的程序具有以下特点:(1)程序易于理解、使用和维护,程序员采用结构化编程方法,便于控制、降低程序的复杂性,因此容易编写程序,便于验证程序的正确性。结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以确保程序的正确性。程序容易阅读并被人理解,便于用户使用和维护。(2)提高了编程工作的效率,降低了软件开发成本。由于结构化编程方法能够把错误控制到最低限度,因此能够减少调试和查错时间。结构化是由一些为数不多的基本结构模块组成,这些模块甚至可以由机器自动生成,从而极大地减轻了编程工作量。(3)结构化程序设计选用的每个控制结构只允许有一个入口和一个出口。

48.B

49.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个所段。本题中,详细设计、软什编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性.降低维护的代价。

50.C解析:选项A不是合法的赋值语句,将最右边的第一个赋值表达式加括号即为a=a+(b=b++)才正确,故选项A不正确。选项B中运算符%的对象必须是整型,而在选项B中(int)a+b为double型,故选项B不正确。a,b都为double型,应当避免使用a==b这样的关系表达式,因为通常存放在内存中的实型数据是有误差的,因此不可能精确相等,这将导致关系表达式a==b总为0。所以,4个选项中选项C符合题意。

51.C解析:在“||”运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中,“||”左边的表达式k=(n=b>A),“2>1”为真,所以n被赋值为1,接着k被赋值1,即“||”运算符左边表达式为真,此时不再计算“||”右边的表达式,因此m的值没有被改变仍为0,最后的输出结果1,0。

52.C解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,。函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了3个变量x、y和z。然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x、y、z传给形参v和w,以后行参和实参再无联系,故通过if语句调用f()函数后,x、y和z的值并没有改变。因此最后输出的x、y和z的值为1、3和2,所以,4个选项中选项C符合题意。

53.C解析:函数f()有3个形式参数f1、f2和x,其中f1、f2是指向函数的指针变量。在main()函数中执行了函数调用“f(fa,fb,2)”,从而使f()的形式参数f1指向了fa,形式参数f2指向了fb,把实参2传给了行参变量x。函数f()中的return语句中的相当于“fb(2)-fa(2)”(fb(2)的返回值为2*2*2=8,fa(2)返回值为2*2=4)即(8-4),值为4。函数f()执行后把返回值4赋给了i,输出i的值是4。所以4个选项中C正确。

54.B解析:位运算12&012即1100&1010,结果是1000,转化成十进制数是8,所以,输出结果是8。

55.B解析:定义b为整型数,c为字符数组,所以在输入语句的地址表列中,要在b前加上取址符“&”,而c就是字符数组的首地址,所以不用加上取址符&。

56.D

57.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

58.A解析:本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。

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

60.C解析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成;如果关系的逻辑条件为f,则R满足f的选择运算可以写成бf(R)。

61.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。

62.A解析:结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性地转向程序的任一处,在传统流程图中,就是用上节我们提到的“很随意”的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。

63.D

64.C解析:在C语言中,除字符数组外,一个数组不能通过数组名对数姐进行整体引用,因此选项A是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项B是对的。C语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项C是错误的。C语官规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项D也是正确的。所以,4个选项中选项C符合题意。

65.C答案C的意思是*P指向数组的第一个值。

66.D本题是考查死循环的含义。在编程中,一个无法靠自身的控制终止的循环称为“死循环”。选项A给出的函数主体是while语句,该语句的循环结束条件是i>100,初始i=100,执行完i=i%100+1语句后,i的值变为1,由于不满足循环结束条件,循环执行while,执行完第二次i=i%100+1语句后,i的值变为2,一直循环执行下去,i的值最大只能达到100,永远不会达到结束条件,故选项A是死循环。选项B是一个for循环,它的一般形式为:for(<初始化>;<条件表达式>;<增量>)语句;for循环中的“初始化”、“条件表达式”和“增量”都是选择项,即可以缺省,但“;”不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其他处理时便成为死循环。省略了增量,则不对循环控制变量进行操作。选项C是一个do-while语句,先执行do语句,然后用while后面的语句进行判断。初始时,k=10000,执行完do语句后,k=10001,满足while里的判断语句k>10000,继续执行do-while,因为k的值一直是增大的,故该循环将一直运行下去。D选项是一个while循环,该循环结束的条件是s<=0,该循环初始时s的值为36,每执行一次while循环,将执行--s操作,当s=0时,循环结束。

67.D本题输出两个值,第一个printf语句输出b的值b=a+b=1。第二个printf语句输出了a的值,a=2b,此时b的值为1,所以a的值为2。

68.D

69.D

\n本题考查字符串比较函数strcmp(s1,s2),若s1>s2,则返回1;若s1=s2,则返回0;若s1<s2,则返回-1。字符串依次比较的是它们字符的ASCIl码值。

\n

70.D

71.A在函数调用前,需要定义或声明,A)选项错误。

72.D本题主要考查位运算。“按位取反”运算(~)是单目运算符,运算对象应置于运算符的右边,其功能是把运算对象的各二进制位求反;“按位异或”运算(^)是双目运算符,其功能是把参与运算的两数各对应的二进制位相异或。该操作通常用来使一个数中某些指定位翻转,而另一些位保持不变。

本题中,首先定义一个字符型变量x,并给出了该变量的二进制表示形式,然后求表达式(2+x)^(~3)的结果值,在该表达式中,首先运算(~3)和(2+x)部分,3转换为二进制数的表示为00000011,对它进行取反运算的结果为11111100,2转换为二进制数的表示形式为00000010,它与x的值10100111进行加运算后的结果为10101001(进行这个计算时需要注意:由于变量x是一个符号类型,无负值)。然后对10101001与11111100进行“按位异或”运算,得到结果01010101。因此本题的正确答案选D。

73.B解析:专门的关系运算包括:选择、投影和连接。1、选择:从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。2、投影:从关系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。3、连接:连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。选择和投影运算的操作对象只是一个表。相当于对一个二维表进行切割。连接运算需要两个表操作为操作对象。由图可知关系R通过运算得到关系S。关系S与关系R相比,记录的条数没有发生变化,属性的个数发生了变化。因此所使用的运算应该是投影。选项C插入运算会增加记录的条数。所以选项B是正确的。

74.D

75.C解析:观察程序段可知,对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。本题中c=f(a)/f(b)用#definef(x)x*x代替得c=f(6)/f(2),即c=6*6/2*2,结果为36。

76.A

77.D

78.C本题考查while,while循环表达式k=1是个赋值表达式而不是逻辑表达式,k的初值为12不符合循环条件,所以循环体一次也不执行。

79.A\n软件测试的目标是发现软件中的错误。

\n

80.A比较两个字符串的大小可以用strCmp函数,选项A)正确。

81.

(1)void(long}t)

(2)sl=sl·10;

【考点分析】

函数定义,指针型变量;数值n和其各个位如何表示。

【解题思路】

(1)主函数中调用函数的参数为地址,因此函数fun的形式参数应为指针类型。

(2)重新组合一个数,从个位开始,然后十位,依次类推,因此每增加—位数,原数值需乘以10,即sl=sl}10;。

82.

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

一、单选题(20题)1.下列SQL语句中,用于修改表结构的命令式是A.A.Alter

B.Create

C.Update

D.Insert

2.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

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

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

4.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A.3344B.2050C.3040D.0304

5.一个栈的入栈序列是a,b,c,d,e,f,则栈的不可能的输出序列为()

A.fedcbB.defbcC.defcbD.abcdef

6.

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

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

8.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。

A.77B.88C.810D.1010

9.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

A.线性结构B.树形结构C.图状结构D.集合

10.下面程序的输出结果是()。

#include<stdio.h>

main()

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

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

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

A.将函数内的局部变量说明为static存储类是为了限制其他编译单位的引用

B.—个变量作用域的开始位置完全取决于变量定义语句的位置

C.全局变量可以在函数以外的任何部位进行定义

D.局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运算结果保存至下一次调用

12.设有以下语句

charchl,ch2;scanf("%c%C",&chl,&ch2);

若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔

B.A和B之间不能有任何间隔符

C.A和B之间可以用回车间隔

D.A和B之间用空格间隔

13.设有定义“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若变量均已正确赋初值,则下列语句中错误的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

14.栈通常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

15.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3

16.有以下程序:voidfunl(char*p)程序执行后的输出结果是()A.ProhsbnB.PrphsbnC.ProgsbnD.Program

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

A.C语言只接受十进制的数

B.C语言只接受二进制、八进制、十六进制的数

C.C语言只接受二进制、十进制、十六进制的数

D.C语言只接受八进制、十进制、十六进制的数

18.以下合法的字符型常量是A.B.C.D.

19.C语言中运算对象必须是整型的运算符是()。

A.%=B./C.=D.<=

20.有下列二叉树.对此二叉树前序遍历的结果为()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

二、2.填空题(20题)21.类是一个支持集成的抽象数据类型,而对象是类的【】。

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

23.计算机中网络通信协议IP是【】。

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

25.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。

26.阅读下面程序,则程序的执行结果为【】。

#include"stdio.h"

main()

{inta=30,b=20,z;

z=fun(a+b,a-b);

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

fun(inta,intb)

{intz;

z=a/b;

returnz;}

27.若有定义:inta=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

28.有以下程序:

#include<stdio.h>

voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

printf("%d%d\n",x,Y);

}

执行后的输出结果【】。

29.一棵二叉树第6层(根结点为第一层)的结点最多为______个。

30.以下程序的运行结果是:【】。

#include<stdio.h>

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

31.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

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

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

}

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

32.若x和n均是int型变量,且x=12,n=5,则执行y=x%=(n%=2)表达式后y的值为()。

33.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

34.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,称为【】。

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

36.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

37.结构化程序设计的3种基本结构分别是顺序、选择和______。

38.有以下程序,若运行时从键盘输入:18,11<回车>,则程序的输出结果是【】。

main()

{inta,b;

printf("Entera,b:");scanf("%d,%d",&a,&b);

while(a!=b)

{while(a>b)a-=b;

while(b>a)b-=a;

}

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

}

39.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

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

main()

{

inta=1,b=2;

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

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

}

三、1.选择题(20题)41.s1和s2已正确定义并分别指向两个字符串,若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,s1)>0)S;

D.if(strcmp(s1,82)>0)S;

42.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;

A.example.x=10

B.examplev2.x=10

C.structv2;v2.x=10

D.structexamplev2={10};

43.有以下程序:main(){inti=10,j=1;printf("%d,%d\n",i--,++j);}执行后输出结果是()。

A.9,2B.10,2C.9,1D.10,1

44.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

45.下述对C语言字符数组的描述中错误的是

A.字符数组的下标从0开始

B.字符数组中的字符串可以进行整体输入/输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D.字符数组可以存放字符串

46.若有定义intb[8],*p=b;则p+6表示()。

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

47.结构化程序设计的主要特点是______。

A.模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控制结构只有一个入口和一个出口

48.以下叙述中正确的是()。

A.C语言的源程序不必通过编译就可以直接运行

B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C.C语言程序经编译形成的二进制代码可以直接运行

D.C语言中的函数不可以单独进行编译

49.软件生命周期中花费时间最多的阶段是()

A.详细设计B.软件编码C.软件测试D.软件维护

50.有以下定义语句

doublea,b;intw;longc;

若各变量已正确赋值,则下列选项中正确的表达式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

51.有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)‖(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

52.有以下程序:voidf(intv,intw){intt;t=v;V=W;W=t;}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d<%d\n",x,y,Z);}执行后输出结果是()。

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

53.有以下程序:intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx)returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序运行后的输出结果是()。

A.1268B.8621C.8162D.8612

54.语句:printf("%d\n",12&012);的输出结果是()。

A.12B.8C.6D.12

55.有定义语句:ihtb;charc[10];,则正确的输入语句是

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

56.若进栈序列为1、2、3、4、5,并且在它们进栈的过程中可以进行出栈操作,那么不可能是出栈序列的是______。

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

57.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

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

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

59.有以下程序:#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数组中都没有字符串结束符,故长度都不能确定

60.按条件f对关系R进行选择,其关系代数表达式为______。

A.R∞R

B.

C.бf(R)

D.Пf(R)

四、选择题(20题)61.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

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

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

A.自然连接B.交C.投影D.并

63.(31)算法一般都可以用哪几种控制结构组合而成()

A.循环、分支、递归

B.顺序、循环、嵌套

C.循环、递归、选择

D.顺序、选择、循环

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

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

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

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

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

65.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

66.在下列选项中,没有构成死循环的是

67.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2+b);‘’

}

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

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

68.

69.

若输入“abcdef”“abdef”,下述程序的输出结果为()。

#include<stdio.h>

#include<string.h>

main

{intn;

chars1[20],s2[20],*p1,*p2;

scanf("%s",s1);

scanf("%S",s2);

p1=s1;

p2=s2;

n=strcmp(p1,p2);

printf("Vood\n",n);

}

A.-1B.0C."abcdef"D."abdef"

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

intx=10,y=10;

printf(“%d%d\n”,x--,--y);

温馨提示

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

最新文档

评论

0/150

提交评论