




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8
2.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
4.程序运行后的输出结果是()。A.3B.4C.5D.6
5.程序运行后的输出结果是()。A.10B.30C.0D.64
6.
7.在软件测试设计中,软件测试的主要目的是
A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误
8.下列叙述中错误的是()。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类型是自动存储类别
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
9.
10.判断一包含n个整数的数组a[]中是否存在i、j、k满足a[i]+a[j]+a[k]=0的时间复杂度需要()
A.O(n^2)B.O(n^2logn)C.O(n^3)D.O(nlogn)
11.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()
A.10,7,9,3,5,1,2
B.10,9,7,5,1,2,3
C.10,9,7,5,3,2,1
D.10,9,7,3,2,1,5
12.下列选项中不是字符常量的是()。
A.'\v'B.'\x2a'C.'a'D."\0"
13.
14.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。
A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b
15.C语言源程序的扩展名是()。
A..CB..exeC..objD..cp
16.串是一种特殊的线性表,其特殊性体现在()。
A.可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符
17.
18.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。
A.控制流B.加工C.数据存储D.源和潭
19.
20.若已定义:“inta[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
A.p+1B.a+1C.a++D.++p
二、2.填空题(20题)21.有以下程序:
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)puts(ps);
}
执行后的输出结果是【】。
22.以下说明语句中,【】是结构体类型名。
typedefstruct
{intn;
charch[8];
}PER;
23.以下程序的输出结果是【】。
main()
{charc='z';
printf("%c",c-25);}
24.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。
25.#define命令出现在程序中函数的外面,宏名的有效范围为______。
26.在面向对象方法中,类之间共享属性和操作的机制称为______。
27.设有以下结构体类型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【】,1,fp);
28.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。
29.以下程序段的输出结果是【】。
main()
{inta=2,b=2,c=4;
a*=16+(b++)-(++C);
printf("%d",a);
}
30.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。
31.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。
32.若a=10,b=20,则表达式!(a<b)的值是【】。
33.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
34.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。
35.已有定义:charc=‘’;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为()。
36.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
37.Jackson方法是一种面向【】的结构化方法。
38.下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include<stdio.h>
main()
{inti;chars[21],*p;
for(i=0;i<20;i++)
s[i]=getchar();
s[i]=【】;
p=【】;
while(*p)putchar(*p++);}
39.栈的3种基本运算是:入栈、退栈和______。
40.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。
三、1.选择题(20题)41.执行下面的程序后,a的值为
main()
{inta,b;
for(a=1,b=1;a<=10;a++)
{if(b%3==1)
{b+=3;
continue;}
b-=5;}}
A.7B.8C.9D.10
42.下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A.选择B.连接C.投影D.并
43.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
44.设a和b均为双精度型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。
A.6.5B.6C.5.5D.6
45.对建立良好的程序设计风格,下面描述正确的是______。
A.程序应简单、清晰、可读性好B.符号名的命名要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无
46.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()
A.11B.19C.13D.20
47.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述三种说法都不对
48.有以下程序:main(){inta[]={2,4,6,8,10),y=0,x,*P;P=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n",y);}程序运行后的输出结果是()。
A.10B.11C.14D.15
49.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序运行后的输出结果是
A.2030B.2050C.3050D.3020
50.下列不合法的main函数命令行参数的表示形式是______。
A.main(inta,char*c[]);
B.main(ac,av)intarc;char**av;
C.main(c,v)intc;char*v[];
D.main(argc,argv)intargc;charargv[];
51.结构化程序设计主要强调的是
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性
52.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
53.下列程序的输出结果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}
A.-8B.14C.0D.-24
54.软件是指()。A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合
55.在关系数据库中,用来表示实体之间联系的是
A.树形结构B.网状结构C.线性表D.二维表
56.下面程序的输出结果是()main(){inta[10]={l,2,3,4,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}
A.3B.4C.1D.2
57.以下叙述不正确的是______。
A.分号是C语言的必要组成部分
B.C程序的注释可以写在句的后面
C.函数是C程序的基本单位
D.主函数的名字不一定用main表示
58.开发大型软件时,产生困难的根本原因是()
A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重
59.若有说明:inta[][3]={0,0};则不正确的叙述是()。
A.数组a的每个元素的初值都是0
B.数组a的第一维大小为1
C.数组a的行数为1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
60.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为()。
A.23,13,51,57,66,26,81,69,76
B.13,23,26,51,57,66,81,76,69
C.23,13,51,57,26,66,81,69,76
D.23,13,51,57,81,26,66,69,76
四、选择题(20题)61.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
62.
63.有以下程序程序执行后的输出结果是()
A.60B.50C.45D.55
64.下列关系表达式中,结果为“假”的是()。
A.(3+4)>6
B.(3!=4)>2
C.3<=4
D.
E.3
F.(3<4)=1
65.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.seanf
B.getchar
C.gets
D.getc
66.在下列选项中,没有构成死循环的是
67.以下能正确定义赋初值的语句是()。
A.intnl=n2=10:
B.Chare=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
68.
69.
70.有以下程序
voidfun(inta,intb,intc)
{
a=456,b=567,c=678;
}
main()
{
intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出结果是
A.10,20,30B.30,20,10
C.456,567,678D.678,567,456
71.下面叙述正确的是_______。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.算法的时间复杂度是指执行算法程序所需要的时间
72.在一个C源程序文件中所定义的全局变量。其作用域为()。A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
73.(11)算法的时间复杂度是指()
A.执行算法程序所需要的时间
B.算法程序的长度
C.算法执行过程中所需要的基本运算次数
D.算法程序中的指令条数
74.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是
A.12B.15C.16D.20
75.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.c语言中的文件是流式文件,因此只能顺序存取数据
76.
77.以下不构成无限循环的语句或语句组是()。
78.(48)软件调试的目的是()
A.发现错误
B.改正错误
C.改善软件的性能
D.挖掘软件的潜能
79.下面的函数调用语句中func函数的实参个数是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3B.4C.5D.8
80.若有定义语句:
charS[10]=”1234567\0\0”;则strlen(s)的值是()。
A.7B.8C.9D.10
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如,把2个字符串abc、CD串联起来,结果是abcCD。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]。intpp[N])
{}
voidmain
{
intstr[M][N]={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[N],i,j,k;
system("CLS");
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",str[i][j]);
printf("\n");
}
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printf("n");}
参考答案
1.A本题考查switch语句。当i一1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。
2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
3.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。
4.B[解析]&按位与,如果两个相应的二进制位都为1.则该位的结果值为1.否则为0.按位或两个相应的二进制位中只要有一个为1.该位的结果值为1.2的二进制为0000010.4的二进制为000000所以做或运算结果为0000110.该数与5即00000101做与操作结果为0000100.即4.
5.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.
6.B
7.D解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。
8.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。
9.D
10.A
11.B
12.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。
13.C
14.D
15.AC语言源程序的扩展名是.C,目标文件的扩展名是.obj,可执行文件的扩展名是.exe。故本题答案为A选项。
16.B
17.A
18.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。
19.D
20.C
21.zyzXyzzyzXyz解析:本题考查字符型指针变量的应用。程序中字符指针变量ps指向字符串'xyz',while循环语句的作用使ps指向字符串结尾,for循环的执行过程如下。
第一次循环:ps指向字符串'z',输出z。
第二次循环:ps指向字符串'yz',输出yz。
第三次循环:ps指向字符串'xyz',输出xyz。
22.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。
23.aa解析:“z”的ASCII码值为122,经过c-25运算后得97,以字符形式输出是a。
24.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。
25.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。
26.继承继承
27.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。
28.软件工程学软件工程学
29.2626解析:a*=16+(b++)-(++c)等价于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值参加运算,再对b加1;++c是先c加1,再使用c的值参加运算。
30.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
31.实体完整性实体完整性
32.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
33.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。
34.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。
35.00解析:空格字符的ASCⅡ码值为32,所以!c—o,那么0与任何值相与的结果都为0,可得b的值为0。
36.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。
37.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。
38.\0's\\0'\r\ns解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值'\\0'后为结束标志,再使指针p指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。
39.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。
40.输出结果输出结果解析:注意:测试的基本方法和步骤。
41.D解析:考查continue语句的使用。continue语句的作用是结束本次循环,直接进入下次循环。
42.B解析:本题主要考查关系模型中几种运算的特征。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。故选项B正确。
43.D解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素,所以栈也被称为“先进后出”表或“后进先出”表。
44.D解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。
45.A解析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
46.B解析:C语言规定,数组元素的下标是从零开始的.本题首先定义了一个二维数组aa并按行赋初值,定义了一个变量s用于求和。for循环执行4次分别把数组元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到变量s中,s的值为19,所以最后输出的s的值为19.所以4个选项中B正确。
47.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。
48.C解析:指针变量p指向数组元素a[1],则p[1]即为a[2],p[2]即为a[3],执行第一次for循环时,y=y+p[1]=0+a[2]=6,第二次执行for循环,y=y+p[2]=6+a[3]=14,此时x为3,for循环条件不满足,退出循环,输出y的值为14。
49.A解析:本题中,最主要的是掌握几个有关文件函数的应用。
函数名:fopen
功能:打开一个文件
调用方式FILE*fp;
fp=fopen(文件名,使用文件方式);
函数名:fprintf
功能:传送格式化输出到一个文件中
调用方式:fprintf(文件指针,格式字符串,输出表列);
函数名:fclose
功能:关闭一个文件
调用方式:fclose(文件指针);
函数名:fscanf
功能:从磁盘文件执行格式化输入
调用方式:fscanf(文件指针,格式字符串,输入列表)。
50.D解析:main函数的参数通常有两个,前者为整型,后者为字符型指针数组。参数的名字可以是任意合法的标识符。而且,形如**av与*av[]等价,所以选项A、B、C均正确,选项D是错误的。
51.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。
由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。
结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。
52.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。
53.D解析:表达式a+=a-=a*a看起来复杂,其实将它分成两个表达式来计算就简单了:①第一个表达式(a-=a*a)=(a=a-a*a=-12);②第二个表达式(a+=a-=a*a)=(a=a+a=-24)。
54.D软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。因此本题的正确答案是D。
55.D解析:数据库中的关系模型是采用二维表来表示实体与实体之间的联系。
56.A
57.D解析:C语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以D是错误的。
58.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性。
59.D解析:本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。②二维数组第一维的大小由下列规则确定;当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。
60.AA)【解析】快速排序是起泡排序的改进。在快速排
序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它火的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。
61.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。
软件维护通常有以下四类;
①为纠正使用中出现的错误而进行的改正性维护;
②为适应环境变化而进行的适应性维护;
③为改进原有软件而进行的完善性维护;
④为将来的可维护和可靠而进行的预防性维护。
软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。
62.C
63.A函数fun的功能是求数组的n个元素之和。fun(a,5)=15。由于s岫是静态局部变量,所以保持l5不变,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。
64.B\n在一个表达式中,括号的优先级高,先计算3!=4,为真即是l,1>2为假。
\n
65.C本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。
66.D本题是考查死循环的含义。在编程中,一个无法靠自身的控制终止的循环称为“死循环”。选项A给出的函数主体是while语句,该语句的循环结束条件是i>100,初始i=100,执行完i=i%100+1语句后,i的值变为1,由于不满足循环结束条件,循环执行while,执行完第二次i=i%100+1语句后,i的值变为2,一直循环执行下去,i的值最大只能达到100,永远不会达到结束条件,故选项A是死循环。选项B是一个for循环,它的一般形式为:for(<初始化>;<条件表达式>;<增量>)语句;for循环中的“初始化”、“条件表达式”和“增量”都是选择项,即可以缺省,但“;”不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其他处理时便成为死循环。省略了增量,则不对循环控制变量进行操作。选项C是一个do-while语句,先执行do语句,然后用while后面的语句进行判断。初始时,k=10000,执行完do语句后,k=10001,满足while里的判断语句k>10000,继续执行do-while,因为k的值一直是增大的,故该循环将一直运行下去。D选项是一个while循环,该循环结束的条件是s<=0,该循环初始时s的值为36,每执行一次while循环,将执行--s操作,当s=0时,循环结束。
67.BA)选项表达式本身就错误,不能给表达式赋值。C)选项中不能让变量f给f赋值。D)选项不是正确的浮点数表示形式。所以,本题答案为B)。
68.B
69.D
70.A本题考查函数中变量的作用范围,在主函数中给变量x、y、z赋值,然后将其作为实参传递给了函数fun(),虽然在函数fun()中改变了这三个变量的值,但只是同名的局部变量,不影响函数中变量的值。所以,在调用函数fun()结束后,主函数三个变量的值未改变,即形参值的改变不能影响实参值。
71.C解析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中,提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后.结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
72.A全局变量的作用域是从声明处到文件的结束。所以选择A)
73.C
74.A解析:此题考查的是编译预处理命令以及自加运算符。F(a++,b++)先取a和b的值,参加运算,再把a和b的值分别加1,所以F(a++,b++)=F(3,4)=3*4=12。
75.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。
76.D
77.A选项A)中d0后面的语句只执行了一次便结束了循环;B)选项中条件while(1)永远成立,因此是死循环;C)选项中n的值为l0,而循环体为空语句,所以while(n)永远为真,进入死循环;D)选项中fbr语句第二个表达式为空,因此没有判定条件,进入死循环。因此本题答案为A)。
78.B注:与软件测试要对比着复习
79.A解析:本调用语句func中包含了3个实参,一个是对f2函数调用“f2(v1,v2)”的返回值;另一个是逗号表达式“(v3,v4,v5)”的值v5(逗号表达式的一般形式为:表达式1,表达式2,表达式3......表达式n,它的值为表达式n的值);还有—个实参也是逗号表达式“v6,max(v7,v8)”的值,即对max函数调用的返回值。
80.Astrlen()函数在计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识‘\0’为止,注意‘\0’不占字符串长度,所以字符串长度为7。因此A选项正确。
81.(1)错误:intproc(charstrr3[103,intm,char*pt)
正确:voidproc(charstr[][10],intm,char*pt)
(2)错误:pt[i]=strEk,i3
正确:pt[i]=str[k][i]
【解析】由主函数中的函数调用和proc()函数的定义可知,函数proc()没有返回值。因此,“intproc(charstr[][10],intm,char*pt)”中的int应改为void;根据C语言的语法规则,二维数组的行下标和列下标应分别加中括号,因此“pt[i]=str[k,i]”应改为“pt[i]=str[k][i]”。
82.\r\n\tvoidproc(inttt[M][N],intpp[N])
inti,j,max;
for(i=0;i<M;i++)//i控制行的下标
{
max=tt[i][c];//max存放每行中最大的数
for(j=0;j<N;j++)
if(tt[i][j]>max)
max=tt[i][j];
pp[i]=max;//把大的数放到PP数组中,经过i来控制pp数组的下标
}
}
【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入PP所指的一维数组中。首先比较二维数组中每一行的元素,找出每一行中的最大元素,放入一维数组pp中,返回到主函数当中。2021-2022年广东省深圳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8
2.设x=011050,则x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
3.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
4.程序运行后的输出结果是()。A.3B.4C.5D.6
5.程序运行后的输出结果是()。A.10B.30C.0D.64
6.
7.在软件测试设计中,软件测试的主要目的是
A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误
8.下列叙述中错误的是()。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类型是自动存储类别
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
9.
10.判断一包含n个整数的数组a[]中是否存在i、j、k满足a[i]+a[j]+a[k]=0的时间复杂度需要()
A.O(n^2)B.O(n^2logn)C.O(n^3)D.O(nlogn)
11.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()
A.10,7,9,3,5,1,2
B.10,9,7,5,1,2,3
C.10,9,7,5,3,2,1
D.10,9,7,3,2,1,5
12.下列选项中不是字符常量的是()。
A.'\v'B.'\x2a'C.'a'D."\0"
13.
14.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。
A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b
15.C语言源程序的扩展名是()。
A..CB..exeC..objD..cp
16.串是一种特殊的线性表,其特殊性体现在()。
A.可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符
17.
18.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。
A.控制流B.加工C.数据存储D.源和潭
19.
20.若已定义:“inta[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
A.p+1B.a+1C.a++D.++p
二、2.填空题(20题)21.有以下程序:
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)puts(ps);
}
执行后的输出结果是【】。
22.以下说明语句中,【】是结构体类型名。
typedefstruct
{intn;
charch[8];
}PER;
23.以下程序的输出结果是【】。
main()
{charc='z';
printf("%c",c-25);}
24.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。
25.#define命令出现在程序中函数的外面,宏名的有效范围为______。
26.在面向对象方法中,类之间共享属性和操作的机制称为______。
27.设有以下结构体类型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【】,1,fp);
28.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。
29.以下程序段的输出结果是【】。
main()
{inta=2,b=2,c=4;
a*=16+(b++)-(++C);
printf("%d",a);
}
30.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。
31.在关系模型中,若属性A是关系R的主码,属性A的取值不能为空,称为约束。
32.若a=10,b=20,则表达式!(a<b)的值是【】。
33.以下程序运行后的输出结果是______。
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
34.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。
35.已有定义:charc=‘’;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为()。
36.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
37.Jackson方法是一种面向【】的结构化方法。
38.下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include<stdio.h>
main()
{inti;chars[21],*p;
for(i=0;i<20;i++)
s[i]=getchar();
s[i]=【】;
p=【】;
while(*p)putchar(*p++);}
39.栈的3种基本运算是:入栈、退栈和______。
40.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。
三、1.选择题(20题)41.执行下面的程序后,a的值为
main()
{inta,b;
for(a=1,b=1;a<=10;a++)
{if(b%3==1)
{b+=3;
continue;}
b-=5;}}
A.7B.8C.9D.10
42.下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A.选择B.连接C.投影D.并
43.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
44.设a和b均为双精度型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。
A.6.5B.6C.5.5D.6
45.对建立良好的程序设计风格,下面描述正确的是______。
A.程序应简单、清晰、可读性好B.符号名的命名要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无
46.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()
A.11B.19C.13D.20
47.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述三种说法都不对
48.有以下程序:main(){inta[]={2,4,6,8,10),y=0,x,*P;P=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n",y);}程序运行后的输出结果是()。
A.10B.11C.14D.15
49.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);}
程序运行后的输出结果是
A.2030B.2050C.3050D.3020
50.下列不合法的main函数命令行参数的表示形式是______。
A.main(inta,char*c[]);
B.main(ac,av)intarc;char**av;
C.main(c,v)intc;char*v[];
D.main(argc,argv)intargc;charargv[];
51.结构化程序设计主要强调的是
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性
52.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
53.下列程序的输出结果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}
A.-8B.14C.0D.-24
54.软件是指()。A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合
55.在关系数据库中,用来表示实体之间联系的是
A.树形结构B.网状结构C.线性表D.二维表
56.下面程序的输出结果是()main(){inta[10]={l,2,3,4,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}
A.3B.4C.1D.2
57.以下叙述不正确的是______。
A.分号是C语言的必要组成部分
B.C程序的注释可以写在句的后面
C.函数是C程序的基本单位
D.主函数的名字不一定用main表示
58.开发大型软件时,产生困难的根本原因是()
A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重
59.若有说明:inta[][3]={0,0};则不正确的叙述是()。
A.数组a的每个元素的初值都是0
B.数组a的第一维大小为1
C.数组a的行数为1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
60.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为()。
A.23,13,51,57,66,26,81,69,76
B.13,23,26,51,57,66,81,76,69
C.23,13,51,57,26,66,81,69,76
D.23,13,51,57,81,26,66,69,76
四、选择题(20题)61.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
62.
63.有以下程序程序执行后的输出结果是()
A.60B.50C.45D.55
64.下列关系表达式中,结果为“假”的是()。
A.(3+4)>6
B.(3!=4)>2
C.3<=4
D.
E.3
F.(3<4)=1
65.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.seanf
B.getchar
C.gets
D.getc
66.在下列选项中,没有构成死循环的是
67.以下能正确定义赋初值的语句是()。
A.intnl=n2=10:
B.Chare=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
68.
69.
70.有以下程序
voidfun(inta,intb,intc)
{
a=456,b=567,c=678;
}
main()
{
intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
输出结果是
A.10,20,30B.30,20,10
C.456,567,678D.678,567,456
71.下面叙述正确的是_______。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.算法的时间复杂度是指执行算法程序所需要的时间
72.在一个C源程序文件中所定义的全局变量。其作用域为()。A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
73.(11)算法的时间复杂度是指()
A.执行算法程序所需要的时间
B.算法程序的长度
C.算法执行过程中所需要的基本运算次数
D.算法程序中的指令条数
74.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是
A.12B.15C.16D.20
75.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.c语言中的文件是流式文件,因此只能顺序存取数据
76.
77.以下不构成无限循环的语句或语句组是()。
78.(48)软件调试的目的是()
A.发现错误
B.改正错误
C.改善软件的性能
D.挖掘软件的潜能
79.下面的函数调用语句中func函数的实参个数是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3B.4C.5D.8
80.若有定义语句:
charS[10]=”1234567\0\0”;则strlen(s)的值是()。
A.7B.8C.9D.10
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如,把2个字符串abc、CD串联起来,结果是abcCD。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]。intpp[N])
{}
voidmain
{
intstr[M][N]={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[N],i,j,k;
system("CLS");
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",str[i][j]);
printf("\n");
}
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printf("n");}
参考答案
1.A本题考查switch语句。当i一1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。
2.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
3.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。
4.B[解析]&按位与,如果两个相应的二进制位都为1.则该位的结果值为1.否则为0.按位或两个相应的二进制位中只要有一个为1.该位的结果值为1.2的二进制为0000010.4的二进制为000000所以做或运算结果为0000110.该数与5即00000101做与操作结果为0000100.即4.
5.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.
6.B
7.D解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。
8.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。
9.D
10.A
11.B
12.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。
13.C
14.D
15.AC语言源程序的扩展名是.C,目标文件的扩展名是.obj,可执行文件的扩展名是.exe。故本题答案为A选项。
16.B
17.A
18.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。
19.D
20.C
21.zyzXyzzyzXyz解析:本题考查字符型指针变量的应用。程序中字符指针变量ps指向字符串'xyz',while循环语句的作用使ps指向字符串结尾,for循环的执行过程如下。
第一次循环:ps指向字符串'z',输出z。
第二次循环:ps指向字符串'yz',输出yz。
第三次循环:ps指向字符串'xyz',输出xyz。
22.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。
23.aa解析:“z”的ASCII码值为122,经过c-25运算后得97,以字符形式输出是a。
24.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。
25.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。
26.继承继承
27.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。
28.软件工程学软件工程学
29.2626解析:a*=16+(b++)-(++c)等价于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值参加运算,再对b加1;++c是先c加1,再使用c的值参加运算。
30.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
31.实体完整性实体完整性
32.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
33.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。
34.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。
35.00解析:空格字符的ASCⅡ码值为32,所以!c—o,那么0与任何值相与的结果都为0,可得b的值为0。
36.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。
37.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。
38.\0's\\0'\r\ns解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值'\\0'后为结束标志,再使指针p指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。
39.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。
40.输出结果输出结果解析:注意:测试的基本方法和步骤。
41.D解析:考查continue语句的使用。continue语句的作用是结束本次循环,直接进入下次循环。
42.B解析:本题主要考查关系模型中几种运算的特征。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。故选项B正确。
43.D解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素,所以栈也被称为“先进后出”表或“后进先出”表。
44.D解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。
45.A解析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
46.B解析:C语言规定,数组元素的下标是从零开始的.本题首先定义了一个二维数组aa并按行赋初值,定义了一个变量s用于求和。for循环执行4次分别把数组元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到变量s中,s的值为19,所以最后输出的s的值为19.所以4个选项中B正确。
47.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。
48.C解析:指针变量p指向数组元素a[1],则p[1]即为a[2],p[2]即为a[3],执行第一次for循环时,y=y+p[1]=0+a[2]=6,第二次执行for循环,y=y+p[2]=6+a[3]=14,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度注册公用设备工程师常考点试卷及答案详解【夺冠系列】
- 安全教试题及答案
- 乐高碰撞测试题及答案
- 能源互联网背景下的智能电网重构研究-洞察阐释
- 基于AI的能源消耗预测与优化研究-洞察阐释
- 出租车公司新能源汽车运营权与股权转让合同
- 2025年四川省非全日制新劳动合同书样本
- 茶园资源整合与茶叶产业链承包合同
- 时尚家居定制安装与售后保修合同
- 2025国内货物买卖合同范本示例
- 质量异常处理单、不合格品审理单
- 喷播绿化质量检验评定表
- 《学前卫生学》课程教学大纲
- 小学劳动技术 北京版 三年级上册 装饰链 纸拉链 课件
- 唇腭裂儿童的语音干预与治疗
- 冷镦工艺全面介绍-国外资料翻译
- FSSC22000 食品安全管理体系管理手册和全套程序文件
- (高清正版)T-CAGHP 021—2018泥石流防治工程设计规范(试行)
- T∕CCOA 41-2021 大米适度加工技术规范
- 等臂杠杆及夹具说明书
- 光伏项目报价范本
评论
0/150
提交评论