




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年贵州省安顺市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
2.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.下列程序的输出结果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}
A.22B.76C.72D.62
4.下列方法中,属于白盒法设计测试用例的方法的是()。
A.错误推测B.因果图C.基本路径测试D.边界值分析
5.在一个C语言源文件中定义的全局变量,其作用域为()。
A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
6.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
7.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()
A.BCB.ACC.DFD.CF
8.下列不正确的转义字符是()。
A.'\\'B.'\t'C.'\n\D.'088'
9.读取二进制文件的函数调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是()。
A.—个内存块的字节数
B.—个整型变量,代表待读取的数据的字节数
C.一个文件指针,指向待读取的文件
D.—个内存块的首地址,代表读入数据存放的地址
10.有如下程序:main(){intx=1,a=0,b=0;switch(x){case0:b++;casel:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
11.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
12.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。
A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1
13.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。
A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针
14.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
15.以下叙述中正确的是()。
A.构成C程序的基本单位是函数
B.可以在一个函数中定义另一个函数
C.main函数必须放在其他函数之前
D.C函数定义的格式是K&R格式
16.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的运行结果是()。
A.55B.50C.45D.60
17.有以下程序:#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
18.有以下程序(说明:字母A的ASCIl码值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序运行后的输出结果是()。A.BYB.BTC.YTD.YE
19.以下能正确定义一维数组的选项是
A.inta[5]={0,1,2,3,4,5}
B.chara[]={'0','1','2','3','4','5','\0'};
C.chara={'A','B','C'};
D.inta[5]="0123";
20.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
二、2.填空题(20题)21.下列程序的输出结果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2,&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
22.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。
23.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
24.若x为int类型,请写出与!x等价的C语言表达式______。
25.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。
26.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。
27.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#include<string.h>
main()
{inti,j,【】;charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);}
28.以下程序的输出结果是【】。
#include<stdlib.h>
main()
{char*s1,*s2,m;
s1=s2=(char*)malloc(sizeof(char));
*s1=15;*s2=20;m=*s1+*s2;
printf("%d\n",m);
}
29.下述函数用于统计—行字符中的单词个数,单词之间用空格分隔。
word_num(str)
charstr[];
{int,num=O,word=O;
for(i=0;str[i]!=【】;i++)
if(【】=")wprd=0
elseif(word=O)
{
word=1:
【】;
}
return(num);
}
30.写出下列程序的输出结果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
31.以下程序运行后的输出结果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
32.若a是血型变量,且a的初值为4,则计算a+=a-=a*a表达式后a的值为______。
33.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
34.若x、y和z均是int型变量,则执行下面表达式后的x值为【】。
x=(y=4)+(z=3)
35.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于______。
36.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
37.有以下程序:
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);
}
程序运行后的输出结果是【】。
38.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。
39.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
40.
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【】;
s=s+fac;
}
returns;
}
三、1.选择题(20题)41.有以下程序:main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是()。
A.y=0B.y=-1C.y=1D.while构成无限循环
42.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
43.以下对结构体类型变量td的定义中,错误的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
44.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是()。
A.int*i=NULL;
B.float*f=NULL;
C.chart='m',*c=&t;
D.long*Lscanf("%d",i);*f=10.5;*c=&t;L='\0';
45.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A.log2nB.n/2C.nD.n+1
46.下面程序段的运行结果是char*s="abcde";s+=2;printf("%d",s);
A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果
47.下列说法不正确的足()。
A.int*ptr;//指针指向整形数据
B.char*ptr;//指针的类型是字符型指针
C.int**ptr;//指针的类型是双重指针
D.int(*ptr)[3];//是一一个指针数组,数组共有三个元素,而三个元素是int型指针
48.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。
A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x
49.表达式'8'-'2'的值是()。
A.整数6B.字符6C.表达式不合法D.字符8
50.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
51.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}则程序运行后的输出结果是()。
A.1,1B.1,4C.4,1D.4,4
52.分布式数据库系统不具有的特点是()。A.A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余
53.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()
A.n+1B.n-1C.2nD.n/2
54.有如下程序:#include<stdio.h>main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是()。
A.0B.0.25C.0.5D.1
55.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。
A.c1∧c2B.c1&c2C.~c2D.c1|c2
56.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
57.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));
A.1B.2C.4D.5
58.以下选项中不合法的标识符是
A.ptintB.FORC.&aD._00
59.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
60.下列叙述中正确的是()。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对
四、选择题(20题)61.(3)在一棵二叉树上第5层的结点数最多是______。
A.8
B.16
C.32
D.15
62.有以下程序:
程序运行后的输出结果是()。、
A.ABEFB.CDEFC.ABCDD.CDAB
63.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。
A.提高耦合性降低内聚性有利于提高模块的独立性
B.降低耦合性提高内聚性有利于提高模块的独立性
C.耦合性是指-个模块内部各个元素间彼此结合的紧密程度
D.内聚性是指模块间互相连接的紧密程度
64.
65.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
66.有以下程序:
程序的运行结果是()。
A.1,2,3,4,B.1,0,7,0,C.1,4,5,9,D.3,4,8,10,
67.
68.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错
69.
70.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
71.有以下程序
72.下列对于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
73.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)
74.
75.
76.以下程序中函数f的功能是:当na9为1时,进行由小到大排序;当na9为0时,进行由大到小排序。
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
77.
78.
79.以下叙述中错误的是()。
A.C程序对预处理命令行的处理是在程序执行的过程中进行的
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.在程序中凡是以“#”开始的语句行都是预处理命令行
80.有以下程序
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出m以内最大的6个能被7或11整除的自然数之和。m的值由主函数传人。例如,若m的值为600,则函数的值为3515。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。
注意:部分源程序给出如下。
请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
参考答案
1.C
2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
3.C解析:函数slzeof(a)的功能是求出字符串a中的字符占用存储空间的大小,由于字符数组a有长度为7,所以i=7;函数strlen(a)的功能是:求出字符串a的长度。而每个字符串都以'\\0'为字符串的结束标记,所以j的值等于2。
4.CC)【解析】白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。
5.A全局变量的作用域是从声明处到文件的结束。故本题答案为A选项。
6.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
7.D
8.D解析:'\\\\'是反斜线转义字符;'\\t'是水平跳格转义字符;'\\n'是换行转义字符;C语言中没有规定'088'为转义字符。
9.D函数原型“fread(void*buffer,sizetsize,sizetcount,FILE*stream)”的功能是从一个文件流中读数据,读取count个元素,每个元素size字节。如果调用成功,返回count。buffer用于接收数据的内存地址,大小至少是size*count字节;size是单个元素的大小,单位是字节;count是元素的个数,每个元素是size字节;stream是输入流。故本题答案为D选项。
10.A当X为1时,执行case1,a自加等于1,因为case1后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。
11.A
12.C
13.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。
14.B解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受—个字符(回车符也算是—个字符),所以getchar()不能用宋读入字符串。scanf()函数要求按—定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为—个字符,也就无法读入空格字符。函数gets()的作用是从终端输入—个字符串\u3000(包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。
15.A解析:本题考查C语言的综合基础知识。构成C程序的基本单位是函数,一个C程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。
16.D静态变量是始终存在的,当函数变量退出后,静态变量会保存数据,再次调用该函数时,以前的静态变量值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60。故本题答案为D选项。
17.C输出结果:k=1a=2\r\nk=2a=4\r\nk=3a=7\r\nk=4a=12
18.Dfun函数的意思是当*s%2==0的时候就输出并且s自加l次,然后判断。所以可知只有第2和第4个位置上的才符合要求,所以答案为D。
19.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。
20.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。
21.本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。\r\n\r\n
22.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。
23.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。
24.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。
25.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函数的一般格式为:“printf(格式控制,输出表列)”。
26.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。
27.k-1k\r\n-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]还位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。
28.4040解析:本题中指针s1和s2都指向同一个内存中的地址。因此语句“*s2=20;”执行后,*\u3000s1=*s2=20。所以m最后的值为40。
29.\0'或0或NULLstr[i]num++或num=num+1或mum+=l\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或mum+=l解析:观察题目要求,可以知道以下几点:
①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;
②str[i]代表字符串str中的第i+1个字符;
③整型变量num的值是要记录的单词的个数。
C语言中规定字和会串的最后一个字和会是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通地变量num的加1累加到字符串中的单词个数。
30.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。
31.132132解析:本题考核的知识点是for循环与switch语句的综合运用。主函数中用了一个for循环,for循环里嵌套了一个switch语句,for循环了三次,当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各加1,变为1和1,然后遇到breake语句,退出switch语句;当i=10,i/10=1,执行switch语句中default分支,使k和n的值各加1,变为1和1,退出switch语句:当i=11时,i/10=1,执行switch语句中default分支,k和n的值各加1变,为2和3,退出switch语句,循环结束。故该空格处应该填132。
32.-24-24解析:本题考查赋值运算符a+=b等价于a=a+b;a-=a*a等价于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。
33.101091101091解析:for(表达式1;表达式2:表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环:第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。
34.77解析:x=(y=4)+(z=3)等价于y=4,z=3,x=y+z=4+3=7。
35.非线性结构非线性结构解析:对于一个非空的数据结构,如果同时满足下列两个条件,即1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件;即为线性结构,而二叉树的结点可能存在两个后件,所以是非线性结构。
36.*pmax=*px*pmax=*px解析:首先将变量x的值放到max中,然后依次和变量y、z进行比较。若有比max大的数,将该数存放到max中,这样最后在max中的值就是x、y、z中的最大值。
37.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。
38.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。
39.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。
40./i或*1.O/i或*1或*(1.O/i)或/(double)i/i或*1.O/i或*1或*(1.O/i)或/(double)i解析:主函数中首先定义了两个double型的变量s和fac,并给它们赋初值为0.0和1.0,在函数中s和fac的作用是存放和以及要加到的那一项的值。通过分析可知,第i项的值可以由第i-1项的值得到,即第i项是第i-1项的值除以i。可见横线处应添/i或与它等价的表达式。
41.B解析:本题中有一个陷阱,很多考生会根据程序的书写格式来判断:while循环的循环体为printf('y=%d\\n',y);语句。其实while的循环体是一条空语句,即y--后面的那个分号就是while的循环体。所以本题只要弄清楚表达式y--何时为“假”,即等于0,就能得出结果了。因为--运算符是后缀形式,所以表达式y--的值是y自减之前的值,即y等于。时,表达式y--就等于0了。但此时的y还要被减1,所以循环结束后,y的值为-1。故应该选择B。
42.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
43.C解析:选项A使用typedef语句给结构体8a定义了一个新的名称AA,因此使用AA直接声明结构体变量td是正确的。选项B中,前面一句是定义结构体同时声明了结构体变量td,后一句是使用结构体名aa声明结构体变量td,都是正确的写法。选项C的第1条语句和选项D使用的是无名结构体直接声明变量的语法,是正确的,但是选项C的第2条语句使用已经声明的结构体变量aa来声明td是错误的。故应该选择c。
44.D解析:选项A定义了一个整型变量i,并且初始化让它指向NULL,接着通过scanf()函数,改变i指向的存储空间的值,选项A中首先定义了整型指针变量i并初始化为NULL,即表示指针i不指向任何内存,即此时程序还没有为i在内存中开辟存储单元,而在scanf0函数中第二个参数是地址参数,显然在这里i不在表示地址,所以下面的scanf('%d',i)语句足不正确的,故选项A不正确;选项B定义了一个浮点型变量f并初始化让它指向NULL,而当一个指针变量指向NULL以后不能在给它赋值,而接下来的程序中为其赋了一值;故选项B错误;选项C中首先定义了一个字符变量t并给它赋初值\'m\',然后定义个字符型指针c并让它指向了变量t,这一部分正确,然后接着用了—个语句“*c=&t;”应该将该语句中c前的“,”去掉,故选项C运用指针变量不正确。所以,4个选项中选项D符合题意。
45.C本题考查的是顺序查找。在进行顺序查找过程中,如果线性表中的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高;但如果被查找的元素是线性表中的最后一个元素,或者被查找的元素根本就不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏情况。所以对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。故本题答案为C。
46.C解析:对于字符串指针,其保留的是整个串的首地址,即为第一个字符的起始地址,当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
47.D解析:int(*ptr)[3]是一个数组指针,指针指向一个有3个int型变量的数组。
48.A解析:选项A将变量x的地址赋绐指针变量pb,使pb指向x‘选项B是烙x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。
49.A解析:在C语言中,虽然字符都是变为其对应的ASCII码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符8和字符2的ASCII码值相差仍是6。
50.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
51.C解析:{intm=4;s+=m;}是复合语句,m=4,s+=m等价于s=s+m=0+4=4。t+=m等价于t=t+m,这里m为全局变量,值为1,t=t+m=O+1=1。
52.D解析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多的,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。
53.A解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。根据这条性质可知,若二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为n+1。因此,本题的正确答案是选项A。
54.C解析:该题目考查对if-elseif结构的理解。由于x的值满足x<10.0的关系,所以程序执行y=1.0/x;语句,y的值等于0.5。用printf函数按%f格式输出时,结果为小数点后保留6位。
55.A解析:按位异或“^”运算,是当对应位上的二进制数值相同时结果为0,否则为1。因为c1,c2的值相同,所以异或的结果为0,选项A)正确。按位与“&”运算符只有当所有对应位上的数都不相同时结果才为0,所以c1&c2的值不可能为0,选项B)错误。“~”是按位取反,由于十进制数92转化成二进制数并不是全为1,所以即使取反也不能得到全为。的答案,所以错误。“|”是按位或运算,由于十进制数92转化为二进制数也不是全为0,所以按位或运算后也不会全为0。
56.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。
57.B解析:函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。
58.C
59.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。
60.C本题考查对面向对象的理解。面向对象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
61.B根据二叉树的性质,在二叉树的第K层上,最多有2k-1个结点。所以,第五层的结点数最多为16。
62.B本题考察的是变量的作甩范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用:奉题中,在funl()和main()函数内访问的是全局变量a和b,在fun2()函数中访问的是形参变量a和b。所以,main()函数中的prinff()函数输出的是在funl()函数中被改变的全局变量a和b的值C、D,而fun2()函数中输出的是传递给它的实参值E、F。因此B选项正确。
63.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素问彼此结合
的紧密程度,所以c与D错误。
64.C
65.C文件由数据序列组成,可以构成二进制文件或文本文件。故本题答案为C选项。
66.B该题目中fun函数的功能是将二维数组
a中符合条件的值赋给一维数组的符合条件的元素。主函数
的功能是将符合条件的一维数组的元素进行输出。
67.C
68.AC语言规定,注释语句可以换行写,并且一个“/*”和其后紧跟的第一个“*/”中间的部分是注释内容,并且注释部分的内容不参与程序的执行,因此本题中没有执行“b=20”;这条语句。
69.A
70.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。
71.Af(2)展开后为,2*5+1,值为ll,f(1+1)展开后为,l+1*5+1值为7,所以答案选择A):
72.A解析:在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项A的描述正确。因此,本题的正确答案为A。
73.B在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项8中表达式E>0||E<0是一个逻辑表达式。
74.B
75.B
76.B本题重点考察函数的参数传递,函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。函数f完成的功能是对数据进行排序,语句f(&a[2],5,O)的作用是对从a[2]开始的5个元素进行从大到小排序。注意:这里传递的是地址&a[2],所以排序操作可看作是直接对数组a操作,执行后的结果为5,4,7,6,3,2,1,8,9,10。语句f(a,5,1)对数组a的前5个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1,8,9,10。因此B选项正确。
77.C
78.B
79.AC程序对预处理命令行的处理是在程序编译的过程中进行的,所以选择A)。
80.A结构体可以整体传递,b=a,则结构体b里的数据为a的数据,所以选择A)。
81.82.\n\tvoidfun(char*a)
\n{
\ninti,j=0;
\nfor(i=0;a[i]!=\0;i++)
\nif(a[i]!=*)
\na[j++]=a[i];//若不是要删除的字符*则保留
\na[j]=\0;//最后加上字符串结束符\0
\n}
\n【解析】此题是删除字符串中的星号。思路是通过for循环完成对字符串的遍历,通过if判断,找到不是“*”的字符,将其赋值到数组a中星号前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函数将删除*后的字符串输出即可。\n2021年贵州省安顺市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
2.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.下列程序的输出结果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}
A.22B.76C.72D.62
4.下列方法中,属于白盒法设计测试用例的方法的是()。
A.错误推测B.因果图C.基本路径测试D.边界值分析
5.在一个C语言源文件中定义的全局变量,其作用域为()。
A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
6.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
7.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()
A.BCB.ACC.DFD.CF
8.下列不正确的转义字符是()。
A.'\\'B.'\t'C.'\n\D.'088'
9.读取二进制文件的函数调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是()。
A.—个内存块的字节数
B.—个整型变量,代表待读取的数据的字节数
C.一个文件指针,指向待读取的文件
D.—个内存块的首地址,代表读入数据存放的地址
10.有如下程序:main(){intx=1,a=0,b=0;switch(x){case0:b++;casel:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
11.和顺序栈相比,链栈有一个比较明显的优势是()。
A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现
12.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。
A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1
13.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。
A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针
14.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
15.以下叙述中正确的是()。
A.构成C程序的基本单位是函数
B.可以在一个函数中定义另一个函数
C.main函数必须放在其他函数之前
D.C函数定义的格式是K&R格式
16.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的运行结果是()。
A.55B.50C.45D.60
17.有以下程序:#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
18.有以下程序(说明:字母A的ASCIl码值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序运行后的输出结果是()。A.BYB.BTC.YTD.YE
19.以下能正确定义一维数组的选项是
A.inta[5]={0,1,2,3,4,5}
B.chara[]={'0','1','2','3','4','5','\0'};
C.chara={'A','B','C'};
D.inta[5]="0123";
20.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
二、2.填空题(20题)21.下列程序的输出结果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2,&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
22.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。
23.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。
24.若x为int类型,请写出与!x等价的C语言表达式______。
25.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。
26.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。
27.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#include<string.h>
main()
{inti,j,【】;charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);}
28.以下程序的输出结果是【】。
#include<stdlib.h>
main()
{char*s1,*s2,m;
s1=s2=(char*)malloc(sizeof(char));
*s1=15;*s2=20;m=*s1+*s2;
printf("%d\n",m);
}
29.下述函数用于统计—行字符中的单词个数,单词之间用空格分隔。
word_num(str)
charstr[];
{int,num=O,word=O;
for(i=0;str[i]!=【】;i++)
if(【】=")wprd=0
elseif(word=O)
{
word=1:
【】;
}
return(num);
}
30.写出下列程序的输出结果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
31.以下程序运行后的输出结果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
32.若a是血型变量,且a的初值为4,则计算a+=a-=a*a表达式后a的值为______。
33.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
34.若x、y和z均是int型变量,则执行下面表达式后的x值为【】。
x=(y=4)+(z=3)
35.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于______。
36.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。
main()
{intx,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
【】;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax=*pz;
printf("max=%d\n",max);}
37.有以下程序:
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);
}
程序运行后的输出结果是【】。
38.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。
39.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。
40.
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【】;
s=s+fac;
}
returns;
}
三、1.选择题(20题)41.有以下程序:main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是()。
A.y=0B.y=-1C.y=1D.while构成无限循环
42.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
43.以下对结构体类型变量td的定义中,错误的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
44.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是()。
A.int*i=NULL;
B.float*f=NULL;
C.chart='m',*c=&t;
D.long*Lscanf("%d",i);*f=10.5;*c=&t;L='\0';
45.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A.log2nB.n/2C.nD.n+1
46.下面程序段的运行结果是char*s="abcde";s+=2;printf("%d",s);
A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果
47.下列说法不正确的足()。
A.int*ptr;//指针指向整形数据
B.char*ptr;//指针的类型是字符型指针
C.int**ptr;//指针的类型是双重指针
D.int(*ptr)[3];//是一一个指针数组,数组共有三个元素,而三个元素是int型指针
48.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。
A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x
49.表达式'8'-'2'的值是()。
A.整数6B.字符6C.表达式不合法D.字符8
50.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
51.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}则程序运行后的输出结果是()。
A.1,1B.1,4C.4,1D.4,4
52.分布式数据库系统不具有的特点是()。A.A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余
53.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()
A.n+1B.n-1C.2nD.n/2
54.有如下程序:#include<stdio.h>main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是()。
A.0B.0.25C.0.5D.1
55.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。
A.c1∧c2B.c1&c2C.~c2D.c1|c2
56.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
57.下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));
A.1B.2C.4D.5
58.以下选项中不合法的标识符是
A.ptintB.FORC.&aD._00
59.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
60.下列叙述中正确的是()。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对
四、选择题(20题)61.(3)在一棵二叉树上第5层的结点数最多是______。
A.8
B.16
C.32
D.15
62.有以下程序:
程序运行后的输出结果是()。、
A.ABEFB.CDEFC.ABCDD.CDAB
63.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。
A.提高耦合性降低内聚性有利于提高模块的独立性
B.降低耦合性提高内聚性有利于提高模块的独立性
C.耦合性是指-个模块内部各个元素间彼此结合的紧密程度
D.内聚性是指模块间互相连接的紧密程度
64.
65.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
66.有以下程序:
程序的运行结果是()。
A.1,2,3,4,B.1,0,7,0,C.1,4,5,9,D.3,4,8,10,
67.
68.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错
69.
70.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
71.有以下程序
72.下列对于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
73.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)
74.
75.
76.以下程序中函数f的功能是:当na9为1时,进行由小到大排序;当na9为0时,进行由大到小排序。
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
77.
78.
79.以下叙述中错误的是()。
A.C程序对预处理命令行的处理是在程序执行的过程中进行的
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.在程序中凡是以“#”开始的语句行都是预处理命令行
80.有以下程序
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出m以内最大的6个能被7或11整除的自然数之和。m的值由主函数传人。例如,若m的值为600,则函数的值为3515。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。
注意:部分源程序给出如下。
请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
参考答案
1.C
2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
3.C解析:函数slzeof(a)的功能是求出字符串a中的字符占用存储空间的大小,由于字符数组a有长度为7,所以i=7;函数strlen(a)的功能是:求出字符串a的长度。而每个字符串都以'\\0'为字符串的结束标记,所以j的值等于2。
4.CC)【解析】白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。
5.A全局变量的作用域是从声明处到文件的结束。故本题答案为A选项。
6.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
7.D
8.D解析:'\\\\'是反斜线转义字符;'\\t'是水平跳格转义字符;'\\n'是换行转义字符;C语言中没有规定'088'为转义字符。
9.D函数原型“fread(void*buffer,sizetsize,sizetcount,FILE*stream)”的功能是从一个文件流中读数据,读取count个元素,每个元素size字节。如果调用成功,返回count。buffer用于接收数据的内存地址,大小至少是size*count字节;size是单个元素的大小,单位是字节;count是元素的个数,每个元素是size字节;stream是输入流。故本题答案为D选项。
10.A当X为1时,执行case1,a自加等于1,因为case1后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。
11.A
12.C
13.B由题意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商会员体系发展与月度计划
- 公司治理结构中的利益分配与资本市场反应-全面剖析
- 2025年航空运输安全生产培训计划
- 第二学期幼儿园小班文化交流户外活动计划
- 旅游会展行业竞争态势分析-全面剖析
- 八年级语文教学计划与社会实践活动
- 数据驱动的数字贸易代理模式创新研究-全面剖析
- 信息检索中的词汇选择优化-全面剖析
- 医疗设备采购投标管理流程
- 学前教育机构疫情防控应急预案及处理流程
- 【典型案例】马头琴的传说
- 2022年全国交通运输行业城市轨道交通列车司机职业技能大赛参考题库
- 3d3s门式钢架 入门教程
- 储能技术-氢储能
- 《看看我们的地球》阅读测试题及答案
- 2023年中央宣传部直属单位招考聘用88人模拟预测试卷【共500题含答案解析】
- 锅炉炉管“四管泄漏”的原因
- 胃结石护理查房课件
- GB/T 18337.1-2001生态公益林建设导则
- 院感手卫生培训课件
- (山东科技大学)PTA数据结构答案与解析-363
评论
0/150
提交评论