2021-2022年湖北省随州市全国计算机等级考试C语言程序设计_第1页
2021-2022年湖北省随州市全国计算机等级考试C语言程序设计_第2页
2021-2022年湖北省随州市全国计算机等级考试C语言程序设计_第3页
2021-2022年湖北省随州市全国计算机等级考试C语言程序设计_第4页
2021-2022年湖北省随州市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖北省随州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

4.下面程序的输出结果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

5.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

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

D.一个C函数可以单独作为一一个c程序文件存在

6.

7.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

8.当输入为"hello?"时,下面程序的执行结果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

9.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

10.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下选项中不能正确引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

11.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

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

12.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

13.树是结点的集合,它的根结点数目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

14.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,

15.图的深度优先遍历类似于二叉树的_______。

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

16.CPU能够直接访问的存储器是

A.软盘B.硬盘C.RAMD.CD-ROM

17.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}从第一列开始输入数据(<CR>代表…个回车符):3845<CR>,则狴序输出结果为()。

A.77889B.77868C.776810D.7.78866e+007

18.C语言中char类型数据占字节数为()。

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

19.

20.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的运行结果是()。A.852B.963C.741D.875421

二、2.填空题(20题)21.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

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

#defineMAL(a,b)(a>b?a:b)+1

main()

{inti=6,j=8;

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

}

24.表示条件;10<x<100或x<0的C语言表达式是【】。

25.x、y、x均为int型变量,描述"x、y和z中至少有两个为正数"的表达式是______。

26.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

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

29.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

30.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。

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

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

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

}

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

}

33.算法的复杂度主要包括【】复杂度和空间复杂度。

34.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

35.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

36.数据流图的类型有【】和事务型。

37.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

{for(i=1;i<=4;i++)

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

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

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

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

40.下面程序的输出结果是______。

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

三、1.选择题(20题)41.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

42.下列程序的输出结果是_______。fun(){staticintx=5;if(x++>5)printf("%d",x);elseprintf("%d",x++);}main(){fun();fun();}

A.67B.69C.68D.78

43.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。struct1ink{chardata;}node;

A.structlinknext

B.link*next

C.sluctnextlink

D.structlink*next

44.关系数据库的数据及更新操作必须遵循()等完整性规则。

A.实体完整性和参照完整性

B.参照完整性和用户自定义完整性

C.实体完整性和用户自定义完整性

D.实体完整性、参照完整性和用户自定义完整性

45.若有以下定义和语句,且0<=I<10,则对数组元素的错误引用是()

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

int*p,I

p=a;

A.*(a+I)B.a[p-a]C.p+ID.*(&a[I])

46.已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表达式非法,输出零或不确定值

B.因输出项过多,无输出或输出不确定值

C.输出结果为20,141

D.输出结果为20,141,20

47.循环链表的主要优点是______。

A.不再需要头指针了

B.己知某个结点的位置后,能够容易找到它的直接前驱

C.在进行插入、删除运算时,能更好地保证链表不断开

D.从表中任一结点出发都能扫描到整个链表

48.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];

D.intn=10,a[n];

49.下列叙述中正确的是A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

50.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

51.下列选项中不属于算法的特性的是

A.确定性B.可行性C.有输出D.无穷性

52.在设计程序时,应采纳的原则之一是______。

A.程序结构应有助于读者理解B.不限制goto语句的使用C.减少或取消注解行D.程序越短越好

53.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));

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

54.以下叙述中错误的是A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果

55.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示______。A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

56.以下程序的输出结果是()。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=O;i<4;i+2)printf("%d",p[i]);}

A.52B.51C.53D.97

57.关系模型允许定义3类数据约束,下列不属于数据约束的是()。

A.实体完整性约束B.参照完整性约束C.属性完整性约束D.用户自定义的完整性约束

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

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

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

60.语句“printf("a\bhow\'are\'y\\\bou\n");”的输出结果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

四、选择题(20题)61.

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

A.字符型数组中可能存放字符串。

B.可以对字符型数组进行整体输入、输出。

C.可以对整型数组进行整体输入、输出。

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

63.

64.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序的运行结果是

A.9B.编译出错

C.21D.9.0

65.对于一个正常运行的C程序,以下叙述中正确的是()。

A.程序的执行总是从main函数开始,在程序的最后一个函数中结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束.

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

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

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

main

{intx=0.5;charz='a';

printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3

67.

68.

69.一些重要的程序设计语言(inC语言和Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。

A.栈B.堆C.数组D.链表

70.

71.

若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

cb=b;

k=10;

printf("%X,%o,”,ch,ch,k);

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

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

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

C.62,142,k=%d

D.62,142,k=%10

72.(54)在下列几种排序方法中,要求内存量最大的是______。

A.插入排序

B.选择排序

C.快速排序

D.归并排序

73.

74.

75.

76.若有语句:Char*line[5];,以下叙述中正确的是()。

A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

77.以下正确的字符串常量是()。A.A."\\\"

B.'abc'

C.OlympicGames

D.""

78.

79.有以下程序:

程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于10的整数

B.大于3且不等于l0的整数

C.大于3或等于l0的整数

D.小于3的整数

80.第

11

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

五、程序改错题(1题)81.写出下列程序的运行结果。

#include“stdio.h”

Main

{inta[]={1,2,3,-4,5};

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.D

2.B

3.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

4.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第—个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。

5.B[解析]在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。

6.B

7.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。

8.A本题考查getchar函数与putchar函数,通过9etchar函数读入字符,并通过putchar函数将字符逐个输出,当用户输入“?”时停止输出,且c是一个字符变量只占一个字节。

9.D

10.A“*P[3]”是一个字符,也就是str[3][0],不是字符串,选项A错误。“P[3]”“str[2]”和“*p”分别代表了ddd、ccc、aaa。故本题答案为A选项。

11.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。

12.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

13.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。

①有且仅有一个特定的称为根的结点。

②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。

因此,本题的正确答案有且只有一个。

14.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。

15.A

16.C解析:CPU读取和写人数据都是通过内存来完成的。

17.A

18.CChar类型数据占1个字节。

19.D

20.A答疑:[解析]第一次for循环,y的值为9.y%3的值为0.满足条件打印-y,即先减一-后打印,所以打印8;第二次for循环,y的值为7.y%3的值为1.不执行打印语句;第三次for循环,y的值为6.y%3的值为0.满足条件打印--y,即先减-后打印,所以打印5;第四次for循环,y的值为4.不满足条件,不执行打印语句;第五次for循环,y的值为3.满足条件,打印输出2;第六次for循环,y的值为1.不满足条件,不执行打印语句。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循环把n除以10所得的商赋给n。

23.99解析:用i和j替换宏MAL(a,b)小的参数a和b,(a>b?a:b)+1等价于(i>j?i:j)+1。因为6>8为假,则关系表达式i>j?i:j的值就是j的值,j=8,8+1=9,最后输出9。

24.(x>10&&x<100)||x<0

25.((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和z这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

26.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

27.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf('%d\\n',i++);输出1,同时i自加1;执行第二次for循环时,i:3;同样的if语句条件不满足,所以直接执行printf('%d\\n',i++);输出3,同时i自加1执行第三次for循环时,i=5,讧语句条件满足,所以执行printf('%d\\n',i)输出5,然后break语句跳出了for循环。

28.0

29.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

30.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。

\'\\t\'f是转义字符,代表横向跳若干格:'\\'是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。

5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。

31.物理独立性物理独立性解析:数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物理独立性是指数据的物理结构(包括存储结构、存取方式)改变时,不需要修改应用程序。而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。

32.2121解析:本题考查switch语句。首先x=1,执行switch(y),因为y=0,所以执行case0:a++;break;此时a=1执行case2:a++;b++;这时a=2,b=1;最后输出结果是21。

33.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

34.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。

35.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

36.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

37.>=1或>0i>=1或>0\r\ni解析:程序的外层for循环控制输出数据的行数,故第一处填“>=1”或“>0”;内层循环控制每行输出的个数。在内层for循环中,语句x=(j-1)*4+______;用于控制输出方阵中的具体数据,由于这些数据与其所在的行、列(j,i)具有x=(j-1)*4+i的关系,故第二处填i。

38.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串长度的算法是:用一个变量i表示字符串中字符的位置,一开始赋值为0,取出i位置的字符,判断是否为'\\0',若不是则i的值加1,如此循环直到取出的字符是'\\0'为止,此时i的值就是字符串的长度。由此可知,第一个空处应填第i位置上的字符*(str+i);第二个空格应该填字符串的长度i。

39.软件开发

40.

41.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

42.C解析:模块的代码开始运行后,使用static语句声明的变量会—直保持其值,直至该模块复位或重新启动。在第1次调用fun函数时,x的初值为5,if语句的条件不成立,执行elseprintf('%d'x++);语句,输出6,执行后x的值变为7,由于x是静态局部变量,在函数调用结束后,它并不释放,仍保留x=7。在第2次调用fun函数时,if语句的条件成立,执行printf('%d',x);语句,输出8。

43.D解析:在单向链表中,由于每个结点需要存储下—个结点的地址,且下—个结点的数据类型与前—个结点的数据类型完全相同,故应为strectlink*next。

44.D解析:关系模型中包括关系数据结构、关系操作集合和关系完整性。关系完整性即数据完整性,包括实体完整性、参照完整性、用户自定义完整性。

45.C

46.C解析:本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。然后以八进制的形式输出a+'a'-'A'的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。

47.D

48.D答案D

解析:在选项D中,n是一个整型的变量。C语言规定,在一维数组的定义中,其下标只能是常量表达式,不能包含变量。

49.C解析:数据库系统需要操作系统的支持,这一点必不可少,故选项A叙述不正确。选项B错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。选项D也不对,数据库应该具有物理独立性和逻辑独立性,改变其中的一个而不影响另一个。正确答案为选项C。

50.C解析:软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

51.D解析:一个算法必须具有五个特性,即有穷性、确定性、可行性,有输入、有输出.其中有穷性是指算法必须总是在执行完有穷步之后结束,而且每步都在有穷时间内完成。D选项不是算法的特性。

52.A解析:程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。因此选项A是正确答案。程序滥用goto语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。因此选项B、C、D都是错误的。

53.B解析:函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。

54.B(45)B)解析:算法应该具有下列五个特性:

①有穷性:一个算法必须在执行有穷步之后结束。

②确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性。

③动态性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。

④输入:一个算法应该有零个或多个输入。

⑤输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。

55.A解析:让考生对常用的软件结构设计工具要有较深入的了解。常用的软件结构设计工具是结构图(SC-structureChart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。注意:根据结构图设计思想,了解结构图构成的基本形式。

56.C解析:执行for循环,输出p[0]、p[2]的值。P的初值为数组元素x[1][1]的地址,即5的地址,因此p[0]为5,p[2]为3。

57.C详细解答:

关系模型允许3类数据约束,它们是:

实体完整性约束

该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。

参照完整性约束

该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。

用户定义的完整性约束

用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。cC

58.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

59.A解析:在选项A)中,因为!a=0,所以关系表达式!a==1的值为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A)正确。在选项B)中,关系表达式a<b为真,表达式(a<b)&&!c为假,而表达式(a<b)&&!c‖1为真,所以整个表达式的值为真。选项C)中,a&&b的结果为真。在选项D)中,a‖(b+b)&&(c-a)的结果为真。

60.C解析:“\\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\\b'’格式符前面的字母不能输出;“\\'”格式符表示输出单引号字符;“\\\\”格式符表示输出反斜线字符。

61.B

62.C

63.C

64.A本题主要考查函数的嵌套调用。在本题中,首先定义了函数fun,该函数的返回类型为浮点型,函数带有两个整型形参,函数的作用不难看出是返回两个形参的和。

在主函数中,定义了三个整型变量a,b,c,并分别赋初值为2,5,8,然后嵌套调用fun函数。输出语句fun((int)fun(a+c,b),a-c)首先调用嵌套的fun函数,即(int)fun(a+c,b),按照前面对fun函数的介绍,它应该返回的值为a+c+b=15,由于函数在前面加了强制数据类型转换,将本来的返回结果浮点型转换为了整型,并作为函数的参数,与函数定义的参数类型匹配,程序编译不报错,然后执行fun函数,它返回的结果为15+a-c=9,此时的结果应该是浮点型,即为9.0,但输出语句的输出格式是“%3.0f”,说明无须输出小数部分,因此,最终的输出结果是9。

65.C任何一个C语言程序的执行都是从主函数main开始,至主函数main结束。故本题答案为C选项。

66.B(x&1)&&(z<'2')=(0.5&1)&&('a'<'z')=1&&1=1,故选择B选项。

67.C

68.B

69.A在允许过程的递归调用的程序设计语言中,由于C语言中栈的特性为先进后出,因此用栈来实现递归调用中的存储分配。

70.D

71.C

\n第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

\n

72.D

73.D

74.A

75.D

76.A解析:理解复杂定义要掌握两点:一、右结合原则.本题中的定义char*line[5];等价于char*(line[5]);;二、自外向内分解成typedef语句。char*(line[5]);等价于typedefchar*A;Aline[5];其中A被typedef定义成字符指针的别名,然后line被定义成A的一维数组,即字符指针的一维数组。再来看看行指针的定义char(*line)[5];它应该被分解成typedefcharB[5];B*line;其中B被定义成包含5个元素的一维字符数组,然后line被定义成指向B的指针,即指向包含5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择A。

77.D选项A中“\\\”为转义字符,故选项A错误,选项B和C显然不是字符串常量。选项D是一个字符串常量,称为空串。

78.A

79.Bif-else控制结构中,else总是与最近的未配对的if匹配。本题的执行过程为:如果输入整数小于3则不进行任何操作,否则判断该整数是否不等于l0,若为真则进行输出。因此程序输出的数据为大于3且不等于l0的整数。

80.A本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1='China',如果想把“China”这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(str1),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

81.

82.voidfun(char*s,chart[]){ inti,j=0,n; n=strlen(s);/*遍历整个数组*/ for(i=0;i<=""p="">/*如果元素的ASCII值为偶数*/ if(s[i]%2==0) {/*将元素保存到t中*/ t[j]=s[i]; j++; } t[j]=-‘\0’;}要删除ASCII值为奇数的字符,也就是要保留ASCII值为偶数的字符,将ASCII值为偶数的字符保存到新字符串。所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组。2021-2022年湖北省随州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

4.下面程序的输出结果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

5.下列叙述中错误的是()。A.程序可以由多个程序文件组成

B.一个C语言程序只能实现一种算法

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

D.一个C函数可以单独作为一一个c程序文件存在

6.

7.下列标识符不是关键字的是()。

A.breakB.charC.SwithchD.return

8.当输入为"hello?"时,下面程序的执行结果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

9.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

10.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下选项中不能正确引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

11.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

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

12.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

13.树是结点的集合,它的根结点数目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

14.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,

15.图的深度优先遍历类似于二叉树的_______。

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

16.CPU能够直接访问的存储器是

A.软盘B.硬盘C.RAMD.CD-ROM

17.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}从第一列开始输入数据(<CR>代表…个回车符):3845<CR>,则狴序输出结果为()。

A.77889B.77868C.776810D.7.78866e+007

18.C语言中char类型数据占字节数为()。

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

19.

20.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的运行结果是()。A.852B.963C.741D.875421

二、2.填空题(20题)21.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

22.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

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

#defineMAL(a,b)(a>b?a:b)+1

main()

{inti=6,j=8;

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

}

24.表示条件;10<x<100或x<0的C语言表达式是【】。

25.x、y、x均为int型变量,描述"x、y和z中至少有两个为正数"的表达式是______。

26.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

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

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

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

29.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

30.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。

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

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

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

}

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

}

33.算法的复杂度主要包括【】复杂度和空间复杂度。

34.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

35.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

36.数据流图的类型有【】和事务型。

37.以下程序的功能是输出如下形式的方阵:

13141516

9101112

5678

1234

请填空。

#include<stdio.h>

main()

{inti,j,x;

for(j=4;j【】;j--)

{for(i=1;i<=4;i++)

[x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

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

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

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

40.下面程序的输出结果是______。

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

三、1.选择题(20题)41.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

42.下列程序的输出结果是_______。fun(){staticintx=5;if(x++>5)printf("%d",x);elseprintf("%d",x++);}main(){fun();fun();}

A.67B.69C.68D.78

43.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。struct1ink{chardata;}node;

A.structlinknext

B.link*next

C.sluctnextlink

D.structlink*next

44.关系数据库的数据及更新操作必须遵循()等完整性规则。

A.实体完整性和参照完整性

B.参照完整性和用户自定义完整性

C.实体完整性和用户自定义完整性

D.实体完整性、参照完整性和用户自定义完整性

45.若有以下定义和语句,且0<=I<10,则对数组元素的错误引用是()

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

int*p,I

p=a;

A.*(a+I)B.a[p-a]C.p+ID.*(&a[I])

46.已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表达式非法,输出零或不确定值

B.因输出项过多,无输出或输出不确定值

C.输出结果为20,141

D.输出结果为20,141,20

47.循环链表的主要优点是______。

A.不再需要头指针了

B.己知某个结点的位置后,能够容易找到它的直接前驱

C.在进行插入、删除运算时,能更好地保证链表不断开

D.从表中任一结点出发都能扫描到整个链表

48.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A.#defineN10inta[N];B.#definen5inta[2*n];C.inta[5+5];

D.intn=10,a[n];

49.下列叙述中正确的是A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

50.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

51.下列选项中不属于算法的特性的是

A.确定性B.可行性C.有输出D.无穷性

52.在设计程序时,应采纳的原则之一是______。

A.程序结构应有助于读者理解B.不限制goto语句的使用C.减少或取消注解行D.程序越短越好

53.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));

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

54.以下叙述中错误的是A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果

55.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示______。A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

56.以下程序的输出结果是()。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=O;i<4;i+2)printf("%d",p[i]);}

A.52B.51C.53D.97

57.关系模型允许定义3类数据约束,下列不属于数据约束的是()。

A.实体完整性约束B.参照完整性约束C.属性完整性约束D.用户自定义的完整性约束

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

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

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

60.语句“printf("a\bhow\'are\'y\\\bou\n");”的输出结果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

四、选择题(20题)61.

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

A.字符型数组中可能存放字符串。

B.可以对字符型数组进行整体输入、输出。

C.可以对整型数组进行整体输入、输出。

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

63.

64.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序的运行结果是

A.9B.编译出错

C.21D.9.0

65.对于一个正常运行的C程序,以下叙述中正确的是()。

A.程序的执行总是从main函数开始,在程序的最后一个函数中结束

B.程序的执行总是从程序的第一个函数开始,在main函数结束.

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

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

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

main

{intx=0.5;charz='a';

printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3

67.

68.

69.一些重要的程序设计语言(inC语言和Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。

A.栈B.堆C.数组D.链表

70.

71.

若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

cb=b;

k=10;

printf("%X,%o,”,ch,ch,k);

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

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

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

C.62,142,k=%d

D.62,142,k=%10

72.(54)在下列几种排序方法中,要求内存量最大的是______。

A.插入排序

B.选择排序

C.快速排序

D.归并排序

73.

74.

75.

76.若有语句:Char*line[5];,以下叙述中正确的是()。

A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

77.以下正确的字符串常量是()。A.A."\\\"

B.'abc'

C.OlympicGames

D.""

78.

79.有以下程序:

程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于10的整数

B.大于3且不等于l0的整数

C.大于3或等于l0的整数

D.小于3的整数

80.第

11

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

五、程序改错题(1题)81.写出下列程序的运行结果。

#include“stdio.h”

Main

{inta[]={1,2,3,-4,5};

intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);

printf(“%d%d%d”,*p,m,n);}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.D

2.B

3.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

4.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第—个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。

5.B[解析]在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。

6.B

7.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。

8.A本题考查getchar函数与putchar函数,通过9etchar函数读入字符,并通过putchar函数将字符逐个输出,当用户输入“?”时停止输出,且c是一个字符变量只占一个字节。

9.D

10.A“*P[3]”是一个字符,也就是str[3][0],不是字符串,选项A错误。“P[3]”“str[2]”和“*p”分别代表了ddd、ccc、aaa。故本题答案为A选项。

11.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。

12.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

13.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。

①有且仅有一个特定的称为根的结点。

②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。

因此,本题的正确答案有且只有一个。

14.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。

15.A

16.C解析:CPU读取和写人数据都是通过内存来完成的。

17.A

18.CChar类型数据占1个字节。

19.D

20.A答疑:[解析]第一次for循环,y的值为9.y%3的值为0.满足条件打印-y,即先减一-后打印,所以打印8;第二次for循环,y的值为7.y%3的值为1.不执行打印语句;第三次for循环,y的值为6.y%3的值为0.满足条件打印--y,即先减-后打印,所以打印5;第四次for循环,y的值为4.不满足条件,不执行打印语句;第五次for循环,y的值为3.满足条件,打印输出2;第六次for循环,y的值为1.不满足条件,不执行打印语句。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循环把n除以10所得的商赋给n。

23.99解析:用i和j替换宏MAL(a,b)小的参数a和b,(a>b?a:b)+1等价于(i>j?i:j)+1。因为6>8为假,则关系表达式i>j?i:j的值就是j的值,j=8,8+1=9,最后输出9。

24.(x>10&&x<

温馨提示

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

评论

0/150

提交评论