




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列对于软件测试的描述中正确的是()。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能多地发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
2.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序运行后的输出结果是()。
A.0,1B.0,0C.1,-1D.0,2
3.有以下程序:
程序执行后的输出结果是()。
A.357B.753C.369D.751
4.以下关于结构化程序设计的叙述中正确的是()。
A.结构化程序使用goto语句会很便捷
B.在c语言中,程序的模块化是利用函数实现的
C.一个结构化程序必须同时由顺序、分支、循环三种结构组成
D.由三种基本结构构成的程序只能解决小规模的问题
5.
6.
7.以下有4组用户标识符,其中合法的一组是()。
A.FOr-subCase
B.4dDOSize
C.f2_G3IFabc
D.WORDvoiddefine
8.若有说明语句:charc='\72'则变量c()。
A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定
9.下列关于return语句的叙述中正确的是()。
A.—个自定义函数中必须有一条return语句
B.—个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
10.
11.
12.有以下程序执行后的输出结果是()。A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
13.使用二分查找算法在一个有序序列中查找一个元素的时间复杂度为()
A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)
14.以下选项中,当x为大于1的奇数时,值为0的表达式是A.x%2==1B.x/2C.x%2!=0D.x%2==0
15.假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下后,k的值为()。A.0x12345678B.0x21850043C.100D.不确定
16.若有定义:int*p[3];,则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
17.以下不能正确进行字符串赋初值的语句是
A.charstr[5]="good!";
B.charstr[]="good!";
C.char*srt="good!";
D.charstr[5]={'g','o','o','d'};
18.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
19.视图设计一般有3种设计次序,下列不属于视图设计的是______。
A.自顶向下B.由外向内C.由内向外D.自底向上
20.
二、2.填空题(20题)21.执行以下程序后,输出#号的个数是【】。
#include<stdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
22.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。
23.以下程序的输出结果是【】。
#include<stdio.h>
#defineMAX(x,y)(x),(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
24.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是【】。
25.以下程序的运行结果是______。
#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=%51d\n",k);}
26.以下程序运行后的输出结果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
27.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
28.若要使指针p指向一个double类型的动态存储单元,请填空。
p=【】malloc(sizeof(double));
29.在数据结构中,顺序存储结构的数据元素所占的存储空间是______的。
30.下列程序的循环次数是______。
x=2;
do
{x=x*x;}
while(!x);
31.设有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[10],t[10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
}
printf("%s\n",t);
}
程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程
序的输出结果是______。
32.以下程序的输出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
33.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
34.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是______。
35.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
36.以下程序的输出结果是()。#include<stdio.h>voidmain(){intf,f1,f2,i;f1=0;f2=1;printf("%d%d",f1,f2);for(i=3;i<=5;i++){f=-f1+f2,printf("%d",f);f2=f1;f1=f;}printf("\n");}
37.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
38.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
39.以下程序的运行结果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
40.以下程序的输出结果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
三、1.选择题(20题)41.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.结性链表C.二叉链表D.有序线性链表
42.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}执行后的输出结果是()。
A.5,5B.5,11C.11,11D.11,5
43.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
44.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。
A.34B.42C.43D.33
45.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x)
}
执行程序时,给变量x输入10,程序的输出结果是
A.55B.54C.65D.45
46.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为
A.log2nB.n2C.O(n1.5)D.n(n-1)/2
47.下面程序的运行结果是
#include<stdio.h>
main()
{staticchara[]="Languagef",b[]="programe";
char*p1,*p2;intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.gaC.LanguageD.有语法错
48.若a是noat型变量,b是unsigned型变量,以下输入语句中,合法的是______。
A.scanf("%6.2f%d",&a,&b);
B.scanf("%f%n",&a,&b);
C.scaaf("%f%3o",&a,&b);
D.scanf("%f%f",&a,&b);
49.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}
A.2,2,0B.2,2,2C.0,2,0D.2,0,2
50.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
51.待排序的关键码序列为15,20,9,30,67,65,45,90,要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。
A.2B.3C.4D.5
52.下列程序的输出结果是______。main(){char*s="1221";intk=0,a=0,b=0;do{if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';}while(s[++k]);printf("k=%da=%db=%d\n",k,a,b);}
A.k=3a=4b=3B.k=3a=3b=3C.k=4a=3b=3D.k=4a=2b=3
53.已知下面的程序段,正确的判断是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));
A.程序错误,不允许嵌套定义B.X=93C.X=81D.程序错误,宏定义不允许有参数
54.执行下面程序中的输出语句后,a的值是()。#include<stdio.h>main(){inta;printf("%d\n",(a=3*5,a*4));
A.15B.20C.10D.60
55.在ASCII代码表中每一个大写字母比它相应的小写字母的ASCII码()。
A.小32B.小64C.大32D.大1
56.以下叙述中错误的是
A.在程序中凡是以"#"开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的
57.若有说明语句:intx=3,y=4,z=5;,则下面的表达式中,值为0的是______。
A.x&&y
B.x<=y
C.x||++y&&y-z
D.!(x<y&&!z||1)
58.以下定义语句中正确的是
A.chara='A'b='B';
B.floata=b=10.0;
C.inta=10,*b=&a;
D.float*a,b=&a;
59.下列叙述错误的是()。
A.函数名是属于用户标识符,需符合C语言对标识符的规定
B.形参只能是变最
C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名
D.函数中定义的变量可以与其他函数中的变量同名
60.若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}则以下表达式中值为5的是()。
A.(p++)->mB.*(p++)->mC.(*p).mD.*(++p)->m
四、选择题(20题)61.非空的循环单链表head的尾结点(由p所指向)应该满足
A.p->next==NULLB.p==NULLC.p->next=headD.p=head
62.有以下程序:
程序运行后的输出结果是()。
A.0B.3C.4D.7
63.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
64.有以下程序:
执行后输出结果是()。
A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday
65.
66.以下程序的输出结果是()。
A.9B.8C.7D.6
67.
68.有以下程序:
则以下函数调用语句错误的是()。
A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;
69.
70.
71.下面程序的输出结果是
#include<stdio.h>
main(){
inti=2;
printf("%d",f(i,i+1));
}
intf(inta,intb)
{intc;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;elsec=-1;
return(c);
}
A.-1B.0
C.1D.2
72.软件生命周期中花费时间最多的阶段是
A.详细设计B.软件维护C.软件编码D.软件测试
73.下列字符数组初始化语句中,不正确的是()。A.A.charc[]='goodmorning';
B.charc[20]="goodmorning";
C.charc[]={'a','b','c','d');
D.charc[]={"ffgoodmorning"};
74.有以下程序:#include〈stdio.h〉intabe(intu,intv);main{inta=24,b=16,c;c=abc(a,b);printf(“%d\n”,c);}intabc(intu,intv){intw;while(v){w=u%v;u=v;v=w;)returnu;}输出结果是()。A.6B.7C.8D.9
75.下列程序的输出结果是()。
main
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0
76.
77.若有以下语句
78.下列选项中不属于结构化程序设计原则的是()。
A.可封装B.自顶向下C.模块化D.逐步求精
79.
80.以下程序的输出结果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串的最前端加入m个*号,形成新串,并且覆盖原串。例如,用户输入字符串abcd(以Enter键结束),然后输入m值为3,则结果为***abcd。注意:字符串的长度最长允许为79。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给m如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。
2.A在语句“for(;++a&&--b;)”中,for循环的表达式1和表达式3为缺省项。首先判断条件表达式“b”。当“a=-2,b=2”时,第1次执行“++a”和“--b”,条件表达式为真,循环条件成立。第2次执行“++a”为0,由于运算符,当第1个条件为假时,不执行第2个条件,因此“b=1”,发生短路,“--b”不再执行。因此输出的最终值为0,1。故本题答案为A选项。
3.A本题考查的是for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第l行的第1个元素起,直到第l行满,接着代表第2行、第3行……的每一个元素。程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循环中输出的数分别是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后输出的结果为357。故应该选择A)。
4.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。
5.B
6.B
7.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。
8.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\\”开头的字符。其中,“\\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc='\\72'H口表示占一个字符的变量c的ASCII码值。
9.B在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值,A选项描述错误。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,D选项描述错误。故本题答案为B选项。
10.C
11.C
12.B
13.B
14.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
15.C
16.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。
17.A解析:本题考核的知识点是字符数组和字符指针变量的初始化。选项A定义了一个字符数组str,具有5个元素,但赋初值的时候,初值个数却是6个(有一个'\\0'),故选项A错误的;选项B定义了一个字符数组str并给它赋初值,由于省去了长度定义,长度由初值个数确定,相当于str[6],选项B正确;选项C定义了一个字符型指针变量并用一个字符串给它赋初值,使该字符型指针指向了该字符串,选项C正确;选项D是对字符型数组中单个元素依次赋初值,选项D正确。所以,4个选项中A为所选。
18.D
19.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内
向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以
单独使用也可混合使用。
注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后
对局部视图进行集成得到概念模式。
20.B
21.66解析:本题中i循环执行4次,当i=1时,j循环执行0次;当i=2时,j循环执行1次;当i=3时,j循环执行2次;当i=4时,j循环执行3次,所以输出#号的个数是0+1+2+3=6。
22.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。
23.77解析:本题综合考查带参数的宏以及三目运算符的计算方法。三目运算符的一般形式是:<表达式1>?<表达式2>:<表达式3>。“?:”运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值,并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值,并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7。
24.11解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=0”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。
25.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或g=1或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。
26.bb解析:在ASCII码表中,至少有3个值考生得记住:,0,的ASCII码为48;‘A’的ASCII码为65;‘a’的ASCII码为97。因为记住这3个后,其他字母和数字的ASCII码就可以很容易推出来了。本题中,“B”的ASCII码为‘A’+1=66,所以,字符类型m的ASCII为66+32=98=97+1=‘a’+1,所以最后输出的结果为字符‘b’。
27.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。
28.(double*)(double*)解析:一般用malloc函数为变量分配存储单元时,要在前面用强制类型转换符说明该存储单元中数据的类型。本题要为指向双精度浮点型数据的指针变量p分配存储单元,因此用(double*)说明。
29.连续连续解析:顺序存储结构具有两个特点:1)数据元素所占空间是连续的;2)数据元素在存储空间中是按逻辑顺序依次存放的。
30.11解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环;do…while语句的特点是先执行后判断,因此循环体至少执行1次.本程序中x=2不符合循环条件,所以只循环1次。
31.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。
32.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe
33.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
34.数据库系统或数据库系统阶段或数据库或数据库阶段或数据库管理技术阶段数据库系统或数据库系统阶段或数据库或数据库阶段或数据库管理技术阶段解析:在数据库系统管理阶段,数据是结构化的,是面向系统的,数据的冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性,同时提高了数据的可扩充性和数据应用的灵活性;数据具有独立性,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性,二是逻辑独立性;保证了数据的完整性、安全性和并发性-综上所述,数据独立性最高的阶段是数据库系统管理阶段。
35.52
36.0111201112解析:在主函数中定义了整型变量f1和f2,并把其值赋为0和1,在屏幕上输出。然后在第一次运行for循环语句时,变量f的值等于1,把其值输出,把变量f1的值0赋给变量f2,变量f的值1赋给n,在执行第二次for循环语句时,变量f的值等于1,把此值输出。然后再把变量f1的值1赋给变量f2,变量f的值1赋给f1,在执行第三次for循环语句时,变量f的值等于2,把此值输出。所以程序运行后的结果为01112。
37.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
38.参照完整性参照完整性
39.efghefgh解析:函数ss返回形参s所指向的符号串的后半部分,故p='efgh'。
40.43214321解析:静态存储类的局部变量其生存期为整个程序的运行期间,作用域却只是定义它的函数或局部范围。注意:局部变量和全局变量的作用域。
41.A\nA。【解析】二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。
\n
42.B解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。
43.D解析:本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式:
①函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。
②函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给c。故选项C)正确。
③函数调用作为一个函数的实参,例如:m=max(a,max(b,c));其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。故选项B)正确。
函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项D)错误。
44.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。
45.A本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。
在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。
在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。
变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。
46.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
47.A解析:考查用指针来引用字符数组元素的方法。指针p1+k相当于指针p1向后移动了k个字符的位置,指针p2同理。
48.C
49.A解析:本题考查ifelse语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。
50.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。
软件维护通常有以下四类;
①为纠正使用中出现的错误而进行的改正性维护;
②为适应环境变化而进行的适应性维护;
③为改进原有软件而进行的完善性维护;
④为将来的可维护和可靠而进行的预防性维护。
软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。
51.A解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。
52.C解析:将数字字符串中下标值能被2整除的元素值(字符)转换为数字累加到变量a中,将数字字符串中下标值不能被2整除的元素值(字符)转换为数字累加到变量b中,循环结束时,a、b的值均为3,k是字符结束符的下标值,为4。
53.C解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。
54.A解析:本题考查对逗号运算符的理解。逗号运算符的求解过程是从左至右,依次求解各个表达式的值,所以在该题中,先使a的值等于15,再计算a*4,此时整个表达式的值为60,但a的值并未改变,仍为15。
55.A解析:本题考查大小写字母的ASCII码值的关系。大写字母比它相应的小写字母的ASCII码小32。
56.D解析:C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。
57.D解析:x&&y值为1,x<=y值为1,x||++y&&y-z值为1,!(x<y&&!z||1=值为0。
58.C解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确,选项D定义一个指针,然后定义了一个变量并让这个变量的初值为该指针变量,显然这这时的指针变量还没初始化就被赋值给变量,是不对的,故选项D不正确,所以,4个选项中选项C符合题意。
59.C解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。
60.D
61.C循环链表是一种链式存储结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。循环链表的操作和线性链表基本一致,差别仅在于算法中的循环条件不是p或p->next是否为空,而是它们是否等于头指针。选项A是线性链表尾结点满足的条件。
62.C本题的程序是要统计字符串s中数字的个数,其中前6个字符中有4个满足选择条件,此时n为4,然
63.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的开始,SEEK_CUR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东购买饰品知识培训课件
- 2025年医用注射泵合作协议书
- 2025年地矿地震仪器合作协议书
- 2025年刀熔开关项目提案报告
- 尿标本采集课件
- 主要施工方案及方法(3篇)
- 尾气后处理相关知识培训课件
- 2025年新型环保节能门窗定制安装服务合同
- 2025年城市地下管线改造项目钻孔灌注桩施工劳务承揽合同
- 2025年企业多元化办公用品供应链整合采购合同
- 2025新租房合同范本(标准)
- 新版煤矿安全规程解读
- 儿童自闭症教学方法
- 五年级下学期数学期末质量分析
- 北京市通州区2024-2025学年七年级下学期期末道德与法治试题(含答案)
- 2025年甘肃高速公路处收费人员招聘考试(公共基础知识)历年参考题库含答案详解(5套)
- 2025年新版节能减排生态环保知识竞赛考试题库及答案
- 2025年重庆交安考试题库及答案
- 2025年岗前安全培训试题及答案
- 2025年甘肃兰州市事业单位招考笔试《公共基础知识》题库(共50题)及答案
- 地铁站基坑施工监测方案
评论
0/150
提交评论