版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年广东省阳江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若声明一个浮点数数组如下:froataverage[]=newfloat[30];假设该数组的内存起始位置为200,average[15]的内存地址是()。A.A.214B.215C.260D.256
2.有以下程序(注:字符a的ASCIl码值为97)#include<stdio.h>main(){char*s={"abc")do{printf("%d",*S%10");++S;}while(*s);}陧序运行后的输出结果是()。A.abcB.789C.7890D.979899
3.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
4.有以下程序:#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
5.若有以下程序段,w和k都是整型变量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇则不能与上面程序段等价的循环语句是()。A.for(w=k;w!=0;w--)printf("*");
B.for(w=k;w;--w)printf("*");
C.w=k;while(w--!=0)printf("*");
D.w=k:w++;do{w--;printf("*");}while(w!=0);
6.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
7.以下叙述中正确的是_____。A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
8.设有二维数组A7×8,每个数据元素占8个字节存储单元,顺序存放,A第一个元素A0,0的存储地址为1000,按行优先存放时,元素A3,4的地址为()。
A.1224B.1208C.1200D.1216
9.具有20个结点的二叉树,其深度最多为_______。
A.4B.5C.6D.20
10.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符
11.软件设计中划分模块的一个准则是()。A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合
12.以下叙述中错误的是A.gets函数用于从终端读入字符串
B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
13.以下关于链式存储结构说法错误的是()
A.比顺序存储结构的存储密度小
B.每个节点是由数据域和指针域组成
C.查找结点时链式存储比顺序存储快
D.逻辑上不相邻的节点物理上可能相邻
14.在inta=3,int*p=&a;中,*p的值是()。
A.变量a的地址值B.无意义C.变量p的地址值D.3
15.
16.在顺序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找关键码12需做()次关键码比较。
A.2B.3C.4D.5
17.面向对象方法中,继承是指()。
A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制
18.下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A.选择B.连接C.投影D.并
19.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中
D.C语言源程序经编译后生成扩展名为.obj的目标文件
20.关于地址和指针,以下叙述正确的是()。
A.可以通过强制类型转换让char型指针指向double型变量
B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”
C.指针P指向一个数组f时,必须写成“P=&f;”
D.—个指针变量P可以指向自身
二、2.填空题(20题)21.以下程序运行后的输出结果是【】。
#include<stdio.h>
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
22.一棵二叉树第六层(根节点为第一层)的节点数最多为______。
23.数据库是指按照一定的规则存储在计算机中的【】的集合,它能被各种用户共享。
24.下列程序段的运行结果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
25.下面程序的功能是求整数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);
}
26.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
27.如下图所示的二叉树后序遍历序列是【】。
28.以下程序的输出结果是【】。
#include<string.h>
main()
{chara[]={'\1','\2','\3','\4','\0'};
printf("%d%d\n",sizeof(a),strlen(a));
}
29.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。
30.函数fun的功能是计算xn。
doublefun(doublex,intn)
{inti;doubley=1;
for(i=1;i<=n;i++)y=y*x;
returny;
}
主函数中已经正确定义变量m,a,b并赋值,要调用函数fun计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。
31.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【】存储结构。
32.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i<N;i++)
{k=0;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+=a[k][i];
}
*sum=s;
}
main()
{intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(【】);
printf("%d\n",s);
}
33.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。
34.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。
35.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【】个元素。
36.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。
37.以下程序运行后的输出结果是()。
#include
char*ss(char*s)
{char*p,t;
P=s+1;t=*s;
while(*p){*(P-1)=*P;P++;}
*(P-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
38.下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,指定字符1,则输出3。请填空。
#include<stdio.h)
#deftneM81
intfun(char*ss,charc)
{inti=0;
for(;【】;ss++)
if(*ss==c)i++;
returni;
}
main()
{chara[M],ch;
printf("\nPleaseenterastring:");gets(a);
printf("\nPleaseenterachar:");ch=getchar();
printf("\nThenumberofthecharis:%d\n",fun(a,ch));
}
39.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
40.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。
main()
{double[10][22];
intn;
......
fun(s);
}
三、1.选择题(20题)41.以下叙述中错误的是()
A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B.在程序结束时,应当用fclose函数关闭已打开的文件
C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D.不可以用FILE定义指向二进制文件的文件指针
42.下列4个关于C语言的结论中错误的是()。
A.可以用do…while语句实现的循环一定可以用while语句实现
B.可以用for语句实现的循环一定可以用while语句实现
C.可以用while语句实现的循环一定可以用for语句实现
D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同
43.下面函数的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交换*ptr1和*ptr2的值
B.无法改变*ptr1和*ptr2的值
C.可能造成系统故障,因为使用了空指针
D.交换*ptr1和*pb2的地址
44.下列字符序列中,不可用作C语言标识符的是______。
A.b70B.#abC._symbolD.al
45.Modem的数据传输速率可达到()
A.几十KbpsB.几十KBpsC.几十MbpsD.几十MBps
46.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
47.下列程序的运行结果是()。
#include<stdio.h>
main()
{stmctdate
{intyear,month,day;
}today;
primf("%d\n",sizeof(structdate));
}
A.8B.6C.10D.12
48.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出结果是
A.28B.22C.16D.4
49.结构化程序设计方法在软件开发中用于______。
A.需求分析B.详细设计C.可行性分析D.程序设计
50.以下程序段的输出结果是()。#include<stdio.h>main(){charp[][4]={"ABC","DEF","GHI"};inti;for(i=0;i<3;i++)puts(p[i]);}
A.ABCB.ADGC.ABCDEFGHID.ABC
51.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
52.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
53.下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式
54.在下列叙述中,正确的一条是______。
A.对while循环、do…while循环和for循环,可以用continue语句跳出循环
B.表达式1+2<<3和sizeof(3.8)的结果分别为24和8
C.函数fputc(c,stdout)与putchax(c)的结果相同
D.在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元
55.若有定义intb[8],*p=b;则p+6表示()。
A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6
56.有定义语句:“inta=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x的值不为3的是()。
A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
57.有如下程序:voidf(intx,inty){intt;if(x<y){t=x;x=y;y=t;}}main(){inta=4,b=3,C=5,f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,C);}执行后输出结果是()。
A.3,4,5B.5,3,4C.5,4,3D.4,3,5
58.有以下程序:voidswap(char*x,char*y){chart;t=*x,*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。
A.123,abcB.abc,123C.1bc,a23D.321,cba
59.要把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是______。main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=0;i<10;i++,p++)if(______)*a=*p;printf("%d"t,*a);}
A.p>aB.*p>a[0]C.*p>*a[0]D.*p[0p*a[0]
60.对于下列定义,不正确的叙述是()。uniondata{inta;charb;doublec;}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
四、选择题(20题)61.有以下程序:
voidmain()
{
inti=10,j=1;
printf("%d,%d\n",2*i--,++j*2);
}
执行后输出的结果是()。
A)20,4B)10,2
C)20,1D)10,4
62.下列选项中不属于结构化程序设计原则的是()。
A.可封装B.自顶向下C.模块化D.逐步求精
63.
64.
65.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。A.A.无输出B.结果是不确定C.-1D.1
66.以下错误的定义语句是()。
67.有如下程序段:
其输出结果是()。
A.123.141593B.1,23.141593C.12,3.141593D.123.1415930
68.有以下函数该函数的功能是()。
A.计算s所指字符串占用内存字节的个数
B.比较两个字符串的大小
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中
69.设有如下程序段:
则执行P=s;语句后,以下叙述中正确的是()。
A.可以用*P表示s[O]
B.S数组中元素的个数和P所指字符串长度相等
C.s和P都是指针变量
D.数组s中的内容和指针变量P中的内容相等
70.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误
71.(57)下列叙述中,不属于软件需求规格说明书的作用的是______。
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
72.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。
A.35B.3,5C.3;5D.35
73.
74.有如下说明
inta[10]={1,2,3,4,5,6,7},*p=a;
则数值为5的表达式是
A.*p+4B.*(p+4)C.*p+=4D.p+4
75.以下不正确的定义语句是
A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};
C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};
76.(74)用链表表示线性表的优点是()
A.便于插入和删除操作
B.数据元素的物理顺序与逻辑顺序相同
C.花费的存储空间较顺序存储少
D.便于随机存取
77.
78.有以下程序:
#include<stdio.h>
main()
{char*s="[2]34";intk=0,a=0;
whil(s[k+1]!=\0)
{k++;
if(k%2=o){a=a+(s[k]-0+1);continue;}
a=a+(s[k]-0);
printf("k=%da=%d\n",k,a);
}
程序运行后的输出结果是()。
A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
79.下面不属于软件设计原则的是()。
A.抽象B.模块化C.自底向上D.信息隐蔽
80.若有定义“inta=5,b=7;”,则表达式a%=(b%2)运算后,a的值为()。
A.0B.1C.11D.3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求出以下分数序列的前m项之和。2/1,3/2,5/3,8/5,13/8,21/13,…和值通过函数值返回main()函数。例如,若m=6,则应输出10.007051。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是求斐波那契数列中大于t的最小的数,结果由函数返回。斐波那契数列F(n)的定义为F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如,当t=1000时,函数值为1597。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){}main(){intn;n=1000;printf(“n=%d,f=%d\n”,n,fun(n));}
参考答案
1.C
2.B程序中的*s%10是求余运算,分别是a、b、C的ASCIl码值对10进行求余运算然后输出,所以输出的答案为789。r
3.B#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。
4.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选项。
5.C当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择c选项。
6.C
7.C解析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一千算法必须至少有一个输出。
8.A
9.D
10.A
11.B一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
12.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。
13.C
14.D
15.B
16.B
17.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
18.B解析:本题主要考查关系模型中几种运算的特征。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。故选项B正确。
19.AC语言中的非执行语句不会被编译,不会被转换成二进制的机器指令,所以A选项错误。由C语言构成的指令序列称为C语言源程序,C语言源程序经过C语言编译程序编译之后,生成一个扩展名为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此目标文件与C语言提供的各种库函数连接起来生成一个扩展名为.exe的可执行文件。故本题答案为A选项。
20.A函数名代表函数的入口地址,函数指针P指向一个同类型的函数f时,可以写成“p=f;”,而不能写成“P=&f;”,选项B错误。指针p指向一个数组f时,可以写成“p=f;”,数组名f代表数组的首地址,选项C错误。指针变量指向的是变量的地址,选项D错误。char型根据转化原则可以转化为double类型。故本题答案为A选项。
21.136136解析:程序中定义了一个递归调用函数fun。程序运行时,先把实参6传给形参。if语句中6/2>0成立,执行fun(x/2),即fun(3),同时输出x的值6;再判断if条件,3/2>0成立,再执行fun(x/2),即fun(1),同时输出x的值3;此时1/2>0不再成立,输出1。而递归调用的输出顺序是相反的,故输出结果为136。
22.在二叉树的第k层上,最多有2k-1(k>1)个结点。
23.数据数据解析:数据库是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这些数据按一定的数据模型组织、描述和存储。
24.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。
25.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。
26.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。
27.GDBHIEFCAGDBHIEFCA解析:后序遍历二叉树的顺序为:后序遍历左子树→后序遍历右子树→访问根结点。按照定义,后序遍历序列是GDBHIEFCA。
28.545\u3000\u30004解析:字符串处理函数strlen()返回的是字符数组的实际长度,不包括字符申结束标志‘\\\u30000’。而sizeof运算符则计算的是字符数组的总长度,包括串末尾的结束标志。
29.1
30.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函数fun的功能是计算x的n次方,a的4次方的调用函数为fun(a,4),b的4次方的调用函数为fun(b,4),(a+b)的3次方的调用函数为fun((a+b),3),计算m=a4+b4-(a+b)3的函数调用语句为:fun(a,4)+fun(b,4)-fun((a+b),3);
31.顺序顺序解析:线性表的存储结构主要分为顺序存储结构和链式存储结构。当队列用链式存储结构实现时,就称为链队列;当队列用顺序存储结构实现时,就称为循环表。因此,本题划线处应填入“顺序”。
32.x&sx,&s解析:函数SumColumMin中变量k存放一列数组元素中值最小的数组元素的行标,函数通过形参sum带回值,sum是指针变量,将s中的值赋给*sum。空为函数调用,函数SumColumMin有两个形参,二维数组和指针变量,故空中应填x,&s。
33.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。
34.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前疗遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。
35.2424解析:在循环队列中因为头指针指向的是队头元素的前一个位置,所以是从第6个位置开始有数据元素,所以队列中的数据元素的个数为29-5=24。
36.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。
37.bcdefgha
38.*ss!='\0'*ss!='\\0'解析:从字符串ss中找出某字符的方法是:从字符串ss的第一个字符开始,依次进行比较,若ss串的当前字符等于字符c,则i++;若ss串的当前字符和字符c不同,则继续对ss串的下一个字符进行比较。本程序采用循环逐一比较的方式,找出某字符在字符串中出现的次数。汀语句的作用是判断某字符与字符串中的当前字符是否相同。
39.—对多—对多解析:实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。
40.voidfun(doubleb[10][22])voidfun(doubleb[10][22])解析:本题答案:voidfun(doubleb[10][22])。
41.D解析:顺序文件只能从头读写,二进制文件可以随机读写,选项A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭,选项B正确:用fread()函数可以一次性地读取同类型的很多数据,选项C正确;在C语言中指向各种文件的文件指针都是通过FILE来定义的,故选项D是错误的。所以4个选项中选D
42.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。
43.B解析:函数中将指针变量ptr1和ptr2中的值交换,而不是交换指针ptr1和ptr2所指变量中的值。
44.B
45.A
46.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
47.B解析:解答本题需要注意两个知识点:①结构体变量的长度是其内部成员长度的总和,本题中,structdate中包含year、month、day这3个整型变量,一个整型变量占2个字节:②sizeof是求所占字节数的运算符。
48.A解析:本题考核的知识点是宏定义的简单应用。本题中首先将所有的宏替换掉,则表达式为i=4+4*4+4/2+2*2+2,故最后输出的i的值为28。所以,4个选项中选项A符合题意。
49.B
50.C
51.D解析:本题中是一个含有两个结点的循环链表。
C语言中结构体的定义为:
struct结构题类型名
{
成员项表;
};
52.B解析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为“aaa\\0”,“\\0”是由系统自动加入的:gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“/0”代替换行符。
53.A数据库管理系统的三级模式结构由外模式、模式和内模式组成。
外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。
54.C
55.B解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将p+6指的是将指针向后移动了6个存储单元,指向b[6],存放的是b[6]的地址。
56.C解析:选项A首先判断if语句条件中表达式的值“3<1”为假,然后执行最近的else后面的语句,该else后面又为if-else语句,在这个if-else语句中首先判断该if语句条件中表达式的值“2<1”为假,程序执行其最近的else后面的语句,将3赋值给x。
选项B中首先判断if语句条件中表达式的值“1<3”为真,然后执行最近的else后面的语句“x=3”,后面的else不再执行,最后x的值为3。
选项C中,首先选执行第一条if语句,由于“1<3”为真,执行此if后面的语句“x=3”,接着执行第二条if语句,由于“1<2”为真,执行此if后面的语句“x=2”,接着执行第三条if语句,由于“1<1”为假,后面的语句不执行,所以最后的x值为2不为3。
选项D中,首先选执行第一条if语句,由于“a<b”为真,执行此if后面的语句“x=b”;接着执行第二条if语句,由于“b<c”,为真,执行此if后面的语句“x=c”,接着执行第三条if语句,由于“c<a”为假,后面的语句不执行,所以最后的x值为c即为3。所以,4个选项中选项C符合题意。
57.D解析:C语言规定,在函数调用时变量作为参数传递是传值的,在函数体中对形参变量的修改不能影响到对应的实参变量。本题定义了一个函数f(),用变量作为形参,在main()函数中调用了3次f()函数,由于变量作为参数进行传递,所以对应的实参的值并没有被交换。故输出的a、b、c依旧是原来的值4、3、5。D选项为所选。
58.C解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串'abc'和'123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。
59.B解析:p是指向整型的指针,初始指向数组a的首地址,a[0]本来就表示数组a的第1个元素,不是表示地址,因此选项C、D中的*a[0]是错误的。选项A语法上没有错,但是不合乎题意,没有比较数组元素和指针变量p当前指向单元的内容。
60.C解析:本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。不能在定义共用体变量时对它初始化。
61.A有以下程序:\r\nvoidmain()\r\n{\r\ninti=10,j=1;\r\nprintf('%d,%d\\n',2*i--,++j*2);\r\n}\r\n执行后输出的结果是(([question]))。([answer])\r\nA)20,4
B)10,2\r\nC)20,1
D)10,4
62.AA。【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句等。
63.D
64.D
65.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。
66.A二维数组定义行数可以省略,列数不能省略,所以答案选择A)。
67.Aprintf函数中格式字符“%8.6”的含义是:变量Y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐。所以选择A。
68.C首先char*s接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char*t,while(*t++)不断循环,直到*t为‘\\o’,再将t一1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址即字符串的首地址,所以return(t--s)便是返回字符数组中字符串的长度。故本题答案为C)。
69.AP=8;后,指针P指向s的首地址,*P=s[0],因此选项A)是正确的;p是字符串指针,所指向的字符串为”beijing”,其长度为7,而数组s中元素的个数为20,因此选项B)和D)是错误的;s是数组,不是指针变量,所以选项C)也是错误的。
70.Ado-wlfile的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。
71.D
72.C输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。
73.B
74.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)来表示。
75.A在一维数组中要注意的是,下标表达式中常量表达式的值必须大于等于零,并且小于自身元素的个数,即数组长度,选项A的下标不是整数,所以错误。
76.A注:因为不需要移动元素
77.A
78.C\n输出结果:k=1a=2
\nk=2a=4
\nk=3a=7
\nk=4a=12
\n
79.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。
80.A本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。
81.(1)错误:proc(intn)
正确:doubleproc(intn)
(2)错误:c=a;a+=b;b+=C;
正确:c=a;a+=b;b=c;
【解析】由main()函数中的proc()函数调用可知,函数proc()的返回值为double型数据。因此,“proc(intn)”应改为“doubleproc(intn)”。根据数列的特点可知,下一项的分子是上一项的分子和分母之和,下一项的分母为上一项的分子。根据数列的这个特点,“c=a;a+=b;b+=c;”应改为“c=a;a+=b;b=c;”。
82.intfun(intt){intf0=0,f1=1,f;do{/*根据斐波那契数列的定义求数值*/f=f0+f1;f0=f1;f1=f;}while(f<t);/*如果求的数值小于t则继续*/</t);returnf;}根据斐波那契数列定义不难发现,该数列最终的结果由两个数列之和组成,所以可以在循环内部始终把f看成前两项之和,而f0始终代表第n-2项,f1代表第n-1项。退出循环时得到的数f,就是大于指定数的最小的数。2022年广东省阳江市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若声明一个浮点数数组如下:froataverage[]=newfloat[30];假设该数组的内存起始位置为200,average[15]的内存地址是()。A.A.214B.215C.260D.256
2.有以下程序(注:字符a的ASCIl码值为97)#include<stdio.h>main(){char*s={"abc")do{printf("%d",*S%10");++S;}while(*s);}陧序运行后的输出结果是()。A.abcB.789C.7890D.979899
3.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
4.有以下程序:#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
5.若有以下程序段,w和k都是整型变量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇则不能与上面程序段等价的循环语句是()。A.for(w=k;w!=0;w--)printf("*");
B.for(w=k;w;--w)printf("*");
C.w=k;while(w--!=0)printf("*");
D.w=k:w++;do{w--;printf("*");}while(w!=0);
6.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
7.以下叙述中正确的是_____。A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
8.设有二维数组A7×8,每个数据元素占8个字节存储单元,顺序存放,A第一个元素A0,0的存储地址为1000,按行优先存放时,元素A3,4的地址为()。
A.1224B.1208C.1200D.1216
9.具有20个结点的二叉树,其深度最多为_______。
A.4B.5C.6D.20
10.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符
11.软件设计中划分模块的一个准则是()。A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合
12.以下叙述中错误的是A.gets函数用于从终端读入字符串
B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
13.以下关于链式存储结构说法错误的是()
A.比顺序存储结构的存储密度小
B.每个节点是由数据域和指针域组成
C.查找结点时链式存储比顺序存储快
D.逻辑上不相邻的节点物理上可能相邻
14.在inta=3,int*p=&a;中,*p的值是()。
A.变量a的地址值B.无意义C.变量p的地址值D.3
15.
16.在顺序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找关键码12需做()次关键码比较。
A.2B.3C.4D.5
17.面向对象方法中,继承是指()。
A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制
18.下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A.选择B.连接C.投影D.并
19.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中
D.C语言源程序经编译后生成扩展名为.obj的目标文件
20.关于地址和指针,以下叙述正确的是()。
A.可以通过强制类型转换让char型指针指向double型变量
B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”
C.指针P指向一个数组f时,必须写成“P=&f;”
D.—个指针变量P可以指向自身
二、2.填空题(20题)21.以下程序运行后的输出结果是【】。
#include<stdio.h>
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
22.一棵二叉树第六层(根节点为第一层)的节点数最多为______。
23.数据库是指按照一定的规则存储在计算机中的【】的集合,它能被各种用户共享。
24.下列程序段的运行结果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
25.下面程序的功能是求整数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);
}
26.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
27.如下图所示的二叉树后序遍历序列是【】。
28.以下程序的输出结果是【】。
#include<string.h>
main()
{chara[]={'\1','\2','\3','\4','\0'};
printf("%d%d\n",sizeof(a),strlen(a));
}
29.已知a=1,b=2,则表达式(a&B)&b||b的结果为()。
30.函数fun的功能是计算xn。
doublefun(doublex,intn)
{inti;doubley=1;
for(i=1;i<=n;i++)y=y*x;
returny;
}
主函数中已经正确定义变量m,a,b并赋值,要调用函数fun计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。
31.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【】存储结构。
32.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i<N;i++)
{k=0;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+=a[k][i];
}
*sum=s;
}
main()
{intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(【】);
printf("%d\n",s);
}
33.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。
34.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。
35.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【】个元素。
36.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。
37.以下程序运行后的输出结果是()。
#include
char*ss(char*s)
{char*p,t;
P=s+1;t=*s;
while(*p){*(P-1)=*P;P++;}
*(P-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
38.下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,指定字符1,则输出3。请填空。
#include<stdio.h)
#deftneM81
intfun(char*ss,charc)
{inti=0;
for(;【】;ss++)
if(*ss==c)i++;
returni;
}
main()
{chara[M],ch;
printf("\nPleaseenterastring:");gets(a);
printf("\nPleaseenterachar:");ch=getchar();
printf("\nThenumberofthecharis:%d\n",fun(a,ch));
}
39.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
40.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。
main()
{double[10][22];
intn;
......
fun(s);
}
三、1.选择题(20题)41.以下叙述中错误的是()
A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B.在程序结束时,应当用fclose函数关闭已打开的文件
C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D.不可以用FILE定义指向二进制文件的文件指针
42.下列4个关于C语言的结论中错误的是()。
A.可以用do…while语句实现的循环一定可以用while语句实现
B.可以用for语句实现的循环一定可以用while语句实现
C.可以用while语句实现的循环一定可以用for语句实现
D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同
43.下面函数的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交换*ptr1和*ptr2的值
B.无法改变*ptr1和*ptr2的值
C.可能造成系统故障,因为使用了空指针
D.交换*ptr1和*pb2的地址
44.下列字符序列中,不可用作C语言标识符的是______。
A.b70B.#abC._symbolD.al
45.Modem的数据传输速率可达到()
A.几十KbpsB.几十KBpsC.几十MbpsD.几十MBps
46.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
47.下列程序的运行结果是()。
#include<stdio.h>
main()
{stmctdate
{intyear,month,day;
}today;
primf("%d\n",sizeof(structdate));
}
A.8B.6C.10D.12
48.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出结果是
A.28B.22C.16D.4
49.结构化程序设计方法在软件开发中用于______。
A.需求分析B.详细设计C.可行性分析D.程序设计
50.以下程序段的输出结果是()。#include<stdio.h>main(){charp[][4]={"ABC","DEF","GHI"};inti;for(i=0;i<3;i++)puts(p[i]);}
A.ABCB.ADGC.ABCDEFGHID.ABC
51.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
52.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
53.下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式
54.在下列叙述中,正确的一条是______。
A.对while循环、do…while循环和for循环,可以用continue语句跳出循环
B.表达式1+2<<3和sizeof(3.8)的结果分别为24和8
C.函数fputc(c,stdout)与putchax(c)的结果相同
D.在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元
55.若有定义intb[8],*p=b;则p+6表示()。
A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6
56.有定义语句:“inta=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x的值不为3的是()。
A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
57.有如下程序:voidf(intx,inty){intt;if(x<y){t=x;x=y;y=t;}}main(){inta=4,b=3,C=5,f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,C);}执行后输出结果是()。
A.3,4,5B.5,3,4C.5,4,3D.4,3,5
58.有以下程序:voidswap(char*x,char*y){chart;t=*x,*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。
A.123,abcB.abc,123C.1bc,a23D.321,cba
59.要把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是______。main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=0;i<10;i++,p++)if(______)*a=*p;printf("%d"t,*a);}
A.p>aB.*p>a[0]C.*p>*a[0]D.*p[0p*a[0]
60.对于下列定义,不正确的叙述是()。uniondata{inta;charb;doublec;}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
四、选择题(20题)61.有以下程序:
voidmain()
{
inti=10,j=1;
printf("%d,%d\n",2*i--,++j*2);
}
执行后输出的结果是()。
A)20,4B)10,2
C)20,1D)10,4
62.下列选项中不属于结构化程序设计原则的是()。
A.可封装B.自顶向下C.模块化D.逐步求精
63.
64.
65.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。A.A.无输出B.结果是不确定C.-1D.1
66.以下错误的定义语句是()。
67.有如下程序段:
其输出结果是()。
A.123.141593B.1,23.141593C.12,3.141593D.123.1415930
68.有以下函数该函数的功能是()。
A.计算s所指字符串占用内存字节的个数
B.比较两个字符串的大小
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中
69.设有如下程序段:
则执行P=s;语句后,以下叙述中正确的是()。
A.可以用*P表示s[O]
B.S数组中元素的个数和P所指字符串长度相等
C.s和P都是指针变量
D.数组s中的内容和指针变量P中的内容相等
70.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误
71.(57)下列叙述中,不属于软件需求规格说明书的作用的是______。
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
72.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。
A.35B.3,5C.3;5D.35
73.
74.有如下说明
inta[10]={1,2,3,4,5,6,7},*p=a;
则数值为5的表达式是
A.*p+4B.*(p+4)C.*p+=4D.p+4
75.以下不正确的定义语句是
A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};
C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};
76.(74)用链表表示线性表的优点是()
A.便于插入和删除操作
B.数据元素的物理顺序与逻辑顺序相同
C.花费的存储空间较顺序存储少
D.便于随机存取
77.
78.有以下程序:
#include<stdio.h>
main()
{char*s="[2]34";intk=0,a=0;
whil(s[k+1]!=\0)
{k++;
if(k%2=o){a=a+(s[k]-0+1);continue;}
a=a+(s[k]-0);
printf("k=%da=%d\n",k,a);
}
程序运行后的输出结果是()。
A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
79.下面不属于软件设计原则的是()。
A.抽象B.模块化C.自底向上D.信息隐蔽
80.若有定义“inta=5,b=7;”,则表达式a%=(b%2)运算后,a的值为()。
A.0B.1C.11D.3
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求出以下分数序列的前m项之和。2/1,3/2,5/3,8/5,13/8,21/13,…和值通过函数值返回main()函数。例如,若m=6,则应输出10.007051。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是求斐波那契数列中大于t的最小的数,结果由函数返回。斐波那契数列F(n)的定义为F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如,当t=1000时,函数值为1597。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年法宣在线宪法学习试题库和答案
- 中国氧化铁红H186项目投资可行性研究报告
- 中国撞击式卸油器项目投资可行性研究报告
- 牡丹交警卡系统行业深度研究报告
- 手动色带打码机行业深度研究报告
- 2026年农业用具市场前景分析
- 双层粘合网行业深度研究报告
- 2026年中国纺纱设备行业现状分析及赢利性研究预测报告
- 2026年中国防水防护卷材行业市场前景预测及投资价值评估分析报告
- 2026年中国防晒品行业市场前景预测及投资价值评估分析报告
- T/CRRA 2301-2024国有企业废旧物资交易平台服务流程管理规范
- 《人工智能通识课》全套教学课件
- 卷扬机使用课件
- 教师因公死亡赔偿协议书
- 大学生职业生涯规划课件 第九章 全国大学生职业规划大赛(成长赛道)参赛指导
- 水泵及电机基础知识培训课件
- 【里斯】现制饮品出海品类研究报告
- 2025至2030少儿艺术培训行业发展分析及有效策略与实施路径评估报告
- 手持电动工具安全技术
- 中成药课件教学课件
- 公交消防知识试题及答案
评论
0/150
提交评论