版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年湖南省长沙市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.下面叙述中错误的是()。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
3.下列链表中,其逻辑结构属于非线性结构的是()
A.双向链表B.带链的栈C.二叉链表D.循环链表
4.设有定义:floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是()。
A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)
5.若有定义:Typedefint*T[10];T*a;则以下与上述定义中a类型完全相同的是()。
A.int*a[10];
B.int**a[10];
C.int*(*a)[10];
D.int*a[][10];
6.对以下四个序列用直接插入排序方法由小到大进行排序时,元素比较次数最少的是()
A.89,27,35,78,41,15
B.27,35,41,16,89,70
C.15,27,46,40,64,85
D.90,80,45,38,30,25
7.阅读以下程序及对程序功能的描述,其中正确的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成将磁盘文件的信息在屏幕上显示的功能
B.程序完成将两个磁盘文件合二为一的功能
C.程序完成将一个磁盘文件复制到另一个磁盘文件中
D.程序完成将两个磁盘文件合并并在屏幕上输出
8.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。
A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式
9.
10.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}
A.sum=18B.sum=10C.sum=9D.sum=25
11.下列叙述中正确的是()。
A.可以用关系运算符比较字符串的大小
B.空字符串不占用内存,其内存空间大小是0
C.两个连续的单引号是合法的字符常量
D.两个连续的双引号是合法的字符串常量
12.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
13.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
14.设有100个元素,用折半查找法进行查找时,最大比较次数是_____。
A.25B.50C.10D.7
15.向堆中插入一个元素的时间复杂度为________。
A.O(log2n)B.O(n)C.O(1)D.O(nlog2n)
16.若声明一个浮点数数组如下:froataverage[]=newfloat[30];假设该数组的内存起始位置为200,average[15]的内存地址是()。A.A.214B.215C.260D.256
17.下列哪个算法是对一个list排序的最快方法()
A.快速排序B.冒泡排序C.二分插入排序D.线性排序
18.下列方法中,属于白盒法设计测试用例的方法的是()。
A.错误推测B.因果图C.基本路径测试D.边界值分析
19.
20.有以下程序:
程序运行时,输入的值在哪个范围才会有输出结果()。
A.不等于10的整数
B.大于3且不等于l0的整数
C.大于3或等于l0的整数
D.小于3的整数
二、2.填空题(20题)21.执行以下程序时,若输入end<回车>,则输出结果是【】。
main()
{charch[10]="Begin";
gets(&ch[1]);puts(ch);
}
22.以下程序运行后输入3,abcde<回车>,则输出结果是【】。
#include<string.h>
move(char*str,intn)
{chartemp;inti;
temp=str[n-1];
for(i=n-1;i>0;i--)str[i]=str[i-1];
str[0]=temp;
}
main()
{chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(S);
for(i=1;i<=n;i++)move(s,z);
printf("%s\n",s);
}
23.有以下程序:
main()
{inti,n=0;
for(i=2;i<5;i++)
{do
{if(i%3)continue;
n++;
}while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后输出结果是【】。
24.下面程序的功能是:计算1~20之间的奇数之和与偶数之和,请填空使程序功能完整。
#include<stdio.h>
main()
{inta=0,b=0,c=0,i;
for(i=0;i<=20;i+=2)
{a+=i;
();
c+=b;
}
printf("偶数之和=%d\n",A);
printf("奇数之和=%d\n",c-21);
}
25.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
26.以下程序的输出结果是【】。
#include<string.h>
main()
{chara[]={'\1','\2','\3','\4','\0'};
printf("%d%d\n",sizeof(a),strlen(a));
}
27.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。
28.源程序文档化要求程序应加注释。注释一般分为序言性注释和【】。
29.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
30.以下程序的输出结果是【】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",A);
}
31.\13'在内存中占1个字节,"\12"在内存中占______个字节。
32.设有如下程序段:
inti=0,sum=1;
do
{sum+=i++;}
while(i<6);
printf("%d\n",sum);
上述程序段的输出结果是【】。
33.设有如下宏定义
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a,b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(【】a,b);
34.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【】(double,double);
main()
{doublex,y;
seanf("%1f%1f",&x,&y);
pfintf("%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
35.软件工程研究的内容主要包括:【】技术和软件工程管理。
36.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。
37.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统—管理与控制。
38.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。
main()
{inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
}
}
39.下列程序的运行结果为【】。
main()
{inta,b,c,x,y,z;
a=10;b=2;
c=!(a%b);x=!(a/b);
y=(a<b)&&(b>=0);
z=(a<b)||(b>=0);
printf("c=%d,x=%d,y=%d,z=%d\n",c,x,y,z);
}
40.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。
三、1.选择题(20题)41.以下叙述中正确的是______。A.预处理命令行必须位于源文件的开头
B.在源文件的一行上可以有多条预处理命令
C.宏名必须用大写字母表示
D.宏替换不占用程序的运行时间
42.已定义以下函数:fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}此函数的功能是()。
A.将P1所指字符串复制到p2所指内存空间,
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有'\0'
43.已知二叉树BT的后后序遍历序列是dabec,中序遍历序列是debac,它的前序遍序列是______。
A.cedbaB.acbedC.decabD.deabc
44.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
45.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。
A.X||YB.X|YC.X&YD.xy
46.若一个名部变量的定义形式为staticintx;,那么,其中static的作用应该是______。
A.将变量存储在静态存储区B.使变量X可以由系统自动初始化C.使x只能在本文件内引用D.使x的值可以永久保留
47.从工程管理角度,软件设计一般分为两步完成,它们是()。
A.概要设计与详细设计B.数据设计与接口设计C.软件结构设计与数据设计D.过程设计与数据设计
48.在下列叙述中,错误的一条是()
A.scanf()函数可以用来输入任何类型的多个数据
B.数组名作函数参数时,也采用“值传递”方式
C.如果形参发生改变,不会改变主调函数的实参值
D.函数的实参与形参的类型应一致
49.下列条件语句中,功能与其他语句不同的是()。
A.if(a)printf("%d\n",x);elseprintf("%d\n",y);
B.if(a==O)printf("%d\n",y);elseprintf("%d\n",x);
C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);
D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
50.有以下程序段intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是
A.10,A,10B.10,a,10C.10,a,0D.10,A,0
51.下列程序的输出结果是______。#include<stdio.h>f(char8s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("ABCDEF"));}
A.3B.6C.8D.0
52.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩
53.设x为int型变量,则执行以下语句后,x的值为______。x=10;x+x-=x-x;
A.10B.20C.40D.30
54.以下选项中,值为1的表达式是()。
A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'
55.下列叙述中,不符合良好程序设计风格要求的是()
A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息
56.下列函数的运行结果是main(){inti=2,p;intj,k;j=i;k=++i;p=f(j,k);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}
A.-1B.1C.2D.编译出错,无法运行
57.以下函数的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}
A.比较两个字符串的大小B.字符串的复制C.计算字符串的长度D.字符串的连接
58.下列叙述中正确的是______。
A.线性表是线性结构B.栈与队列是非线性结构C.线性列表是非线性性结构D.二叉树是线性结构
59.下面宏定义正确的是()
A.#defineSa*b
B.#definePI3.14;
C.#definemax(a,b)((a)>(b)?(a);(b))
D.#defines(x)(x)*(x);
60.有以下函数char*fun(char*p){returnp;}该函数的返回值是______。
A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
四、选择题(20题)61.
62.以下程序的输出结果是()。
A.1B.2C.3D.0
63.下列关于栈叙述正确的是()。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除
64.
65.数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是()。
A.实体完整性规则B.参照完整性规则C.对象完整性规则D.用户自定义完整性规则
66.在单链表中,增加头结点的目的是()。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现
67.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审
68.
69.
70.若有以下程序段,w和k都是整型变量。
w=k;
LB:if(w==0)gotoLE;
w--;
printf("*");
gotoLB;
LE:
M
则不能与上面程序段等价的循环语句是
A.for(w=k;w!=0;w--)printf("*");
B.w=k;<CR>while(w--!=0)printf("*");w++;
C.w=k;<CR>do{w--;printf("*");}while(w!=0);
D.for(w=k;w;--w)printf("*");
71.C语言源程序名的后缀是()。A.CB.exeC.obiD.ep
72.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句
if(a<b)
if(c==d)y=0;
Elsey=1;
该语句所表示的含义是()。
A.
B.
C.
D.
73.有以下程序#include<stdi0.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(”%d\n”,m);}intf(intx){returnx*2;}程序运行后的输出结果是()A.8B.2C.4D.1
74.
下列程序的输出结果是()。
#include<stdio.h>
main()
{inti,S=0;
for(i=1;i<10;i++)
if(!(i%2)&&!(i%3))s+=i;
printf("%d\n",s);
}
A.4B.39C.45D.6
75.
76.有以下程序
main(intargc,char*argv[])
{intn,i=0;
while(argv[1][i]!=’\0’)
{n=fun();i++;}
printf("%d\n",n*argc);
}
intfun()
{staticints=0;
s+=1;
returns;
}
假设程序经编译、连接后生成可执行文件exam.exe,若输入以下命令行
exam123<回车>
则程序的运行结果是
A.6B.8C.3D.4
77.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为
A.intB.floatC.doubleD.不确定
78.
79.有以下程序:
程序运行后的输出结果是()。
80.设有如下定义语句:intm[]={2,4,6,8,10},*k=m;以下选项中,表达式的值为6的是()。
A.*(k+2)B.k+2C.*k+2D.*k+=2
五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串str中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,则输出“abd,dfad”。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是删除一维数组中所有相同的元素,使之只剩一个。数组中的元素已按由小到大的顺序排列,函数返回删除后数组中元素的个数。例如,若一维数组中的元素是2223445666677899101010删除后,数组中的元素应该是2345678910注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN80intfun(inta[],intn){}voidmain(){ inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20; printf(“Theoriginaldata:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(n%3d”,a[i]); n=fun(a,n); printf(“\n\nThedataafterdeleted:\n”); for(i=0;i<n;i++)<p=""></n;i++)<> printf(“%3d”,a[i]); printf(“\n\n”);}
参考答案
1.B
2.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。故答案为A选项。
3.C数据的逻辑结构是描述数据之间的关系,分两大类:线性结构和非线性结构。线性结构是n个数据元素的有序(次序)集合,指的是数据元素之间存在着“一对一”的线性关系的数据结构。常用的线性结构有:线性表,栈,队列,双队列,数组,串。非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后驱。常见的非线性结构有:树(二叉树等),图(网等),广义表。
4.B
5.B由题意可知,T是一个数组指针,即int*[],所以使用T*a定义,可知a属于int**[\n]类型。本题答案为B选项。
6.C
7.C
8.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。
9.C
10.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。
11.D比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。
12.B解析:本题考查的知识点是变量赋初值.选项A中的语句只能起定义n1的作用,而n2=10是n1的初始值表达式,但因前面没有定义过n2,所以编译会报错“n2未定义”,故不正确。选项B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数(某字符的ASCII码值)。选项C定义的初始值表达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。选项D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。
13.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。
14.D
15.A
16.C
17.A
18.CC)【解析】白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。
19.D
20.Bif-else控制结构中,else总是与最近的未配对的if匹配。本题的执行过程为:如果输入整数小于3则不进行任何操作,否则判断该整数是否不等于l0,若为真则进行输出。因此程序输出的数据为大于3且不等于l0的整数。
21.Bend
22.cdeabcdeab解析:本题move()函数的作用,是将形参s仕所指地址的连续n位循环右移1位,即让str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函数中用了一个for循环调用move()函数,共循环3次,所以数组s被循环右移了3位,故最后输出的值为cdeab。
23.n=4n=4解析:continue语句是结束本次循环。i=2时因i%3条件为真,故不执行do-while语句中的n++,只执行一次n++得n=1;i=3时,i%3条件为假,执行两次n++得n=3;i=4时,i%3条件为真,执行一次n++得n=4。
24.b=i+1b=i+1解析:分析for循环条件,i=0说明循环从0开始判断,i+=2是间隔为2的数,i<=20就是控制数是20之内的a+=i,就是所有偶数的和,如果从1开始(b=i+1)间隔为2的数(1,3,5,7,9,11,13,15,17,19)相加就是所有奇数的和。
25.*(p+5)或p[5]*(p+5)或p[5]
26.545\u3000\u30004解析:字符串处理函数strlen()返回的是字符数组的实际长度,不包括字符申结束标志‘\\\u30000’。而sizeof运算符则计算的是字符数组的总长度,包括串末尾的结束标志。
27.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。
28.功能性注释功能性注释解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明;功能性注释的位置一般嵌在源程序体之中户主要描述其后的语句或程序做什么。
29.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
30.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。
31.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。
32.16
33.cc解析:该题考查以下两个知识点:
(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符字符串
(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。
34.doublemax或externdoublemaxdoublemax或externdoublemax解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符函数名(类型标识符形参,…);这些信息就是函数定义中的第一行的内容。本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extem说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。
35.软件开发
36.驱动模块驱动模块解析:在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。
37.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统—管理与控制。
38.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。
39.c=1x=Oy=Oz=1
40.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。
41.D本题主要考查宏的一些基本概念。通常,预处理命令位于源文件的开头,但不一定必须位于开头,也可以写在函数与函数之间;由于预处理命令的末尾不加分号,不以分号来区分一条宏命令,所以,不能在一行上写多条预处理命令,只能写一条,否则,系统处理时就会把它当做一条命令处理;宏名一般习惯用大写字母表示,以便与变量名相区别,这只是习惯用法,并不是C语言中有这样的规定,宏的定义可用小写字母;C语言中,宏的替换是在程序编译时进行,不占用程序运行的时间,故本题答案为D。
42.A解析:本题中的while((*p2=*p1)!='\\0')语句首先进行赋值*p2=*p1,即把p1所指存储单元的字符逐一复制到p2所指存储单元中,然后判断p1所指单元内容是否为'\\0',若判断条件成立,则指针p1和p2依次指向下一个字符,继续执行循环体语句,否则循环终止。
43.A解析:二叉树BT的后序遍历序列为dabec,故BT的根结点为c:而BT的中序遍历序列是debac,即遍历序列中最后—个结点为跟结点,说明BT的右子树为空。由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序序列和序遍历序列分别为dabe和deba(树是递归定义的):故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。因此BT的前序遍历序列为cedba。
44.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。
45.D解析:“||”为或运算符,当其左有表达式中只要一个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。
46.C解析:事实上,无论有无Static修饰,外部变量都具有A、B和C三种特性。作为—种修饰,static仅是限制此类型外部变量的引用范围C只能在定义它的文件范围内使用。
47.A解析:从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架;详细设计是将其进一步精化成软件的算法或表示和数据结构。而在技术上,概要设计和详细设计又由若干活动组成,包括总体结构设计/数据设计和过程设计。因此,本题的正确答案是A。
48.B
49.D解析:选项A、选项B和选项C都是在a的值为0的时候输出y,a不为0的时候输出x,而选项D是在a为0的时候输出x,a不为0的时候输出y。所以,4个选项中选项D符合题意。
50.A解析:scanf()函数输入格式字符“%d”用于输入整数,“%c”用来输入字符。在输入时,系统把第一个10作为整数10赋给m,把随后的A作为字符赋值给c,后面的10作为整数赋给n,最后输出的结果为10,A,10。
51.B
52.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。
53.B解析:赋值运算符按照“从右往左”的结合顺序。因此,先执行x-=x-x,即x=x-(x-x)=10;再执行x+=x,即x=x+x=20,故正确选项为B。
54.B解析:在ASCII码中,字符串结束符'\\0'的ASCII码为0,字符'0'的ASCII码的值为48,字符'1'的ASCII码的值为49。由此可见,选项A的值为-47;选项B的值为1;选项C的值为49;选项D的值为-48。故应该选择B。
55.A解析:本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不能只为了追求效率而使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。
人们在软件生存期要经常阅读程序,特别是在软件测试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。
正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。
所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。
I/O信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入/输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类和取值范围。经过上述分析可知,选项A是不符合良好程序设计风格要求的。
56.A解析:函数调用相当于f(2,3),程序运算应得结果为“-1”。
57.C
58.A解析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
59.C
60.B解析:p本身就是一个字符型指针变量,返回p也就是返回变量p中存放的地址值。
61.D
62.B此程序是统计一周七天中英文名称首字母为”T”的个数,P[i][0]是字符串的首字符,一共有两个”T.因此n=2.
63.A栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。
64.C
65.C数据库关系模型中可以有三类完整性约束,实体完整性,参照完整性和用户自定义完整性。
66.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。
67.C【答案】:C
【知识点】:需求分析阶段的任务
【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。
68.B
69.D
70.C本题主要考查几种循环结构的比较。在题目中,给出了一段程序,程序首先对整型变量w赋值;然后定义了一段程序LB,在该段程序中,首先判断变量w是否为零,如果是,则用GOTO语句跳出该段程序至LE,如果不为零,则w自减并输出*,然后用GOTO语句跳到该程序段开始的地方执行。该段程序其实相当于一个循环,循环
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《利益集团与明代海禁政策变迁研究(1508-1567)》
- 个人学生检讨书合集6篇
- 2024至2030年中国纤维纸袋数据监测研究报告
- 生物质燃气的能量转换和能源利用技术考核试卷
- 2024-2030年中国正戊基甲基酮行业运行动态与需求前景预测报告
- 2024-2030年中国椴木灵芝市场供需分析及发展战略研究报告
- 2024年医疗设备租赁协议精简
- 2024至2030年大气气温传感器项目投资价值分析报告
- 2024年规范化商品买卖协议样本
- 2024-2030年中国板蓝根糖浆项目可行性研究报告
- 边坡防护作用与防护类型全解课件
- 项目收费站机电工程(三大系统)设备基本培训资料
- 难治性高血压-课件
- 混凝土搅拌站租赁合同范本(4篇)
- 烟花爆竹经营单位主要负责人安全培训
- 可疑值的取舍-Q检验法
- 大学舆论学教案
- 压铸模及零件结构专业术语
- 电工安全培训课件
- 维修工程技术标
- 完整解读中华人民共和国政府信息公开条例课件
评论
0/150
提交评论