版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年四川省宜宾市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.堆排序是一种()排序。
A.插入B.选择C.交换D.归并
2.数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享
A.视图B.消息C.数据D.关系
3.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%m
B.rear-front+1
C.(front-rear+m)%m
D.(rear-front)%m
4.语句“printf("akbre"\'hi\'y\\\bou\n")”;的输出结果是()。
A.akbre\'hi\'y'\\\bou
B.a\bre\'hi\\y\bou
C.re'hi'you
D.abre'hi'y\bou
5.若d为double型变量,则表达式d=1,d+5,d++的值是()。
A.1B.6.0C.2.0D.1.0
6.如果树的的结点A有4个兄弟,而且B为A的双亲,则B的度为()。
A.3B.4C.5D.1
7.就平均查找速度而言,下列查找速度从慢至快的关系是()
A.顺序折半哈希分块B.顺序分块折半哈希C.分块折半哈希顺序D.顺序哈希分块折半
8.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序运行后的输出结果是()。
A.1234B.0123C.5678D.4321
9.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
10.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环
11.设无向图G中的边的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为()。
A.aedfcbB.acfebdC.aebcfdD.aedfbc
12.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序运行后的输出结果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3
13.以下叙述中错误的是()。A.C程序在运行过程中所有计算都以二进制方式进行
B.C程序在运行过程中所有计算都以十进制方式进行
C.所有C程序都需要编译链接无误后才能运行
D.C程序中整型变量只能存放整数,实型变量只能存放浮点数
14.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
15.以下选项中,当x为大于1的奇数时,值为0的表达式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
16.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上三种描述都不对
17.在黑盒测试方法中,设计测试用例的主要根据是()。
A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图
18.允许对队列进行的操作有()。
A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素
19.数据的存储结构是指()。
A.数据所占的存储空间
B.数据的逻辑结构在计算机中的存放形式
C.数据在计算机中的顺序存储方式
D.存储在计算机外存中的数据
20.程序中若有如下说明和定义语句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下选项中对函数Fun的正确调用语句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);
二、2.填空题(20题)21.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
22.数据流的类型有______和事务型。
23.若由以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
24.若有下列定义和语句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果为______。
25.对长度为10的线性表进行冒泡排序,对坏情况下需要比较的次数为______
26.若有定义:intk;,以下程序段的输出结果是______。for(k=2;k<6;k++,k++)printf("##%d",k);
27.以下程序运行后的输出结果是______。
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);
}
28.数据库系统中实现各种数据管理功能的核心软件称为【】。
29.设有下列宏定义:
#defineA2
#defineB(A+3)
则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。
30.设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】;
seanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,2);
printf("big=%d\n",big);
}
31.若a=10,b=20,则表达式!(a<b)的值是【】。
32.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组b。请填空。
#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]);
}
}
33.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。
34.下列程序运行后的输出的结果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
运行程序,输入HOWAREYOU。
35.若有以下程序:
main()
{
inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},
{-31,32,-33,0}};
inti,j,s=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出的结果是【】。
36.在关系运算中,【】运算是在给定关系的某些域上进行的运算。
37.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。
38.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。
39.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
40.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
三、1.选择题(20题)41.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是
A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1
42.下列能正确定义且赋初值的语句是()。
A.intn1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
43.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
44.下列关于栈的叙述正确的是()
A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈具有后进先出的特征
45.以下4个选项中,不能看成一条语句的是
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
46.有定义语句:intb;charc[10];则正确的输入语句是()。
A.seanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.seanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
47.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}
A.0B.70C.35D.1
48.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是
A.gets(&s[0]);
B.scanf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
49.有以下程序:#include<stdio.h>intf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,2);printf("%d\n",s);}intf(intt[],intn){if((n>0)&&(n<5))returnt[n+1]+f(t,n-1);elsereturn0;}程序运行后的输出结果是()。
A.4B.7C.10D.61
50.当输入a1b2c3d4e时,下列程序的运行结果为______。main(){charstr[40];printf("请输入含有4个数字字符的字符串:\n");scanf("%s",&str);insert(str);}insert(str)charstr[];{inti;for(i=strlen(str);i>0;i--){str[2*i)=str[i];str[2*i-1)='';}printf("\n结果是:%s",str);}
A.a1b2c3d4eB.1234C.a1b2D.因输入错误,程序出错
51.现有如下定义语句int*p,s[20],i;p=s;表示数组元素s[i]的表达式不正确的是
A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)
52.C语言中main函数参数的非法表示形式是()
A.main(char*argv[],intargc)
B.main(inta,char**b)
C.main(inty,char*x[])
D.main(intargv,char*argc[])
53.有以下程序:fun(ihta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序运行后的输出结果是()。
A.3B.6C.8D.12
54.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
55.在位运算中,操作数每右移两位,其结果相当于()。
A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4
56.有以下程序:#include<stdio.h>main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++)}for(j=0;j<2;j++)prinff("%2d",a[i][j]);prinff("\n");}}若运行时输入:123<回车>,则输出结果是()。
A.产生错误信息B.102000C.123000D.102030
57.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。
A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定
58.有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9);inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是______。
A.456B.258C.369D.789
59.若有如下程序:sub(inta,intb,int*z){*z=a+b;return;}main(){inta=1,b=2,c=3,d,e;sub(a,b,&D);sub(c,d,&e);printf("%d",e);}则程序运行后的输出结果是
A.3B.4C.5D.6
60.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()
A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程
四、选择题(20题)61.有以下程序当执行程序时,按下列方式输入数据(从第l列开始,<CR>代表回车,注意;回车也是--+qz符)12<CR>34<CR>则输出结果是()。
A.123B.12C.1234D.1234
62.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关
B.算法的时间复杂度是指执行算法所需要的计算工作量
C.数据的逻辑结构与存储结构是一一对应的
D.算法的时间复杂度与空间复杂度一定相关
63.
64.设有定义下列:inta=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=a>b)&&(n=c>d)运算后,n的值是()。
A.4B.3C.2D.0
65.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
66.有以下程序
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:printf("%d",i);
case2:printf("%d",i);
default:printf("%d",i);
}
}
程序执行后的输出结果是
A.011122B.012
C.012020D.120
67.
68.
69.在下述程序中,判断条件“i>j”共执行的次数是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d",s);
break;
}s+=i;
}
}
A.4B.7
C.5D.6
70.有以下定义语句,编译时会出现编译错误的是()。
A)
B)
A.
B.
71.若有以下程序
#include<stdio.h>
voidf(intn);
main()
{
voidf(intn);
f(5);
}
voidf(intn)
{
printf("%d\n",n);
}
则以下叙述中不正确的是
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明
D.函数f无返回值,所以,可用void将其类型定义为无返回值型
72.以下不合法的数值常量是()。
A.8.0E0.5B.lelC.0llD.0xabcd
73.下列程序的输出结果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不确定的值
74.
75.以下程序段中的变量已正确定义:
程序段的输出结果是()。
A.**B.****C.*D.********
76.
77.有以下程序:
程序运行后的输出结果是()。
A.16B.1C.32D.0
78.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。
A.提高耦合性降低内聚性有利于提高模块的独立性
B.降低耦合性提高内聚性有利于提高模块的独立性
C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D.内聚性是指模块间互相连接的紧密程度
79.
80.数据库管理系统是()。
A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从字符串str中,删除所有大写字母'F'。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是将a中的十位数和个位数依次放在变量c的百位和个位上,b中的十位数和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
参考答案
1.B解析:堆排序是一种选择排序。选择排序有直接选择排序和堆排序两种。
2.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。
3.A
4.C先输出a、b表示退一格,当执行到:\b后,光标往后退,接着输出re'hi'y\(反斜杠后又加一个反斜杠的意思是要输出一个反斜杠),此时又执行:\b后,\就被ou覆盖。
5.D
6.C
7.B
8.Badd_more函数接收两个参数a、b,返回“a+b-2”。main函数中,for循环调用add_more函数。当i=2时,传入实参i和2,所以每次调用函数add_more时,b的值都是2。函数add_more返回值等价于实参i。所以每次for循环输出的值就是i的值。故本题答案为B选项。
9.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
10.C本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。
11.B
12.A本题中,首先创建一个动态内存,然后将地址分别存入指针a、b、c中,即a、b、c都指向相同.的变量。分别给a、b、c所指的变量赋值,最终a、b、c所指的变量中的值为3,最后打印a、b、c所指的变量
13.B所有的C程序都必须经过编译链接无误之后才能运行。在运行过程中,由计算机完成程序中的所有运算。由于计算机只能识别二进制,所以所有的运算都以二进制方式进行,而不是十进制。
14.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
15.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
16.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。
17.A【答案】:A
【知识点】:黑盒测试
【解析】:黑盒测试也称功能测试或数据驱动测试,它完全不考虑程序内部的逻辑结构和内部特征,只着眼于程序的外部结构,主要用来检查程序功能是否按照需求规格说明书的规定正常使用。故选A。
18.D
19.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
20.A解析:题中将函数fun的入口地址赋给了指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函数fun。
21.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)
22.变换型变换型
23.*(p+5)或p[5]*(p+5)或p[5]解析:本题的考查点是通过指针引用数组元素。98是数组w的第5个元素(最开始的为第0个),而通过*p=w已经将p指向了数组w,要想不移动指针p而引用98,可以有以下两种方法:p[5]、*(p+5)。
24.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。
25.在最坏情况下冒泡排序法需要比较的次数为n(n-1)/2。
26.本题主要考查for循环语句。for循环的增量表达式为逗号表达式,相当于k+=2;,即每次循环后k增加2。第一次循环时,k=2,因此输出##2;第二次循环时k=4,输出##4。此后k=6,不满足循环条件。\r\n\r\n
27.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。
28.数据库管理系统数据库管理系统(DBMS)
29.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。
30.findbigfindbig解析:本题首先定义了一个指向函数的指针变量f,如果希望让它指向某个函数,只需把函数名赋给该指针变量即可。所以说本题的空格处应该填入函数名findbig。
31.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
32.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[j+1]值相加后的值赋予数组b中元素b[i],即可实现将一个数组的前项和后项之和存入另一数组。
33.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。
34.HOWHOW解析:在scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用scanf()函数,所以本题中输入空格就返回了'\\0',s数组也就确定了,后面的输入就不再读入数组s中。
35.5858解析:本题中处理二维数组元素用了两重循环,外循环变量i表示数组的行,内层循环变量j表示数组的列。在第二重循环中首先判断数组元素的值是否小于0,若是则处理该行的下一个元素;若不是则判断a[¨刚的值是否等于0,若等于0则退出内层循环开始处理下一行;其他情况下,把a[i][j]的值加到变量s中。所以本程序段的功能是把每行值为0的元素前面的所有大于0的元素值加到变量s中。
36.投影投影解析:在关系运算中,投影运算是在给定关系的某些域上进行的运算。
37.2525解析:#NAME?
38.floatfloat解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。
39.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
40.x=2
41.D解析:非常明显,选项A)与选项C)含义相同,表示k除以2的余数非零,但要注意的是,任何整数除以2的余数只有两个结果,0和1。选项A)与选项C)的含义表示k除以2的余数为1,也与选项B)的含义相同,所以答案为选项D)。
42.B解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。在选项A)中在给n1和n2进行赋初值,但变量02没有定义;在选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误:在选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。
43.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。
软件维护通常有以下四类;
①为纠正使用中出现的错误而进行的改正性维护;
②为适应环境变化而进行的适应性维护;
③为改进原有软件而进行的完善性维护;
④为将来的可维护和可靠而进行的预防性维护。
软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。
44.D解析:栈是一种对操作的位置加以限制的线性表,它采用了顺序存储方式,属于线性结构。与队列不同,栈只允许在表的一端进行插入或删除操作,具有后进先出的特征。
45.D解析:选项D)为两条语句。
46.B解析:scanf函数中格式控制后面是地址表列,不能用变量名。数组名c代表数组在内存的首地址,&b代表变量b的首地址,选项B)正确。
47.C解析:本题考查按位与“&”。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。
48.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。
49.B
50.A
51.C解析:当p指向s数组的首地址时,表示数组元素s[i]的表达式应当有:①s[i],②,(s+i),③*(p+i),④p[i]四种形式。选项C)错误的原因是,数组的地址是不可变的,指针的地址是可以变的。
52.A
53.D解析:主函数中首先定义了4个整型变量x、y、z和r,并分别给x、y、z赋初值为3、8、6,接着调用一个fun()函数,并将返回值赋给变量r。其中将fun(x,y)函数的返回值和2*z作为fun()函数的两个参数。在内层fun(x,y)函数中,将x的值和y的值传给形参a和b,此时a和b的值分别为3和8,执行if浯句,由于if后面判断条件表达式a>b为假,所以执行else后面的语句,返回值为8。此时,外层fun(x,y)函数两个参数为8和2*z=12,所以r的赋值语句相当于r=fun(8,12),同上分析可知tim(8,12)返回值为12,因此最后r的值为12。
54.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
55.C解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4。
56.B解析:程序中a[3)[2]={0}将数组元素全部初始化为0,指针变量ptr指向包含2个元素的一维数组。在第一个for语句的循环体中ptr=a+i;语句用于将指针变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第。行的第1个元素和第1行的第1个元素赋了值1和2,即a[0][0]=1,a[1][0]=2。
57.B解析:C语言以定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传绐形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。
58.C解析:数组m初始化后结果为:m[0][0]=1、m[0][1]=4、m[0][2]=7、m[1][0]=2、m[1][1]=5、m[1][2]=8、m[2][0]=3、m[2][1]=6、m[2][2]=9。for循环语句的作用是输出数组元素m[2][0]、m[2][1]和m[2][2],所以输出结果为:369。
59.D解析:第一次调用函数sub返回后,d的值为2+1=3;第二次调用函数sub返回后,e的值为3+3=6。
60.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。
61.A按照从键盘输入的数据可以判断字符1赋给了变量a,字符2赋给了变量b,字符<cR>即回车赋给了变量e,字符3赋给了变量d。因此打印输出的结果为选项A)。
62.B解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。
数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。
有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。
63.D
64.C解析:在逻辑与&&运算中,如果第一个操作数为假,则结果是假,后面的操作数不参与运算,本题中因为第一个操作数(m=a>b)为假,所以第二个操作数(n=c>d)不参加运算,因此n的值不变。
65.B在C语名中规定进行强制类型转换的格式是:(类型名)变量名;并且给表达式赋值。
66.A在本题中,程序首先定义了一个循环变量i,然后执行for循环,从循环变量的初始值及循环的结束条件可以判断出循环执行3次。
第一次循环时,i=0,然后执行switch语句,由于i=0,无法找到匹配的case结构,执行default结构,此时输出变量i的值0。本次循环结束。
第二次循环时,i=1,然后执行switch语句,由于i=1,首先执行case1结构,输出1,由于没有break,程序接着执行case1结构,又输出1,接着又执行default结构,又输出一个1。在本次循环中,总共输出3个1。
第三次循环时,i=2,然后执行switch语句,由于i=2,首先执行case2结构,输出2,由于没有break,程序接着执行default结构,又输出一个2。在本次循环中,总共输出2个2。三次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届高考历史一轮复习模块一政治文明历程专题一古代中国的政治制度第2讲走向“大一统”的秦汉政治学案人民版
- 2024新版销售代理合同范本
- 2024全屋定制合同
- 2024户外广告经营权的转让合同
- 规划课题申报范例:“四新”背景下高校“一流专业”建设进展与效果研究(附可修改技术路线图)
- 财产纠纷合同(2篇)
- 鲜果采购合同(2篇)
- 励志晚安寄语200句
- 关于篮球的计划书(19篇)
- 关于班学期工作计划模板集合八篇
- 印刷合同协议书 完整版doc正规范本(通用版)
- 胃癌(英文版)课件
- 初中数学七年级下册《5.2.1平行线》教学课件7
- 浙江省温州市实验中学2023-2024学年九年级上学期期中科学试卷
- q-e概念含义及方程
- 外科学(1)智慧树知到课后章节答案2023年下温州医科大学
- 食堂服务外包投标方案(技术标)
- 新外研版高中英语选择性必修一Unit4 what inspires you课件
- 康复训练档案
- 原辅料控制程序
- 苏教版三年级上册数学《解决问题的策略-从条件想起》教学设计(区级公开课)
评论
0/150
提交评论