版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年浙江省舟山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()
A.7B.8C.9D.10
2.线性表是具有n个()的有限序列。
A.表元素B.字符C.数据元素D.数据项
3.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上三种描述都不对
4.有以下程序:
程序运行后的输出结果是()。A.4284B.2870C.2668D.3981
5.设x,y,t均为int型变量,执行语句:
x=y=3;
t=++x||++y;
完成后,y的值为A.A.不确定B.4C.3D.1
6.
7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表
8.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
9.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
10.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
11.按照“先进后出”原则组织数据的结构是()。
A.队列B.栈C.双向链表D.二叉树
12.在具有101个元素的顺序表中查找值为x的元素结点时,平均比较元素的次数为()。
A.50B.51C.100D.101
13.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
14.以下叙述中正确的是()。
A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节
B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C.指针变量的赋值操作“p=0;”是非法的
D.通过指针变量存取某个变量值的方式称为“直接存取”方式
15.下述哪一条是顺序存储结构的优点()。
A.插入运算方便B.可方便地用于各种逻辑结构的存储表示C.存储密度大D.删除运算方便
16.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。
A.先序遍历B.中序遍历C.后序遍历D.按层遍历
17.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
18.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。
A.floatB.charC.intD.double
19.
20.程序设计的任务包括()。
A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确
二、2.填空题(20题)21.软件工程研究的内容主要包括:【】技术和软件工程管理。
22.对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试和动态测试。代码检查属于______测试。
23.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。
24.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
25.若有如下定义,doublea[100];,则a数组元素的下标上限是【】。
26.()的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。
27.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
28.软件开发环境是全面支持软件开发全过程的______的集合。
29.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是【】。
30.子程序通常分为两类:【】和函数,前者是命令的抽象,后者是为了求值。
31.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
32.下列程序的运行结果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==O‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
33.下列语句的输出结果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
34.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。
35.在面向对象方法中,属性与操作相似的一组对象称为【】。
36.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
37.以下程序的运行结果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:case2:return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
38.在数据流图的类型中有两种类型,它们是变换型和()。
39.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next=′\0;return(ph);}
main()
{structlist*head;head=creatlist();}
40.以下程序调用invert函数按逆序重新放置a数组元素的值。a数组中的值在main函数中读入。
#include<stdio.h>
#defineN10
invert(s,i,j)
int*s,i,j;
{intt;
if(i<j)
{t=*(s+i);
*(s+i)=(s+j);
*(s+j)=t;
invert(s,【】,j-1);
}
}
main()
{
inta[N],i;
for(i=0;i<N;i++)scanf("%d",a+【】);
invert(a,0,N-1);
for(i=0,i<N;i++)printf("%d",a[i]);
printf("\n")
}
三、1.选择题(20题)41.以下不能正确计算代数式sin2()值的C语言表达式是()。
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
42.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
43.下面语句的输出结果是______。printf("%d\n",strlen("\t\"065\xff\n"));
A.14B.8C.5D.输出项不合法,无正常输出
44.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china"};等价于charstr[]={"china"};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
45.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()
A.11B.19C.13D.20
46.请选出以下程序的输出结果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}
A.1234B.4321C.0D.4444
47.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4
48.以下对枚举类型名的定义中正确的是______。
A.enuma={one,two,three};
B.enuma{one=9,two=-1,three};
C.enuma={one","two","three"};
D.enuma{"one","two","three"};
49.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码
50.程序流程图中带有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
51.若有以下定义的语句structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){stmctstudent*p;p=stu;…}则以下不正确的引用是
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
52.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default,v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("vl=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
53.main()
{inta=4,b=5,c;
ifa<B)
{c=a*b;printf("%d,%d,%d\n",b,a,c);}
else
{c=b/a;printf("%d,%d,%d\n",b,a,c);}
}
A.4,5,12B.20C.5,4,20D.12
54.下列叙述中,正确的一条是()
A.语句"goto12;"是合法的
B.for(;;)语句相当于while(1)语句
C.if(表达式)语句中,表达式的类型只限于逻辑表达式
D.break语句可用于程序的任何地方,以终止程序的执行
55.已知i、j、k为整型变量,若从键盘输入1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
56.有以下程序:voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,ij);}}main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序运行后的输出结果是()。
A.1268B.8621C.8162D.8612
57.若有如下程序段;intx=3,y=4,z;floata=2.0;z=y%x/a;则执行后,z中的值是()
A.4B.3C.0D.0.5
58.以下4组用户定义标识符中,全部合法的一组是()A._mainencludesin
B.If-maxturbo
C.txtREAL3COM
D.intk_2_001
59.下列叙述中正确的是()。
A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征
B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征
C.白箱(盒)测试不考虑程序内部的逻辑结构
D.上述三种说法都不对
60.若有以下定义语句:char*sl="12345",*s2="1234";printf("%d"n",strlen(strcpy(s1,s2)));则输出结果是()
A.4B.5C.9D.10
四、选择题(20题)61.
62.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。A.A.c=(c-'A')%26+'A'
B.c=c+32
C.c=c-'A'+'A'
D.c=('A'+C)%26-'a'
63.下列字符串不属于标识符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
64.有以下程序
#include<string.h>
main()
{FILE*fp;
inti,k,n;
fp=fopen("data.dat","w+");
for(i=4;i<9;i++)
{fprintf(fp,"%d",i);
if(i%3==0)fprintf(fp,"\n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
fclose(fp);
}
程序的运行结果是
A.00B.45
C.4578D.45678
65.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
66.
67.
68.有以下程序:
程序运行后的输出结果是()。
A.2B.4C.6D.8
69.有以下程序:
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,1,
D.0,1,2,3,4,5,6,7,8,9,
70.以下关于宏的叙述中正确的是()。
A.宏替换没有数据类型限制
B.宏定义必须位于源程序中所有语句之前
C.宏名必须用大写字母表示
D.宏调用比函数调用耗费时间
71.
72.(71)算法分析的目的是______。
A.找出数据结构的合理性
B.分析算法的效率以求改进
C.分析算法的易懂性和可靠性
D.找出算法中输入和输出之间的关系
73.以下只有在使用时才为该类型变量分配内存的存储类型说明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
74.(69)单个用户使用的数据视图的描述称为()
A.外模式
B.概念模式
C.内模式
D.存储模式
75.
有以下程序.
#include<stdio.h>
main
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar;c6=getchar;
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第l列开始)
123<回车>
45678<回车>
则输出结果是()。
A.1267B.1256C.1278D.1245
76.下面程序的功能是输出以下形式的金字塔图案。
main()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf("");
for(j=1;j<=______;j++)
printf("*");
printf("\n");
}
}
在下画线处应填入的是
A.iB.2*i-1C.2*i+1D.i+2
77.有如下说明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
78.以下选项中不属于c语言的类型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
79.
80.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
参考答案
1.BB)【解析】在具有11个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。
2.A
3.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。
4.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。
5.Ct=++x或++y,当++x不为0的时候,即++x为真,则不需要再继续判断++y,那么y就不再执行自加,因此y=3.
6.C
7.D
8.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
9.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。
①有且仅有一个特定的称为根的结点。
②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。
因此,本题的正确答案有且只有一个。
10.B解析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。
11.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。
12.B
13.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
14.B指针自增或自减1,移动的字节数与指针变量的基类型有关,假设指针变量p基类型为int类型,那么“p=p+1”表示指针P移动4个字节(通常int类型占4个字节),选项A错误;指针变量具有基类型,基类型不同的指针变量不能直接相互赋值,选项B正确;将0赋给指针变量,表示指针变量的值为空,这是合法的,选项C错误;通过指针变量存储指向变量的地址并通过指针存取变量的值,称为“间接存取”方式,选项D错误。故本题答案为B选项。
15.C
16.A
17.B解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受—个字符(回车符也算是—个字符),所以getchar()不能用宋读入字符串。scanf()函数要求按—定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为—个字符,也就无法读入空格字符。函数gets()的作用是从终端输入—个字符串\u3000(包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。
18.D
19.B
20.D程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项A)、B)、c)等方面。
21.软件开发
22.静态静态解析:静态测试包括代码检查、静态结构分析,代码质量度量等。静态测试不实际运行软件。
23.1对多(或1:N)1对多(或1:N)
24.调试调试
25.9999解析:数组的下标是从0开始存放数据的,而不是1,当数组大小为n时,其下标从0开始,到n-1,所以本题的答案为99。
26.数据库概念设计数据库概念设计解析:数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。
27.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。
28.软件工具软件工具解析:软件开发环境是各类软件开发工具的集合体。
29.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)×3=3,f(3,5)返回值为(5-3)×3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)×3=9。因此d被赋值为9;所以输出9。
30.过程过程
31.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。
32.本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1=24。\r\n\r\n
33.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。
34.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
35.类类解析:在面向对象方法中,类描述的是具有相似性质的一组对象。所以,属性与操作相似的一组对象称为类。
36.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
37.k=5k=5解析:由题可知fib(0)的值为0,fib(1)和fib(2)的值为1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。
38.事务型事务型解析:典型的数据流类型有两种:变换型和事务型。
39.p->dataqp->data,q解析:本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。
40.i+1i
41.A解析:A中sin(1/2)是0,因为1和2都是整数,“/”在这里是整除。
42.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。
43.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。
44.C解析:选项A)char*a;*a=“china”应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。
45.B解析:C语言规定,数组元素的下标是从零开始的.本题首先定义了一个二维数组aa并按行赋初值,定义了一个变量s用于求和。for循环执行4次分别把数组元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到变量s中,s的值为19,所以最后输出的s的值为19.所以4个选项中B正确。
46.C解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。
47.A解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?c:d),首先求出条件表达式c<d?c:d的值等于2,再求条件表达式a<b?a:2的值,由于a-1<b-4成立,所以上述条件表达式的值等于1。
48.B解析:声明枚举类型用enum开头。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);说明:1、在C编译中,对枚举元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个枚举变量。
49.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。
50.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;
表示逻辑条件。
51.D
52.C解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。
53.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。
54.B
55.C解析:使用scanf()函数时,要求除格式控制符以外的字符都要原样输入,“,”为非格式符,要原样输入。选项A,输入格式描述为“%2d%2d%2d”,意思是输入一个长度为6的数字串,scanf()将每两个为一组读入3个变量中,不满足键盘输入1,2,3的条件,故A错误;选项B中,输入格式描述符为“%d%d%d”,输入要用空格隔开,故错误;选项D中,输入格式描述符为“i=%d,j=%d,k=%d”,应该从键盘输入i=1,j=2,k=3,才能使得i,j,k的值为1,2,3,故选项D错误。4个选项中C正确。
56.C解析:函数fun()中用了—个if语句,当数组下标i小于数组下标j时,交换数组元素a[i]和a[j]的值,并使i值加1,j值减1。其功能就是把数组a中从下标i到j的元素首尾互换。主函数中定义一个数组,在定义该数组的时候缺省了定义长度,定义的同时将其初始化赋值,所以该数组的长度为初始化该数组时的元素的个数即4,接着调用fun(a,0,3),其中将a数组的第一个元素的下标0和最后一个元素的下标3传给了函数fun(),故执行完该函数后,数组a中的元素首尾互换,因此最后依次输出的数组a中值为8,1,6和2,所以,4个选项中选项C符合题意。
57.C
58.A解析:标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM不是由字母或下划线开头,故选项C不正确;选项D中int为C语言中的关键字,故选项D不正确;选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。
59.A解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例,选项A是正确的,选项B错误。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,选项C错误。正确答案为A。
60.A
61.D
62.B根据ASCII码可知大写字符A与小写字符a的ASCIl码相差32,而D中应该是加上'a',选项A和C左侧的表达式都是大写字符C与大写字符A的差与'a'的ASCIl代码的和就是小写字符c的ASCII代码。
63.D
64.D本题主要考查文件的操作。在程序中,首先定义了一个文件类的指针变量fp,然后定义了三个整型变量,接着以可读/写的形式打开文件data.dat,最后执行for循环:
当i=4时,将变量i的值格式化输出到fp指向的文件中,即为4,然后判断i%3是否为0,如果是,则输出换行符,否则不执行其他操作。
当i=5时,那么输出到文件中的值为5,同样,输出6并输出换行符,接着输出7和8到文件中。循环结束,此时文件中的内容为456<换行>78。
执行rewind(fp);语句,这个语句的作用是将文件的位置指针返回到文件的开头,然后用该文件的内容分别给变量k和n赋值,赋值的过程中,碰到换行符表示一个赋值的结束,因此,赋值后,两变量的结果分别是456和78。因此,最后的输出结果是45678。
65.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。
66.A
67.B
68.D本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。
69.A函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组c中的元素的值并没有变化,选择A。
70.A宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,因此c)选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D)选项错误。
71.C
72.B
73.B在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。
74.A
75.D
\nscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。
\n
76.B本题是找出打印*号的条件,从图中我们可以找到规律,第1行1个*,第2行3个,第3行5个……,也就是每行中*的个数恰好是行数的2倍减1个。
在程序中,首先定义两个循环变量,然后执行for循环,从程序中不难看出,这个循环用来输出题目中给出的4行*符号。
当循环变量i=1时,即输出第一行的*图像,从图像中可以看出,第一行只需要输出一个*符号,而且在其输出前,先输出三个空格,从程序中我们可以看出,该循环体中第一个循环的作用用来输出三个空格,第二个循环的作用肯定是用来输出*符号,本题需要填空的地方正好是这个循环的结束条件,根据第一行只输出一个*符号,我们可以知道这个循环执行一次。
同理,我们可以知道,当循环变量i=2时,这个循环需要执行3次,i=3时,这个循环执行5次,i=4时,这个循环执行7次,那么我们可以推断出循环结束的条件应该与变量i有关,结合我们开始对题目的分析,每行中*的个数恰好是行数的2倍减1个,因此,可以知道本题需要填写的内容为2*i-1,本题正确答案选B。
77.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)来表示。
78.Bc语言中整型变量分为4种,基本型int,短整型shortint,长整型longint和无符号型(unsignedint、un-signedshort、unsignedlong)。因此B)选项不属于c语言的类型。
79.D
80.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。
81.(1)错误:t=0;
正确:*t=0;
(2)错误:if(d%2==0)
正确:if(d%2!=O)或if(d%2==1)
【解析】变量t定义为指针型变量,所以不能对t赋初值,不应该是t=0,而是*t=0;题目要求将长整型数中各位上为奇数的数依次取出,因此if语句里应该是d%2!=0。此题较简单,考查的是指针变量作为函数参数和奇偶的判断。
82.1voidfun(intx,intpp[],int*n)2{3inti,j=0;4for(i=l;i<=x;i=i+2)/*i的初值为1,步长为2,确保i为奇数*/5if(x%i==0)/*将能整除x的数存入数组pp中*/6pp[j++]=i;7*n=j;/*传回满足条件的数的个数*/8}本题考查:偶数的判定方法;整除的实现。本题题干信息:能整除X且不是偶数的所有整数。循环语句中变量i从1开始且每次递增2,所以i始终是奇数。将能整除x的i值存放到数组PP中,整除采用求余运算符“%”,即“x%i==0”。最后将数据元素个数j保存到n中。2022年浙江省舟山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()
A.7B.8C.9D.10
2.线性表是具有n个()的有限序列。
A.表元素B.字符C.数据元素D.数据项
3.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上三种描述都不对
4.有以下程序:
程序运行后的输出结果是()。A.4284B.2870C.2668D.3981
5.设x,y,t均为int型变量,执行语句:
x=y=3;
t=++x||++y;
完成后,y的值为A.A.不确定B.4C.3D.1
6.
7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用()存储方式最节省运算时间。
A.单链表B.给出表头指针的单循环链表C.双链表D.带头结点的双循环链表
8.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
9.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
10.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
11.按照“先进后出”原则组织数据的结构是()。
A.队列B.栈C.双向链表D.二叉树
12.在具有101个元素的顺序表中查找值为x的元素结点时,平均比较元素的次数为()。
A.50B.51C.100D.101
13.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
14.以下叙述中正确的是()。
A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节
B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C.指针变量的赋值操作“p=0;”是非法的
D.通过指针变量存取某个变量值的方式称为“直接存取”方式
15.下述哪一条是顺序存储结构的优点()。
A.插入运算方便B.可方便地用于各种逻辑结构的存储表示C.存储密度大D.删除运算方便
16.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。
A.先序遍历B.中序遍历C.后序遍历D.按层遍历
17.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
18.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。
A.floatB.charC.intD.double
19.
20.程序设计的任务包括()。
A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确
二、2.填空题(20题)21.软件工程研究的内容主要包括:【】技术和软件工程管理。
22.对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试和动态测试。代码检查属于______测试。
23.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于______的联系。
24.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
25.若有如下定义,doublea[100];,则a数组元素的下标上限是【】。
26.()的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。
27.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
28.软件开发环境是全面支持软件开发全过程的______的集合。
29.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是【】。
30.子程序通常分为两类:【】和函数,前者是命令的抽象,后者是为了求值。
31.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
32.下列程序的运行结果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==O‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
33.下列语句的输出结果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
34.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。
35.在面向对象方法中,属性与操作相似的一组对象称为【】。
36.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
37.以下程序的运行结果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:case2:return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
38.在数据流图的类型中有两种类型,它们是变换型和()。
39.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next=′\0;return(ph);}
main()
{structlist*head;head=creatlist();}
40.以下程序调用invert函数按逆序重新放置a数组元素的值。a数组中的值在main函数中读入。
#include<stdio.h>
#defineN10
invert(s,i,j)
int*s,i,j;
{intt;
if(i<j)
{t=*(s+i);
*(s+i)=(s+j);
*(s+j)=t;
invert(s,【】,j-1);
}
}
main()
{
inta[N],i;
for(i=0;i<N;i++)scanf("%d",a+【】);
invert(a,0,N-1);
for(i=0,i<N;i++)printf("%d",a[i]);
printf("\n")
}
三、1.选择题(20题)41.以下不能正确计算代数式sin2()值的C语言表达式是()。
A.1/3*sin(1/2)*sin(1/2)
B.sin(0.5)*sin(0.5)/3
C.pow(sin(0.5),2)/3
D.1/3.0*pow(sin(1.0/2),2)
42.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则
A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次
43.下面语句的输出结果是______。printf("%d\n",strlen("\t\"065\xff\n"));
A.14B.8C.5D.输出项不合法,无正常输出
44.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china"};等价于charstr[]={"china"};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
45.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()
A.11B.19C.13D.20
46.请选出以下程序的输出结果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}
A.1234B.4321C.0D.4444
47.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4
48.以下对枚举类型名的定义中正确的是______。
A.enuma={one,two,three};
B.enuma{one=9,two=-1,three};
C.enuma={one","two","three"};
D.enuma{"one","two","three"};
49.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码
50.程序流程图中带有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
51.若有以下定义的语句structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){stmctstudent*p;p=stu;…}则以下不正确的引用是
A.(p++)->numB.p++C.(*p).numD.P=&stu.age.
52.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default,v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("vl=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
53.main()
{inta=4,b=5,c;
ifa<B)
{c=a*b;printf("%d,%d,%d\n",b,a,c);}
else
{c=b/a;printf("%d,%d,%d\n",b,a,c);}
}
A.4,5,12B.20C.5,4,20D.12
54.下列叙述中,正确的一条是()
A.语句"goto12;"是合法的
B.for(;;)语句相当于while(1)语句
C.if(表达式)语句中,表达式的类型只限于逻辑表达式
D.break语句可用于程序的任何地方,以终止程序的执行
55.已知i、j、k为整型变量,若从键盘输入1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。
A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
56.有以下程序:voidfun(int*a,inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j--;fun(a,ij);}}main(){intx[]={2,6,1,8},i;fun(x,0,3);for(i=0;i<4;i++)printf("%2d",x[i]);printf("\"n);}程序运行后的输出结果是()。
A.1268B.8621C.8162D.8612
57.若有如下程序段;intx=3,y=4,z;floata=2.0;z=y%x/a;则执行后,z中的值是()
A.4B.3C.0D.0.5
58.以下4组用户定义标识符中,全部合法的一组是()A._mainencludesin
B.If-maxturbo
C.txtREAL3COM
D.intk_2_001
59.下列叙述中正确的是()。
A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征
B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征
C.白箱(盒)测试不考虑程序内部的逻辑结构
D.上述三种说法都不对
60.若有以下定义语句:char*sl="12345",*s2="1234";printf("%d"n",strlen(strcpy(s1,s2)));则输出结果是()
A.4B.5C.9D.10
四、选择题(20题)61.
62.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。A.A.c=(c-'A')%26+'A'
B.c=c+32
C.c=c-'A'+'A'
D.c=('A'+C)%26-'a'
63.下列字符串不属于标识符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
64.有以下程序
#include<string.h>
main()
{FILE*fp;
inti,k,n;
fp=fopen("data.dat","w+");
for(i=4;i<9;i++)
{fprintf(fp,"%d",i);
if(i%3==0)fprintf(fp,"\n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
fclose(fp);
}
程序的运行结果是
A.00B.45
C.4578D.45678
65.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
66.
67.
68.有以下程序:
程序运行后的输出结果是()。
A.2B.4C.6D.8
69.有以下程序:
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,1,
D.0,1,2,3,4,5,6,7,8,9,
70.以下关于宏的叙述中正确的是()。
A.宏替换没有数据类型限制
B.宏定义必须位于源程序中所有语句之前
C.宏名必须用大写字母表示
D.宏调用比函数调用耗费时间
71.
72.(71)算法分析的目的是______。
A.找出数据结构的合理性
B.分析算法的效率以求改进
C.分析算法的易懂性和可靠性
D.找出算法中输入和输出之间的关系
73.以下只有在使用时才为该类型变量分配内存的存储类型说明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
74.(69)单个用户使用的数据视图的描述称为()
A.外模式
B.概念模式
C.内模式
D.存储模式
75.
有以下程序.
#include<stdio.h>
main
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar;c6=getchar;
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第l列开始)
123<回车>
45678<回车>
则输出结果是()。
A.1267B.1256C.1278D.1245
76.下面程序的功能是输出以下形式的金字塔图案。
main()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf("");
for(j=1;j<=______;j++)
printf("*");
printf("\n");
}
}
在下画线处应填入的是
A.iB.2*i-1C.2*i+1D.i+2
77.有如下说明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
78.以下选项中不属于c语言的类型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
79.
80.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:
参考答案
1.BB)【解析】在具有11个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。
2.A
3.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。
4.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。
5.Ct=++x或++y,当++x不为0的时候,即++x为真,则不需要再继续判断++y,那么y就不再执行自加,因此y=3.
6.C
7.D
8.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校党建共建创新发展方案
- 线上教育绿色学习方案
- 可再生能源灌封机清洁验证方案
- 实验室机器人市场发展预测和趋势分析
- 婴儿头部支撑垫产业规划专项研究报告
- 各类乐器在课堂中的应用方案
- 印刷的票产业规划专项研究报告
- 2024年山东省高考地理试卷真题(含答案逐题解析)
- 海洋石油平台燃气安全应急方案
- 外墙干挂石材施工监理方案
- 机房网络设备整体搬迁实施项目解决方案
- 军事理论(上海财经大学版)学习通超星期末考试答案章节答案2024年
- TBIA 7-2022 骨科疾病诊疗数据集-机器人辅助全膝关节置换
- 2024至2030年中国医疗卫生行业分析及发展预测报告
- 凤兮凰兮(2022年山东枣庄中考语文试卷记叙文阅读题及答案)
- 员工入职审批表
- 现代设施农业技术与应用考核试卷
- 电动飞机推进电机发展及关键技术综述
- 九年级化学上册 第2单元《课题2 氧气》教学设计 (新版)新人教版
- 部编二年级上册道德与法治全册教案(共16课)
- 山东滨盛文旅体育产业集团有限公司招聘笔试题库2024
评论
0/150
提交评论