版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年浙江省温州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中正确的是()。
A.局部变量说明为static存储类,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
2.串的长度是______。A.A.串中不同字符的个数
B.串中不同字母的个数
C.串中所含字符的个数且字符个数大于零
D.串中所含字符的个数
3.
4.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen(“data,dat”,“w+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,“%d”,&k);printf(“%d,”,k);}fclose(fp);}程序运行后的输出结果是()。
A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,1,D.6,6,6,6,6,6,
5.判断字符串s1是否大于字符串s2,应该使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
6.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的运行结果是()。
A.10B.30C.0D.64
7.
有以下程序
#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
8.链表不具备的特点是()
A.所需空间与其长度成正比B.不必事先估计存储空间C.插入删除不需要移动元素D.可随机访问任一节点
9.检查软件产品是否符合需求定义的过程称为______。
A.确认测试B.集成测试C.验证测试D.验收测试
10.下列数据结构中,按先进后出原则组织数据的是()。
A.循环队列B.栈C.顺序表D.循环链表
11.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表
12.广义表((a))的表尾是()。
A.aB.(a)C.((a))D.()
13.设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列()序列是不可能通过栈产生的。
A.1,2,3,4,5B.5,3,4,l,2C.4,3,2,1,5D.3,4,5,2,l
14.
15.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
16.
17.数组A[5][6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,下标从1开始,则元素A[5][5]的地址是()。
A.1175B.1180C.1205D.1120
18.下列关系表达式中,结果为“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1
19.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
20.已知intt=0;while(t=1){…}则以下叙述正确的是()。
A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对
二、2.填空题(20题)21.下面程序的输出结果是【】。
charb[]="ABCD";
main()
{char*chp;
for(chp=b;*chp;chp+=2)printf("%s",chp);
printf("\n");
}
22.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
23.下面程序的运行结果是【】。
#inelude<stdio.h>
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
24.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空。
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4==0)printf("\n");
printf("%3d",b[i]);
}
}
25.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
26.若有程序:
main()
{inti,j;
scanq("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
27.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
28.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
29.下列程序的功能是将字符串s中所有的字符c删除。请填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
30.以下程序的输出结果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
31.数据库是指按照一定的规则存储在计算机中的【】的集合,它能被各种用户共享。
32.fseek函数的正确调用形式是【】。
33.在最坏情况下,冒泡排序的时间复杂度为【】。
34.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
35.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
36.以下程序运行时若从键盘输入:102030<回车>。输出结果是()。
#include<stdio.h>
main()
{inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);
}
37.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
38.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}
39.以下程序的输出结果是【】。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k;N*N*5;printf("%d\n"k);
}
40.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
三、1.选择题(20题)41.下面四个选项中,均是不正确的八进制数或十六进制数的选项是
A.0160x8f018
B.0abc0170xa
C.010-0x110x16
D.0a127ff-123
42.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
43.在C语言的函数中()
A.必须有形参B.形参必须是变量名C.可以有电可以没有形参D.数组名不参与形参
44.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}则程序运行后向文件输出的结果是()
A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh
45.数据库系统的核心是()
A.数据库B.数据库管理系统C.模拟模型D.软件工程
46.下列二维数组的说明中,不正确的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4]
C.#defineN5floata[N][3]
D.inta[2][9.5];
47.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。
A.地址传递B.值传递C.由实参传给形参,并由形参传回给实参D.由用户指定传递方式
48.有定义: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;
49.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}
A.3B.4C.5D.6
50.模块本身的内聚是模块独立性的重要性度量因素之—。在7类内聚中,具有最强内聚的—类是______。
A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚
51.设有两个串p和q,求q在p中首次出现位置的运算称作______。
A.连接B.模式匹配C.求子串D.求串长
52.下面语句的输出结果是______。printf("%d\n",strlen("\t\"065\xff\n"));
A.14B.8C.5D.输出项不合法,无正常输出
53.C语言库函数fgets(str,n,fp)的功能是______。
A.从fp指向的文件中读取长度n的字符串存入str指向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存
C.从fp指向的文件中读取n个字符串存入str指向的内存
D.从str读取至多n个字符到文件fp
54.C语言规定如果调用fputc函数输出成功,则返回值是()。
A.1B.输出的字符C.0D.真
55.下列数据结构中,属于非线性的是()。
A.线性表B.队列C.树D.栈
56.在关系数据库中,用来表示实体之间联系的是
A.树结构B.网结构C.线性表D.二维表
57.下列叙述中正确的是
A.C语言中既有逻辑类型也有集合类型
B.C语言中没有逻辑类型但有集合类型
C.C语言中有逻辑类型但没有集合类别
D.C语言中既没有逻辑类型也没有集合类型
58.已知字符'A'的ASCII码值是65,字符变量cl的值是'A',c2的值是'D'。执行语句Printf("%d,%d",c1,c2-2);后,输出结果是
A.A,BB.A,68C.65,66D.65,68
59.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息
60.有以下定义语句
doublea,b;intw;longc;
若各变量已正确赋值,则下列选项中正确的表达式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;
四、选择题(20题)61.下列是用户自定义标识符的是
A._w1B.3_xyC.intD.LINE-3
62.
63.
64.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。
A.typedefChar*s;
B.typedefChar*STP;
C.typedefSTP*Char;
D.typedef*CharSTP;
65.
A.intB.floatC.doubleD.不确定
66.
67.“商品”与“顾客”两个实体集之间的联系一般是()。
A.一对一B.多对一C.一对多D.多对多
68.
69.已知大写字母A的ASCIl码的值是65,小写字母a的ASCIl码的值是97,以下不能将变量。中的大写字母转换为对应小写字母的语句是()。
A.
B.
C.
D.
70.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
71.若程序有宏定义:#defineNl00,则以下叙述中正确的是()。
A.宏定义中定义了标识符N的值为整数100
B.在编译程序对C源程序进行预处理时用l00替换标识符N
C.对C源程序进行编译时用100替换标识符N
D.在运行时用100替换标识符N
72.有以下程序:
#include<stdio.h>
main()
{inta=0,b=0,c=0;
c=(a=a=5);(a=b,b+=4);
printf("%d,%d,%d\n",a,bc);
}
程序运行后的输出结果是()。
A.0,4,5B.4,4,5C.4,4,4D.0,0,0
73.数据库的故障恢复一般是由
A.数据流图完成的B.数据字典完成的C.DBA完成的D.PAD图完成
74.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
75.
76.(71)算法分析的目的是______。
A.找出数据结构的合理性
B.分析算法的效率以求改进
C.分析算法的易懂性和可靠性
D.找出算法中输入和输出之间的关系
77.
78.
79.
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。
structnode
{bardata;
structnode*next;}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。
A.q->next=r->next;P>next=r;r->next=q;
B.q->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;P->next=r:
D.q->next=q;P->next=r;q->next=r->next;
80.栈和队列的共同特点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点
五、程序改错题(1题)81.下列给定程序中,fun()函数的功能是:求3个数的最小公倍数,例如,给变量a、b、c、分别输入15、11、2,则输出结果应当是330。请修改函数中的错误,得出正确的结果。注意:不要改动main()函数,不能增行或减行,也不能更改程序的结构。试题程序:
六、程序设计题(1题)82.M名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。
2.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。
3.B
4.A函数fopen(“data.dat”,“w+”)中的“w+”表示打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则建立该文件。“rewind(fp);”使文件fp的位置指针指向文件开始。函数“fprintf(fp,“%d\\n”,a[5-i]);”将a[i]输出到fp指向的文件中。函数“fscanf(fp,“%d”,&k);”将fp读入变量k中。第1个for循环将数组中元素倒着输入fp指向的文件中。rewind则指向文件开始,因此输出的是数组a的倒叙:6,5,4,3,2,1,。故本题答案为A选项。
5.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。
6.D本题中静态局部变量X,在静态存储区内分配存储单元,在程序整个运行期间都不释放。在main函数中,执行for循环,第1次循环,变量s的值为2;第2次循环,函数的返回值为4,所以变量s的值为8;第3次循环,函数的返回值为8,所以s的值为64。故本题答案为D选项。
7.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。
8.D
9.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。
(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。
(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。
(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。
(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。
10.B解析:循环队列是队列的一种顺序存储结构,队列是以先进先出为原则组织数据的一种特殊线性表,选项A错误;栈是以先进后出为原则组织数据的一种特殊线性表,选项B正确;顺序表是线性表的顺序存储结构,选项C错误;循环链表是一般线性表的一种链式存储结构,选项D错误。
11.A\nA。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。
\n
12.D
13.B
14.A
15.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。
16.D
17.D
18.B在一个表达式中,括号的优先级高,先计算3!=4,为真即是l,1>2为假。
19.D
20.B解析:t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==1,注意“=”与“==”的用法。
21.ABCDCD
22.数据存储数据存储
23.66解析:已知aa[3]={1,2,3},n=3,调用函数f,n>1成立,执行a[0]+f(&a[1],n-1);即1+f(&a[1],2),递归调用函数f,将a[1]的地址作为参数传给数组a,使数组a的首地址变为&a[1],数组中的元素只有2,3;2传给n,这时n=2,n>1仍然成立,继续调用a[0]+f(&a[1],n-1);即执行1+2+f(&a[1],1),因为上次递归调用函数f后数组中的元素为2,3,所以此次的a[1]为3,调用后的a[0]为3。所以最后结果为1+2+3=6。
24.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i],即可实现将一个数组的前项和后项之和存入另一数组。
25.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。
26.i=0j=20i=0,j=20解析:该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。
27.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。
28.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。
29.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。
30.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。
31.数据数据解析:数据库是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这些数据按一定的数据模型组织、描述和存储。
32.fseek(文件指针位移量起始点)fseek(文件指针,位移量,起始点)解析:本题考查函数fseek的用法。fseek函数的调用形式为:
fseek(文件指针,位移量,起始点)
“起始点”用0,1或2代替,其中,0代表“文件开始”;1为“当前位置”;2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。
33.
解析:冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过遍的从前往后的扫描和遍的从后往前的扫描,需要的比较次数为。
34.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。
35.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
36.1030010300解析:本题的考点是C语言的scanf的“%*d”。“%*d”是在输入流中跳过一个整数,而读入下一个整数。因此语句“scanf('%d%*d%d',&i,&j,&k);”在读入10、20、30时,将10读入到i中,将20跳过,将30读入到j中,而k没有读入数,仍是初值的0。
37.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,循环条件不成立,则退出循环。
38.
39.5555解析:宏替换不是函数调用,所以不能因为M被定义为5,而N被定义为M+M而武断地认为N的值就是5+5=10。宏替换就是简单的字符串替换,以本题为例:因为N被定义为M+M,所以k=N*N*5;语句展开后为k=M+M*M+M*5;。又因为M被定义为5,所以再展开后为k=5+5*5+5*5;。现在不难计算出,这个表达式的结果为k=55。故最终输出结果是55。
40.i=0j=20i=0,j=20解析:scanf()函数的使用,该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。
41.D解析:八进制中,不可能包括8以上的数字,它的范围只在07之间,以0开头。同样,十六进制是以0x开头,数字在0~9和A~F之间。
42.B解析:本题考查函数的一些概念.main()函数是一个程序的主函数,它由系统调用,所以选项A不正确。一个C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。obj文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项B正确。一个C程序必须从主函数main()开始运行,其他函数只能是直接或间接被main()函数调用才能得以运行,因此选项C错误。C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项D错误。故应该选择B。
43.C
44.B解析:本题对文件test输出4个数据,第一个5原样输出,第二个238.41只保留小数点后1位,然后输出一个‘,’,再连续输出两个字符‘B’和‘h’。所以最终的输出结果是5238.4,Bh。应该选择B。
45.B解析:数据库管理系统(DataBaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。
46.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。
47.B解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参.
48.C解析:选项A),因为前面两个条件都不满足,所以执行x=3。选项B),a<3成立,执行x=3。选项C),a<3成立,执行x=3;a<2成立,执行x=2;a<1不成立,不执行x=1,所以执行此段程序后x=2。选项D),a<b成立,执行x=b,此时x=2;b<c成立,执行x=c,此时x=3;c<a不成立,不执行x=a,所以执行此段程序后x=3。
49.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。
在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。
第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。
50.D解析:内聚性是—个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。
51.B解析:子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一,算法的基本思想是:从主串的开始字符起,与模式的第一个字符比较,若相等,则继续比较后续字符,否则从主串的下一个字符起再重新与模式的字符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。
52.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。
53.B解析:fgets函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp);中的n为要求得到的字符的个数,但只从fp指向的文件输入n-1个字符,然后在最后加—个'\\0'字符,因此得到的字符串共有n个字符。
54.B解析:调用fputc函数输出成功,则返回值是输出的字符。
55.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。
56.D解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用表格数据来表示实体本身及其相互之间的联系。本题的正确答案是D。
57.D解析:本题考核的知识点是c语言数据类型.在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确;C语言中没有集合类型,故选项B不正确。所以,D选项为所选。
58.C解析:在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符'A'和'D'的ASCII码值分别为65和68。
59.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
60.C解析:选项A不是合法的赋值语句,将最右边的第一个赋值表达式加括号即为a=a+(b=b++)才正确,故选项A不正确。选项B中运算符%的对象必须是整型,而在选项B中(int)a+b为double型,故选项B不正确。a,b都为double型,应当避免使用a==b这样的关系表达式,因为通常存放在内存中的实型数据是有误差的,因此不可能精确相等,这将导致关系表达式a==b总为0。所以,4个选项中选项C符合题意。
61.A本题主要考查标识符的定义。对标识符的定义是考试中常考的内容之一。标识符主要由数字、下画线和字母组成,其中数字不能放在首位,另外,用户自定义标识符时,不能将标识符定义为C语言中已定义的关键字,如int、while等。
根据上面对标识符的分析,我们不难看出本题的正确答案是A。在选项B中,3_xy以数字开头,不符合标识符定义的规定;在选项C中,int是C语言系统中已经定义了的关键字;在选项D中,LINE-3使用的数字、下画线和字母以外的字符,因此不正确。
62.D
63.C
64.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。
65.C根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。
66.A
67.D商品与顾客两个实体集之间的买与被买联系是多对多的,因为一种商品可以被多个顾客购买,而一个顾客也可以买多个商品。
68.B
69.D无论大小写,字母问的间隔都相等,所以
70.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
71.B#defineN100定义了标识符N的替换文本为100,而非N的值为100。即在该命令行后的程序中,所有出现标识符N的地方都将替换为l00,而且这一替换过程是在程序预编译时逊行的。
72.A\n本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-5=5,所以c=5,再计算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案选择A。
\n
73.C数据库的故障恢复是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,其原因有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因。在系统发生故障后,要求DBMS要有一套发生故障后的数据恢复机构来保证数据库能够恢复到一致的、正确的状态,这就是数据库的故障恢复。
在本题给出的四个选项中,数据流图用来描绘系统的逻辑模型,它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。
数据字典是关于数据信息的集合,也就是对数据流图中包含的所有元素定义的集合,是对数据流图进行补充。
DBA即数据库管理员,它的工作主要有数据库安装、数据库配置和管理、权限设置和安全管理、监控和性能调节、备份和恢复等。
PAD图即问题分析图,是一种程序结构可见性好、结构唯一、易于编制、易于检查和易于修改的详细设计表现方法。
根据上面的分析,我们可以知道数据库的故障恢复是由数据库管理员来完成的。因此,本题的正确答案是C。
74.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
75.C
76.B
77.D
78.D
79.D由题目ee线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r->next=q,这时r指向的节点为q;p->nextr,这时p指向的节点为r;q->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
80.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。
81.(1)错误:j=1;
正确:i=0;
(2)错误:while(temp!=0&&m!=0&&n!=0)
正确:while(temp!=0||m!=0I{n!=0)
【解析】其中while循环是判断能否除尽x、y、z,循环中“i=i+1;”进行了加1操作,i应该从1开始进行循环,所以i的初始值应该是0,这样第一个错误标识下的“i=1;”就改为“i=0;”。
第二个标识下while循环逻辑关系应该是或的关系,因为最小公倍数成立的条件是同时除尽,所以只要不是同时除尽,循环就继续,这样“while(temp!=0&&m!=0&&n!=0)”应该是“while(temp!=0||m!=0||n!=0)”。
82.
【解析】要找出学生的最高分,就要比较所有学生的成绩。定义一个变量max用来存放学生的最高分,初始化为第一个学生的成绩,依次与其后的学生成绩相比较,最后将得到的最高分返回主函数。
2022-2023年浙江省温州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下叙述中正确的是()。
A.局部变量说明为static存储类,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
2.串的长度是______。A.A.串中不同字符的个数
B.串中不同字母的个数
C.串中所含字符的个数且字符个数大于零
D.串中所含字符的个数
3.
4.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen(“data,dat”,“w+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,“%d”,&k);printf(“%d,”,k);}fclose(fp);}程序运行后的输出结果是()。
A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,1,D.6,6,6,6,6,6,
5.判断字符串s1是否大于字符串s2,应该使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
6.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的运行结果是()。
A.10B.30C.0D.64
7.
有以下程序
#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
8.链表不具备的特点是()
A.所需空间与其长度成正比B.不必事先估计存储空间C.插入删除不需要移动元素D.可随机访问任一节点
9.检查软件产品是否符合需求定义的过程称为______。
A.确认测试B.集成测试C.验证测试D.验收测试
10.下列数据结构中,按先进后出原则组织数据的是()。
A.循环队列B.栈C.顺序表D.循环链表
11.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表
12.广义表((a))的表尾是()。
A.aB.(a)C.((a))D.()
13.设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列()序列是不可能通过栈产生的。
A.1,2,3,4,5B.5,3,4,l,2C.4,3,2,1,5D.3,4,5,2,l
14.
15.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。
A.77B.88C.810D.1010
16.
17.数组A[5][6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,下标从1开始,则元素A[5][5]的地址是()。
A.1175B.1180C.1205D.1120
18.下列关系表达式中,结果为“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1
19.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
20.已知intt=0;while(t=1){…}则以下叙述正确的是()。
A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对
二、2.填空题(20题)21.下面程序的输出结果是【】。
charb[]="ABCD";
main()
{char*chp;
for(chp=b;*chp;chp+=2)printf("%s",chp);
printf("\n");
}
22.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
23.下面程序的运行结果是【】。
#inelude<stdio.h>
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
24.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空。
#include<stdio.h>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
______;
for(i=0;i<9;i++)
{if(i%4==0)printf("\n");
printf("%3d",b[i]);
}
}
25.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
26.若有程序:
main()
{inti,j;
scanq("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
27.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。
structnode
{intinfo;
【】link;};
28.以下程序的输出结果是【】。
#include<string.h>
main()
{printf("%d\n",strlen("IBM\n012\1\\"));}
29.下列程序的功能是将字符串s中所有的字符c删除。请填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
30.以下程序的输出结果是【】。
main()
{
intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%d\n",*(p+3));
}
31.数据库是指按照一定的规则存储在计算机中的【】的集合,它能被各种用户共享。
32.fseek函数的正确调用形式是【】。
33.在最坏情况下,冒泡排序的时间复杂度为【】。
34.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
35.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
36.以下程序运行时若从键盘输入:102030<回车>。输出结果是()。
#include<stdio.h>
main()
{inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);
}
37.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
38.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}
39.以下程序的输出结果是【】。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k;N*N*5;printf("%d\n"k);
}
40.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【】。
三、1.选择题(20题)41.下面四个选项中,均是不正确的八进制数或十六进制数的选项是
A.0160x8f018
B.0abc0170xa
C.010-0x110x16
D.0a127ff-123
42.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
43.在C语言的函数中()
A.必须有形参B.形参必须是变量名C.可以有电可以没有形参D.数组名不参与形参
44.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}则程序运行后向文件输出的结果是()
A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh
45.数据库系统的核心是()
A.数据库B.数据库管理系统C.模拟模型D.软件工程
46.下列二维数组的说明中,不正确的是()。
A.floata[][4]={0,1,8,5,9};
B.inta[3][4]
C.#defineN5floata[N][3]
D.inta[2][9.5];
47.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。
A.地址传递B.值传递C.由实参传给形参,并由形参传回给实参D.由用户指定传递方式
48.有定义: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;
49.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}
A.3B.4C.5D.6
50.模块本身的内聚是模块独立性的重要性度量因素之—。在7类内聚中,具有最强内聚的—类是______。
A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚
51.设有两个串p和q,求q在p中首次出现位置的运算称作______。
A.连接B.模式匹配C.求子串D.求串长
52.下面语句的输出结果是______。printf("%d\n",strlen("\t\"065\xff\n"));
A.14B.8C.5D.输出项不合法,无正常输出
53.C语言库函数fgets(str,n,fp)的功能是______。
A.从fp指向的文件中读取长度n的字符串存入str指向的内存
B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存
C.从fp指向的文件中读取n个字符串存入str指向的内存
D.从str读取至多n个字符到文件fp
54.C语言规定如果调用fputc函数输出成功,则返回值是()。
A.1B.输出的字符C.0D.真
55.下列数据结构中,属于非线性的是()。
A.线性表B.队列C.树D.栈
56.在关系数据库中,用来表示实体之间联系的是
A.树结构B.网结构C.线性表D.二维表
57.下列叙述中正确的是
A.C语言中既有逻辑类型也有集合类型
B.C语言中没有逻辑类型但有集合类型
C.C语言中有逻辑类型但没有集合类别
D.C语言中既没有逻辑类型也没有集合类型
58.已知字符'A'的ASCII码值是65,字符变量cl的值是'A',c2的值是'D'。执行语句Printf("%d,%d",c1,c2-2);后,输出结果是
A.A,BB.A,68C.65,66D.65,68
59.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息
60.有以下定义语句
doublea,b;intw;longc;
若各变量已正确赋值,则下列选项中正确的表达式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;
四、选择题(20题)61.下列是用户自定义标识符的是
A._w1B.3_xyC.intD.LINE-3
62.
63.
64.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。
A.typedefChar*s;
B.typedefChar*STP;
C.typedefSTP*Char;
D.typedef*CharSTP;
65.
A.intB.floatC.doubleD.不确定
66.
67.“商品”与“顾客”两个实体集之间的联系一般是()。
A.一对一B.多对一C.一对多D.多对多
68.
69.已知大写字母A的ASCIl码的值是65,小写字母a的ASCIl码的值是97,以下不能将变量。中的大写字母转换为对应小写字母的语句是()。
A.
B.
C.
D.
70.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
71.若程序有宏定义:#defineNl00,则以下叙述中正确的是()。
A.宏定义中定义了标识符N的值为整数100
B.在编译程序对C源程序进行预处理时用l00替换标识符N
C.对C源程序进行编译时用100替换标识符N
D.在运行时用100替换标识符N
72.有以下程序:
#include<stdio.h>
main()
{inta=0,b=0,c=0;
c=(a=a=5);(a=b,b+=4);
printf("%d,%d,%d\n",a,bc);
}
程序运行后的输出结果是()。
A.0,4,5B.4,4,5C.4,4,4D.0,0,0
73.数据库的故障恢复一般是由
A.数据流图完成的B.数据字典完成的C.DBA完成的D.PAD图完成
74.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
75.
76.(71)算法分析的目的是______。
A.找出数据结构的合理性
B.分析算法的效率以求改进
C.分析算法的易懂性和可靠性
D.找出算法中输入和输出之间的关系
77.
78.
79.
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。
structnode
{bardata;
structnode*next;}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。
A.q->next=r->next;P>next=r;r->next=q;
B.q->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;P->next=r:
D.q->next=q;P->next=r;q->next=r->next;
80.栈和队列的共同特点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点
五、程序改错题(1题)81.下列给定程序中,fun()函数的功能是:求3个数的最小公倍数,例如,给变量a、b、c、分别输入15、11、2,则输出结果应当是330。请修改函数中的错误,得出正确的结果。注意:不要改动main()函数,不能增行或减行,也不能更改程序的结构。试题程序:
六、程序设计题(1题)82.M名学生的成绩已在主函数中放人一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。
2.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。
3.B
4.A函数fopen(“data.dat”,“w+”)中的“w+”表示打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则建立该文件。“rewind(fp);”使文件fp的位置指针指向文件开始。函数“fprintf(fp,“%d\\n”,a[5-i]);”将a[i]输出到fp指向的文件中。函数“fscanf(fp,“%d”,&k);”将fp读入变量k中。第1个for循环将数组中元素倒着输入fp指向的文件中。rewind则指向文件开始,因此输出的是数组a的倒叙:6,5,4,3,2,1,。故本题答案为A选项。
5.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。
6.D本题中静态局部变量X,在静态存储区内分配存储单元,在程序整个运行期间都不释放。在main函数中,执行for循环,第1次循环,变量s的值为2;第2次循环,函数的返回值为4,所以变量s的值为8;第3次循环,函数的返回值为8,所以s的值为64。故本题答案为D选项。
7.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。
8.D
9.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。
(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。
(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。
(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。
(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。
10.B解析:循环队列是队列的一种顺序存储结构,队列是以先进先出为原则组织数据的一种特殊线性表,选项A错误;栈是以先进后出为原则组织数据的一种特殊线性表,选项B正确;顺序表是线性表的顺序存储结构,选项C错误;循环链表是一般线性表的一种链式存储结构,选项D错误。
11.A\nA。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件书写技巧实战培训
- 大米采购合同模板
- 太空探索智慧之光
- 绿植花卉购销合同示例
- 糖尿病科学小课堂
- 技术服务合同终止的法律后果
- 外研版必修五英语语法全解析
- 如何在小学数学作业中培养团队精神
- 小升初总复习掌握关键点
- 屋面瓦材料采购协议
- 2024年共青团入团积极分子考试题库及答案
- 品牌合伙经营方案
- 《电气控制与PLC应用技术》期末试卷A卷
- 消化道出血护理新进展
- MOOC 心理健康与创新能力-电子科技大学 中国大学慕课答案
- 第24课《诗词曲五首-南乡子 登京口北固亭有怀》课件共34张
- 《西游记》知识竞赛03865省公开课一等奖全国示范课微课金奖课件
- 2024年杭州市人才市场开发有限公司招聘笔试参考题库附带答案详解
- 2024水利水电工程模袋砂围堰技术规范
- 东营港加油、LNG加气站工程环评报告表
- 《囚歌》教学课件
评论
0/150
提交评论