版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年云南省丽江市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
2.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)
B.(x=6,x+1,y=6,x+y)
C.(x=y=6,x+y,y+1)
D.(y=6,y+1,x=y,x+1)
3.以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序错误
4.设intx=7,则~x的值是()。
A.-8B.7C.-1D.1
5.在结构化程序设计中,模块划分的原则是()。
A.各模块应包括尽量多的功能
B.各模块的规模应尽量大
C.各模块之间的联系应尽量紧密
D.模块内具有高内聚度,模块间具有低耦合度
6.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的输出结果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930
7.
8.C语言提供的合法关键字是()
A.switchB.cherC.caseD.default
9.合法的数组定义是()
A.inta[]="string";
B.inta[5]={0,1,2,3,4,5};
C.chara="string";
D.chara={0,1,2,3,4,5};
10.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
执行后的输出结果是
A.5B.24C.32D.40
11.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。
A.34B.42C.43D.33
12.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)
B.在第i个结点之后插入一个新结点(1<=i<=n)
C.删除第i个结点(1<=i<=n)
D.将n个结点从小到大排序
13.若有定义“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
14.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.c语言中的文件是流式文件,因此只能顺序存取数据
15.在Internet中,域名服务器的主要功能是实现()的转换。
A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问
16.
17.设单链表中结点的结构为已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作______。A.s->link=p;p->link=s;
B.s->link=p->link;p->link=s;
C.s->link=p->link;p=s;
D.p->link=s;s->link=p;
18.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是()
A.F,H,C,D,P,A,M,Q,R,S,Y,X
B.P,A,C,S,Q,D,F,X,R,H,M,Y
C.A,D,C,R,F,Q,M,S,Y,P,H,X
D.H,C,Q,P,A,M,S,R,D,F,X,Y
19.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的运行结果是()。
A.abcB.28cC.abc28D.因类型不一致而出错
20.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
二、2.填空题(20题)21.若有定义:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},则初始化后,a[2][2]得到的初值是______。
22.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
23.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"
24.【】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。
25.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。
26.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
27.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。
28.函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请补全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
29.以下程序运行后的输出结果是【】。
structNODE
{
intnum;
stmctNODE*next;
};
main()
{structNODEs[3]={{1,'\0'),{2,'\0'),{3,'\0'}),*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s
q=p->next;
r=q->next;
sum+=q->next->num;
sum+=r->next->next->num;
printf("%d\n",sum);
}
30.以下程序运行后的输出结果是【】。
main()
{intp[7]{11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
31.以下程序的输出结果是【】。
#include<stdio.h>
main()
{structstru
{inta;
floatb;
chard[4];
};
printf("%d\n",sizeof(structstru));}
32.深度为5的满二叉树中,叶子结点的个数为______。
33.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
m+=i*f;
f=【】;
returnm;
}
main()
{printf("m=%d\n",【】);}
34.数据流图的类型有【】和事务型。
35.【】是数据库设计的核心。
36.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。
37.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%\n",p+9);
}
38.软件测试的方法有动态测试、静态测试和【】13种。
39.以下程序的功能是:从键盘上输入若干学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。填空。
main()
{floatx[1000],sum,=0.0,avea;
intn=0,i;
printf("Entermark:"\n");scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+=【】;x[n]=【】;
n++;scanf("%f",&a);
}
ave=【】;
printf("Output:"\n");
printf("ave=%f"\n",ave);
for(i=0,i<n;i++)
if(【】)frintf("%f\n",x[i]);
}
40.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
三、1.选择题(20题)41.程序设计语言的基本成分是数据成分、运算成分、控制成分和()。
A.对象成分B.变量成分C.语句成分D.传输成分
42.若有以下定义语句:doublea[5],*p=a;inti=0;对a数组元素错误的引用是()
A.a[i]B.a[5]C.p[4]D.p[i]
43.若有以下定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是()
A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p
44.有以下程序voidfun(int*a,inti,intj){int;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){inta[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i<6;i++)printf("%d",a[i]);}执行后输出结果是
A.654321B.432156C.456123D.123456
45.以下叙述中错误的是()。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值.
D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
46.执行以下程序段的输出结果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);
A.0X0B.0X12C.0x0D.0
47.设有变量说明int(*p)[m],其中的标识符p是()。
A.m个指向整型变量的指针
B.指向m个整型变量的指针
C.一个指向具有m个整型元素的一维数组的指针
D.具有m个指针元素的一维指针数组,每个元素都指向整型变量
48.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
49.有以下程序:intf(intb[][4]){inti,j,s=0;for(j=0j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}执行后的输出结果是()。
A.12B.11C.18D.16
50.以下选项中与if(a==1)a++;elsea=b;语句功能不同的语句是()。
A.switch(A){ease0:a=b;break;default:a++;}
B.switch(a==1){case0:a++:default:a=b;}
C.switch(A){default:a=b;break;case1:a++;}
D.a=(a==1)?(a++):b
51.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。
A.运行后报错B.66C.611D.510
52.若有以下定义和语句:()ints[4][5](*ps)[5];ps=s;则对s数组元素的正确引用形式是
A.psq+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3
53.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。
A.125B.n/2C.nD.n+1
54.以下程序的输出结果是()。#include<stdio.h>main(){intk=17;printf("%d,%o,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11
55.以下4个选项中,不能看作一条语句的是
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
56.下列是用户自定义标识符的是
A._w1B.3_xyC.intD.LINE-3
57.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
58.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系
59.为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else配对原则是______。
A.else子句与缩排位置相同的if配对
B.else子句与其之前最近的未被配对的if配对
C.else子句与其之后最近的if配对
D.else子句与同一行上的if配对
60.下列叙述中正确的是()。
A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息
B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节
C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则
D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
四、选择题(20题)61.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。
A.\bB.\tC.\vD.\f
62.如果要在表单中创建一个普通文本框,下列标记中正确的是()。
A.<inputtype=”text”>
B.<inputtype=”password”>
C.<inputtype=”CheCkbox”>
D.<inputtype=”radio”>
63.算法分析的目的是()。
A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进
64.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L
65.一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是()。
A.—对一B.—对多C.多对多D.多对一
66.
67.有以下程序
main()
{
intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是
A.3B.2
C.1D.0
68.
69.若输入“abcdef”“abdef”,下述程序的输出结果为()。#include#includemain{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.A.-1B.0C."abcdef"D."abdef"
70.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。
A.笛卡儿积B.交C.并D.自然连接
71.有以下程序:
程序运行后的输出结果是()。
A.1.1.3B.2,2,3C.1,2,3D.3,3,3
72.
73.
74.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1
75.
76.
77.
78.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程
B.软件从需求分析、设计、实现到测试完成的过程
C.软件的开发过程
D.软件的运行维护过程
79.
若变量已正确定义,有以下程序段
i—o;
doprintf("%d,",i);while(i++);
printf("%d",i)
其输出结果是()。
A.0,0B.0,1C.1,1D.程序进入无限循环
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidproc(char*str,chart[])
{
}
voidmain
{
charstr[100],t[100];
system("CLS");
printf("\nPleaseenterstringstr:");
scanf("%S",str);
proc(str,t);
printf("\nTheresultiS:%s\n",t);
参考答案
1.B通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-C)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w[i][j]等价于(w[i][j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i)[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w[i][j]。选项A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正确的。选项B小,因为[]运算符的优先级高于*运算符,所以*(w+1)[4]等价于*((w+1)[4]等价于*(*((w+1)+4)),即*(*(w+5)+0),它等价于w[5][0],很明显它超过数组的范围了,故不正确。选项C等价于w[1][0],是下确的。选项D中,&w[0][0]是数组w第1个元素的地址,它等价于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以个数,然后再除以这个数一样。所以,&w[0][0]等价于*(w+0)+0。即*w。所以原式就变为*(*w+1)等价于w[0][1],这个也是合法的。综上所述,本题应该选择B。
2.B本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2。其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n。它的值为表达式n的值。
3.A解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过mailoc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。
4.A本题主要考查按位求反运算和C语言正负数的表示,“O”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个l代表负数,值为8。
5.D解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:
(1)改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。
(2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。
(3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点:如果模块的功能过分的局限,使用范围就过分狭窄。
经过上述分析,本题的正确答案是选项D。
6.A解析:在printf函数常用的格式说明中,每个格式说明都必须用“%”开头,以—个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。本题中用到了d和f,d代表输出符号的十进制整型数,f代表以带小数点的数学形式输出浮点数(单精度和双精度数)。对于float和double类型的实数,可以用“n1.n2”的形式来指定输出宽度(n1和n2分别代表—个整常数),其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,由于输出格式是以紧凑格式输出,因此选项A是正确的。
7.B
8.C
9.D
10.C解析:当for循环执行到第30次时,i的值为30能被5整除,然后继续执行两次if语句,i经过两次自加1运算,值变为32,能被8整除,故此时第一次执行'printf('%d',i);'语句,即输出32。
11.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。
12.A
13.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。
14.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。
15.B在Internet中,把域名翻译为IP地址的软件称为域名系统DNS,运行域名系统的主机称为域名服务器。域名服务器的主要功能是实现入网主机名字和IP地址的转换。
16.D
17.B
18.D
19.Cfprintf函数将内容写入硬盘的文件,fputs函数将字符串写入文件,最终文件的内容为abc28。故本题答案为C选项。
20.B解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受—个字符(回车符也算是—个字符),所以getchar()不能用宋读入字符串。scanf()函数要求按—定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为—个字符,也就无法读入空格字符。函数gets()的作用是从终端输入—个字符串\u3000(包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。
21.88解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a(0][1]、a[0][2]、a[0][3]
22.19
23.SET单价=单价*1.05SET单价=单价*1.05解析:更新表中元组的值,使用UPDATE命令,一次可以更新表中的一个或多个属性值。UPDATE短语之后指定更新数据所属的表,将新的属性值或表达式赋值给对应的属性名(SET单价=单价*1.05),并置于SET短语之后。要求对人民邮电出版社的图书涨5%,需要用WHERE短语对元组进行限制,即对符合条件的元组进行更新。
24.封装封装解析:面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。
25.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。
26.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
27.p+=2*(p++)p+=2,*(p++)解析:由题可知a[2]=3,因此只要使指针p指向a[3],然后再引用指针的值就可以了。
28.-1或-1.0*sn-1或-1.0\r\n*sn解析:由于在对S求和时,相邻两项的符号刚好相反,而在函数fun中没有对数据进行取反的操作,故第—空的目的是对数据进行取反,以保证序列中相邻两项的符号不同。故第—个应填-1或-1.0。在执行完循环体后,要将求和结果通过指针参数的形式传递绐调用fun的函数,故第二空应填*sn。
29.55解析:主函数首先声明了一个结点数组s[3],并分别初始化其成员num为1、2、3,而成员next全部被初始化为'\\0'也就是0。下面又用三条语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分别将三个结点指向其后面一个结点,而最后一个结点指向第1个结点,构造出一条单向循环链表。接下来用结点指针p=s即让其指向s[0],然后让q=p->next,即指向了s[1],r=q->next即让r指向s[2],然后让一个累计变量sum累加q->next->num和r->next->next->nm,因为q指向s[1]所以它的next指针指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故第2次累加的是s[1].num=2。所以程序最终输出结果为5。
30.2424解析:本题主函数中首先定义了一个长度为7的数组,然后用一个while循环引用数组的元素,当i大于7或者p[i]为偶数时,循环结束。显然当i=2时,p[2]=14为偶数时,循环结束,此时j的值为j=p[0]+p[1]=24。
31.14
32.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。
33.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:调用fun()函数计算m的值,在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函数的空格处应该填使f改变符号的语句,故应填-f或f*-1或-1*f或f*(-1)或(-1)*f。
34.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
35.数据模型数据模型
36.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(叶旨针变量名)()。注:“类型标识符”为函数返回值的类型。
37.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。
38.正确性测试正确性测试
39.aasum/n或sum/(float)n或sum/(double)nx[i]<sve或!(x[i]>=sve)或sve>x[i]a\r\na\r\nsum/n或sum/(float)n或sum/(double)n\r\nx[i]<sve或!(x[i]>=sve)或sve>x[i]
40.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。
41.D解析:程序设计语言是用于书写计算机程序的语言,其基本成分有以下4种,数据成分:用来描述程序中的数据。运算成分:描述程序中所需的运算。控制成分:用来构造程序的逻辑控制结构。传输成分:定义数据传输成分,如输入/输出语言。
42.B
43.A
44.A解析:函数fun()中有3个参数,参数。为一个指针变量,接收的实参可以是数组名,参数i和j分别表示数组元素的下标,当下标i小于下标j时,a[i]和a[j]交换,然后对自身进行调用,可见这是一个递归函数。其实现的功能是把数组a,从下标为i的元素到下标为j的元素之间的所有元素反序存放。在主函数中调用fun()函数,把a数组从a[0]到a[5]之间的所有元素反序存放,最后输出从a[1]到a[5]的值,因此输出的值为6、5、4、3、2、1。
45.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。
46.D解析:格式字符X或x是以十六进制无符号形式输出整型数(注:输出时不显示前导0x或0X)。
47.C解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。
48.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。
49.D解析:分析程序可知,函数f()中的for循环作用,是将数组前三行中的对角线上的元素,即b[0][0]、b[1][1]、b[2][2]和第一行的第四列元素即b[0][3]累加到变量s中,然后将s的值返回。在主函数中首先定义了一个4行4列的二维数组,接着通过输出语句输出函数f(a)的返回值。调用f(a)的返回值为a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。所以,4个选项中选项D符合题意。
50.B
51.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。
52.C
53.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。
54.D解析:printf函数对不同类型的数据用不同的格式描述符,“%d”是以带符号的十进制形式输出整数(正数不输出符号);“%o”以八进制无符号形式输出整数(不包括前导符0);“%x”以十六进制无符号形式输出整数(不包括前导符0x)。
55.D解析:选项D)为两条语句。
56.A本题主要考查标识符的定义。对标识符的定义是考试中常考的内容之一。标识符主要由数字、下画线和字母组成,其中数字不能放在首位,另外,用户自定义标识符时,不能将标识符定义为C语言中已定义的关键字,如int、while等。
根据上面对标识符的分析,我们不难看出本题的正确答案是A。在选项B中,3_xy以数字开头,不符合标识符定义的规定;在选项C中,int是C语言系统中已经定义了的关键字;在选项D中,LINE-3使用的数字、下画线和字母以外的字符,因此不正确。
57.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。
58.CC。【解析】数据库系统(DBS)由数据库(DBS)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台五个部分组成,可见DB和DBMS都是DBS的组成部分。
59.B
60.CC。【解析】在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。
61.C本题考查C语言转义字符的含义。我们归类了常用的转义字符及其含义,如下,根据这些不难选出正确答案
转义字符的意义:\n回车换行、\t横向跳到下一制表位置、\v竖向跳格、\b退格、\r回车、\f走纸换页、\\反斜线符、“\”\′单引号符、\\ddd1~3位八进制数所代表的字符、\xhh1~2位十六进制数所代表的字符。
62.A
63.D解析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度;提高算法的执行效。率。
64.D在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—个字母l(L的小写)或L;实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等;选项A中字母o不符合要求,选顶B中超出八进制的范围,选项C中e后面的不为整数,因此选顶D是正确的。
65.c因为一名工作人员可以操作多台计算机,而一台计算机又可以被多名工作人员使用,所以两个实体之间是多对多的关系,选择c)。
66.C
67.D&是“按位与”运算符,参加运算的两个运算量的相应位都为1,则该位的结果值为1,否则为0。~是“取反”运算符,用来对一个二进制数按位取反,即将0变1,1变0。本题x/y&~z,x/y的值为1,~z的值为0,所以进行&运算后,整个表达式的值为0。
68.A
69.A本题考查字符串比较函数strcmp(s1,s2),若s1>s2,则返回1;若s1=s2,则返回0;若s1<s2,则返回-1。字符串依次比较的是它们字符的ASCIl码值。
70.D自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据关系T中的有序组可知关系R与s进行的是自然连接操作,故本题答案为D)。
71.DmaUoc函数动态分配一个整型的内存空间,然后把函数返回的地址用(int{)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,b,c都指向刚申请的内存空间。所以只有最后一个赋值语句+C=3的值保留在了该空间内,因为a、b、C三个指针变量均指向该空间,所以打印该空间内的数值为3。
72.D
73.B
74.B解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。
75.B
76.B
77.A
78.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
79.B
\n本题中,变量i的初始值等于0,执行循环体中的语句后,输出i的值为0。while后面括号中表达式i++的值为0,循环结束。此时变量i自加1,所以再次“1”。
\n
80.A
81.(1)错误:t=1.0-1/i;
正确:t-=1.O/i;
(2)错误:;
正确:returnt;
【解析】从题目中的公式可知,整数rl每增加1,其结果为上一次的结果减1/i,因此,“t=1.0-1/i;”应改为“t-=1.0/i;”;由函数的定义可知,函数proc()要把最后所得到的结果返回给主函数,因此要在函数proc()最后加上“returnt;”。
82.voidproc(char*str。chart[3])
\n{
\ninti,j=0;
\nfor(i=0;str[i]!=\\O;i++)//从数组的第一个元素开始,到其最后一个
\n{if(i%2==0str[i]%21=o)//下标为偶数、同时ASCIl码值为奇数的字符
\nt[j++]=str[i];}//如果成立,则把它放到t数组中
\nt[i]=\\o;//字符串结束标志为\\0
\n}
\n【解析】题目中要求将字符串str中下标为偶数,同时ASCIl码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符其ASCIl码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。
\n2021年云南省丽江市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
2.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)
B.(x=6,x+1,y=6,x+y)
C.(x=y=6,x+y,y+1)
D.(y=6,y+1,x=y,x+1)
3.以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序错误
4.设intx=7,则~x的值是()。
A.-8B.7C.-1D.1
5.在结构化程序设计中,模块划分的原则是()。
A.各模块应包括尽量多的功能
B.各模块的规模应尽量大
C.各模块之间的联系应尽量紧密
D.模块内具有高内聚度,模块间具有低耦合度
6.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的输出结果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930
7.
8.C语言提供的合法关键字是()
A.switchB.cherC.caseD.default
9.合法的数组定义是()
A.inta[]="string";
B.inta[5]={0,1,2,3,4,5};
C.chara="string";
D.chara={0,1,2,3,4,5};
10.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
执行后的输出结果是
A.5B.24C.32D.40
11.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。
A.34B.42C.43D.33
12.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)
B.在第i个结点之后插入一个新结点(1<=i<=n)
C.删除第i个结点(1<=i<=n)
D.将n个结点从小到大排序
13.若有定义“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
14.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.c语言中的文件是流式文件,因此只能顺序存取数据
15.在Internet中,域名服务器的主要功能是实现()的转换。
A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问
16.
17.设单链表中结点的结构为已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作______。A.s->link=p;p->link=s;
B.s->link=p->link;p->link=s;
C.s->link=p->link;p=s;
D.p->link=s;s->link=p;
18.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是()
A.F,H,C,D,P,A,M,Q,R,S,Y,X
B.P,A,C,S,Q,D,F,X,R,H,M,Y
C.A,D,C,R,F,Q,M,S,Y,P,H,X
D.H,C,Q,P,A,M,S,R,D,F,X,Y
19.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的运行结果是()。
A.abcB.28cC.abc28D.因类型不一致而出错
20.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
二、2.填空题(20题)21.若有定义:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},则初始化后,a[2][2]得到的初值是______。
22.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
23.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"
24.【】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。
25.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。
26.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
27.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。
28.函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请补全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
29.以下程序运行后的输出结果是【】。
structNODE
{
intnum;
stmctNODE*next;
};
main()
{structNODEs[3]={{1,'\0'),{2,'\0'),{3,'\0'}),*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s
q=p->next;
r=q->next;
sum+=q->next->num;
sum+=r->next->next->num;
printf("%d\n",sum);
}
30.以下程序运行后的输出结果是【】。
main()
{intp[7]{11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
31.以下程序的输出结果是【】。
#include<stdio.h>
main()
{structstru
{inta;
floatb;
chard[4];
};
printf("%d\n",sizeof(structstru));}
32.深度为5的满二叉树中,叶子结点的个数为______。
33.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
m+=i*f;
f=【】;
returnm;
}
main()
{printf("m=%d\n",【】);}
34.数据流图的类型有【】和事务型。
35.【】是数据库设计的核心。
36.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。
37.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%\n",p+9);
}
38.软件测试的方法有动态测试、静态测试和【】13种。
39.以下程序的功能是:从键盘上输入若干学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。填空。
main()
{floatx[1000],sum,=0.0,avea;
intn=0,i;
printf("Entermark:"\n");scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+=【】;x[n]=【】;
n++;scanf("%f",&a);
}
ave=【】;
printf("Output:"\n");
printf("ave=%f"\n",ave);
for(i=0,i<n;i++)
if(【】)frintf("%f\n",x[i]);
}
40.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
三、1.选择题(20题)41.程序设计语言的基本成分是数据成分、运算成分、控制成分和()。
A.对象成分B.变量成分C.语句成分D.传输成分
42.若有以下定义语句:doublea[5],*p=a;inti=0;对a数组元素错误的引用是()
A.a[i]B.a[5]C.p[4]D.p[i]
43.若有以下定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是()
A.p+=2,*(pd++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p
44.有以下程序voidfun(int*a,inti,intj){int;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){inta[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i<6;i++)printf("%d",a[i]);}执行后输出结果是
A.654321B.432156C.456123D.123456
45.以下叙述中错误的是()。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值.
D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
46.执行以下程序段的输出结果是()。intm=0x12,n=0x12;m=m-n;printf("%X\n",m);
A.0X0B.0X12C.0x0D.0
47.设有变量说明int(*p)[m],其中的标识符p是()。
A.m个指向整型变量的指针
B.指向m个整型变量的指针
C.一个指向具有m个整型元素的一维数组的指针
D.具有m个指针元素的一维指针数组,每个元素都指向整型变量
48.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
49.有以下程序:intf(intb[][4]){inti,j,s=0;for(j=0j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}执行后的输出结果是()。
A.12B.11C.18D.16
50.以下选项中与if(a==1)a++;elsea=b;语句功能不同的语句是()。
A.switch(A){ease0:a=b;break;default:a++;}
B.switch(a==1){case0:a++:default:a=b;}
C.switch(A){default:a=b;break;case1:a++;}
D.a=(a==1)?(a++):b
51.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。
A.运行后报错B.66C.611D.510
52.若有以下定义和语句:()ints[4][5](*ps)[5];ps=s;则对s数组元素的正确引用形式是
A.psq+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3
53.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。
A.125B.n/2C.nD.n+1
54.以下程序的输出结果是()。#include<stdio.h>main(){intk=17;printf("%d,%o,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11
55.以下4个选项中,不能看作一条语句的是
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
56.下列是用户自定义标识符的是
A._w1B.3_xyC.intD.LINE-3
57.c语言规定,在一个源程序中,main函数的位置()。
A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后
58.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.没有任何关系
59.为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else配对原则是______。
A.else子句与缩排位置相同的if配对
B.else子句与其之前最近的未被配对的if配对
C.else子句与其之后最近的if配对
D.else子句与同一行上的if配对
60.下列叙述中正确的是()。
A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息
B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节
C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则
D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
四、选择题(20题)61.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。
A.\bB.\tC.\vD.\f
62.如果要在表单中创建一个普通文本框,下列标记中正确的是()。
A.<inputtype=”text”>
B.<inputtype=”password”>
C.<inputtype=”CheCkbox”>
D.<inputtype=”radio”>
63.算法分析的目的是()。
A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进
64.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L
65.一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是()。
A.—对一B.—对多C.多对多D.多对一
66.
67.有以下程序
main()
{
intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是
A.3B.2
C.1D.0
68.
69.若输入“abcdef”“abdef”,下述程序的输出结果为()。#include#includemain{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.A.-1B.0C."abcdef"D."abdef"
70.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。
A.笛卡儿积B.交C.并D.自然连接
71.有以下程序:
程序运行后的输出结果是()。
A.1.1.3B.2,2,3C.1,2,3D.3,3,3
72.
73.
74.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1
75.
76.
77.
78.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程
B.软件从需求分析、设计、实现到测试完成的过程
C.软件的开发过程
D.软件的运行维护过程
79.
若变量已正确定义,有以下程序段
i—o;
doprintf("%d,",i);while(i++);
printf("%d",i)
其输出结果是()。
A.0,0B.0,1C.1,1D.程序进入无限循环
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同时ASCIl码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCIl码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是ACEG。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidproc(char*str,chart[])
{
}
voidmain
{
charstr[100],t[100];
system("CLS");
printf("\nPleaseenterstringstr:");
scanf("%S",str);
proc(str,t);
printf("\nTheresultiS:%s\n",t);
参考答案
1.B通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橡胶加工设备能效优化-洞察与解读
- 2026年住房和城乡建设领域施工现场专业人员考试见证员仿真试题及答案
- 客户旅程管理-洞察与解读
- 2026年新疆军转干考试(行政职业能力测试)复习题及答案
- 2026年物业管理员(师)职业能力等级评价考试(物业管理员)模拟试题及答案
- 海平面上升对沿海生态系统的长期影响-洞察与解读
- 新型光学传感器在分色器件中的应用-洞察与解读
- 可再生能源水资源协同的环境效益分析-洞察与解读
- 动物学习与认知进化研究-洞察与解读
- 电网故障预测模型-洞察与解读
- 2025江苏苏州市城投集团第一批次招聘16人笔试历年参考题库附带答案详解
- 2026年绍兴市社区工作者(专职网格员)招聘考试试卷1含答案解析
- 2026年纪检监察考试题库(附参考答案)
- 第22课 《太空一日》课件(内嵌视频 ) 2025-2026学年统编版语文七年级下册
- GB/T 21186-2026傅立叶变换红外光谱仪
- 2025年事业单位预防医学岗《公卫知识》真题及答案解析
- 2026春人教版六年级语文下册全单元知识点归纳
- 2025年度中国展览数据统计报告
- (完整版)企业商业秘密管理体系及保密措施
- 23J916-1 住宅排气道(一)
- 110KV电缆输电线工程施工组织设计
评论
0/150
提交评论