版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序
prt(int*m,intn)
{
inti;
for(i=0;i<n;i++)
m[i]++;
}
main()
{
inta[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是A.A.1,2,3,4,5,
B.3,4,5,6,7,
C.2,3,4,5,6,
D.2,3,4,5,1,
2.信息隐蔽的概念与下述哪一种概念直接相关?
A.软件结构定义B.模块独立性C.模块类型的划分D.模块耦合度
3.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
4.在供应关系中,实体供应商和实体零件之间的联系是()。
A.多对多B.一对一C.多对一D.一对多
5.若有定义"int(*pt)[3];",则下列说法正确的是()。
A.定义了基类型为int的三个指针变量
B.定义了基类型为int的具有三个元素的指针数组pt
C.定义了一个名为*pt、具有三个元素的整型数组
D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
6.以下关于简单程序设计的步骤和顺序的说法中正确的是()。
A.确定算法后,整理并写出文档,最后进行编码和上机调试
B.首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C.先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D.先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
7.
8.以下选项中,不能作为合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
9.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。
A.iB.n-iC.n-i+1D.不确定
10.该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;
B.*p=&n;
C.scanf("%d",&p)
D.printf("%d\n",p);
11.与单链表相比,双向链表的优点之一是()。
A.插入、删除操作更加简单B.可以随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更加灵活
12.下列程序的输出结果是()main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
13.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
14.已知一个大小为n的整型数组,现求该数组的全部连续子数组的元素之和的最大值,最优算法的时间复杂度是()如:a[4]={2,-1,3,-4},它的全部连续子数组为{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它们的元素之和为{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值为4。
A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)
15.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}
A.266B.11C.265D.138
16.按照“先进后出”原则组织数据的结构是()。
A.队列B.栈C.双向链表D.二叉树
17.以下叙述中正确的是()。
A.用C语言编写的程序只能放在一个程序文件中
B.C语言程序书写格式严格,要求一行内只能写一个语句
C.C语言程序中的注释只能出现在程序的开始位置和语句的后面
D.C语言程序书写格式自由,一个语句可以写在多行上
18.
19.按照C语言规定的用户标识符命名规则,不能出现在用户标识符中的是()。
A.大写字母B.下划线C.数字D.连接符
20.下列程序段的时间复杂度为()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)
二、2.填空题(20题)21.有以下程序片段,请问执行后的输出结果是【】。
intn=10;
while(n>7)
{printf("%d",n--);
}
22.在面向对象方法中,类之间共享属性和方法的机制称为______。
23.以下程序运行后的输出结果是【】。
voidfun()
{
staticinta=0;
a+=2;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<4,cc++)fun();
printf("\n");
}
24.阅读程序:
#include<string.h>
#include<strdio.h>
strle(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!='0')num++;
while(b[n])
{*(a+num)=b[n];num++;n++;}
return(num);
}
main()
{charstrl[81],str2[81],*p1=strl,*p2=str2;
gets(p1);gets(p2);
prinf("%d\n",strle(p1,p2));
}
运行上面的程序,如果从键盘上输入字符串qwerty和字符串abcd,则程序的输出结果是【】。
25.与表达式a+=b等价的另一书写形式是______。
26.下列程序的功能是将2个数从小到大输出。
main()
{floata,b,【】;
scanf(【】,&a,&b);
if(a>b)
{t=a;
【】;
b=t;
}
printf("%5.2f,%5.2f\n",a,b);
}
27.在数据结构中,顺序存储结构的数据元素所占的存储空间是______的。
28.算法的执行过程中,所需要的存储空间称为算法的【】。
29.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。
30.以下说明语句中,【】是结构体类型名。
typedefstruct
{intn;
charch[8];
}PER;
31.程序如下:
main()
{inti=4;
printf("%d",-++i);
}
该程序执行后的输出结果以及i的值分别是______、_______。
32.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。
33.【】是从二维表列的方向进行的运算。
34.若有定义:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[2][2]得到的初值是______。
35.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
36.下列程序的功能是将字符串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);
}
37.以下程序运行后的输出结果是【】。
main()
{intx=15;
while(x>10&&x<50)
{x++;
if(x/3){x++;break;}
elsecontinue;
}
printf(“%d\n”,x);
}
38.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。
39.下面程序的运行结果是______。
#include<stdio.h>
intf(inta[],intn)
{if(n>1)
returna[0]+f(a+1,n-1);
else
returna[0];
}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4);printf("%d\n",s);
}
40.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
三、1.选择题(20题)41.下列不属于静态测试方法的是()。A.A.代码检查B.白盒法C.静态结构分析D.代码质量度量
42.结构化程序设计的核心和基础是()。
A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法
43.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。
A.if((a>b)&&(b>c))k=1;
B.if((a>b)||(b>c))k=1;elsek=0;elsek=0;
C.if(a<=b)k=0;
D.if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1;elsek=0;
44.以下不正确的定义语句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={′1′,′2′,′3′,′4′,′5′};
D.charc2[]={′\x10′,′xa′,′\x8′};
45.有以下程序:#include<stdio.h>main()inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",d);程序运行后的输出结果是()。
A.2B.3C.43D.44
46.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。
A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina
47.设下面程序的可执行文件名为prg.exe,在该程序所在子目录下输入以下命令行:prghellogood<回车>则程序的输出结果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}
A.hellogoodB.hgC.helD.hellogood
48.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是______。
A.(!a==1)&&(!b==0)
B.(a>b)&&!c||1
C.a&&b
D.a||(b+b)&&(c-a)
49.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是
A.0,0B.0,1C.1,0D.1,1
50.己知一个有序线性表为(13,18,24,35,47,50,62,83,96,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。
A.1B.2C.3D.9
51.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是
A.p=q;B.*p=*q;C.n=*q;D.p=n;
52.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与a+1等价
53.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china"};等价于charstr[]={"china"};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
54.当运行以下程序时,从键盘输入AhaMA(空格)Aha<CR>,则下面程序的运行结果是
#include<stdio.h>
main()
{chars[80],c=′a′;
inti=0;
scanf("%s",s);
while(s[i]!=′
{if(s[i]==c)s[i]-32;
elseif(s[i]==c-32)s[i]=s[i]+32;
i++;}
puts(s);}
A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA
55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序运行后的输出结果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
56.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
57.有以下程序:voidswapl(intc0[],intc1[]){intt;t=co[o];co[o]=o1[o];c1[o]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]=A{3,5);swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。
A.3553B.5335C.3535D.5353
58.下面的程序main(){intx=3,y=0,z=0;if(x=y+z)printf("***");elseprintf("####");}_______。
A.有语法错误不能通过编译B.输出****C.可以通过编译,但是不能通过连接,因而不能运行D.输出####
59.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A.A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码
60.设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下面各输入语句中错误的是A.scanf("%d",&(*p).age);
B.scanf("%s",&);
C.scanf("%c",&std[0].sex);
D.scanf("%c",&(p->sex));
四、选择题(20题)61.以下不合法的字符常量是()。
A.
B.
C.
D.
62.设有定义语句
则以下叙述正确的是().
A.f是指向函数的指针变量,该函数具有_个int类型的形参
B.f是基类型为int的指针变量
C.f是指向int类型一维数组的指针变量
D.f是函数名,该函数的返回值是基类型为int类型的地址
63.以下叙述中正确的是()。
A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于c源程序的起始位置
C.#include<stdi0.h>必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
64.(72)n个顶点的强连通图的边数至少有______。
A.n-1
B.n(n-1)
C.n
D.n+1
65.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
66.下列字符串不属于标识符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
67.下列关于栈的叙述正确的是()。
A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据
68.下列C语言用户标识符中,不属于合法标识符的是
A._1B.d3_7C._a7D.m—n
69.下列判断正确的是()。
A.chara="ABCD":等价于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等价于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";
70.有以下程序:
#includc<stdio.h>
voidfun(int*p)
{printf("%d\n",p[5]);}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
}
程序运行后的输出结果是()。
A.5B.6C.8D.9
71.在关系数据库系统中,当关系的模型改变时,用户程序可以不变,这是
A.数据的物理独立性B.数据的逻辑独立性C.数据的位置独立性D.数据的存储独立性
72.
73.
74.在软件开发中,需求分析阶段可以使用的工具是()。A.N—s图B.DFD图C.PAD图D.程序流程图
75.
76.以下叙述中错误的是()。
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有reillnl语句,则应当定义函数为void类型
D.函数的retU/Tl语句中可以没有表达式
77.
78.有以下程序:
#include<stdio.h>
main()
{inta=7;
while(a--);
print[("%d\n",a);
}
程序运行后的输出结果是()。
A.-l
B.0
C.1
D.7
79.有以下程序段程序的输出结果是()。
A.a=10b=50c=10
B.a=10b=50c=30
C.a=10b=30c=lO
D.a=50b=30c=50
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如,把“ab、cd、ef9”3个字符串反着串连起来,结果是efgcdab。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或者删行,也不得改变程序的结构!
试题程序:
六、程序设计题(1题)82.请编一个函数voidproc(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。
2.B解析:采用信息隐蔽的目的就是为了确保每个模块的独立性。
3.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
4.A一家供应商可提供多种零件,一种零件也可被多家供应商提供。所以实体供应商和实体零件之间的联系是多对多。本题答案为A选项。
5.D\n数组指针是指向数组的一个指针,int(*pt)[3]表示一个指向3个int元素的数组的一个指针。
\n
6.B\n选项C和D可直接排除,程序是数据结构和算法的组合体,所以是先选择数据结构,然后继而选择相对应的算法,编码并上机调试,最后整理文档。
\n
7.C
8.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
9.C
10.A选项B)的正确写法应为p=&n;选项C)的正确写法应为scanf("%d",p);选项D)的正确写法应为print("%d\\n",*p)。
11.D
12.B解析:本题的执行过程是:
在While循环中,
比较xyz
第—次:3>0&&1<5142
第二次:2>0&&2<5231
第三次:1>0&&3<5320
判断条件“z-->0”不成立,也不执行“i+=2”语句,循环结束,因此,输出结果为3,2,-1。
13.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。
14.B
15.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。
16.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。
17.D用C语言编写的程序可以放置于多个程序文件中,所以A选项错误。C语言程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行,也可以不放在一行,所以C选项错误。故本题答案为D选项。
18.D
19.DC语言只符由字母、数字、下划线组成,且第1个字符必须是字母或下划线,所以D选项中的连接符不合法。故本题答案为D选项。
20.B
21.1098
22.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。
23.246246解析:static声明的外部变量只限于被本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。
24.10
25.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
26.t"%f%f"a=b
27.连续连续解析:顺序存储结构具有两个特点:1)数据元素所占空间是连续的;2)数据元素在存储空间中是按逻辑顺序依次存放的。
28.空间复杂度空间复杂度解析:算法执行时所需要的存储空间,称为算法的空间复杂度。
29.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。
30.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。
31.-55。
32.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。
33.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。
34.88解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为ap[0][0]、a[0][1]、a[0][2]、a[0][3]。
35.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
36.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。
37.1717解析:bteak语句只能在循环体和switch语句体内使用,当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体。而continue语句的作用时结束本次循环;即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本题中首先定义了一个变量x并赋初值15,然后判断循环条件“x>5&&x<50”,即“x>5&&x<50”,为真,执行循环体。语句“x++;”执行后,x的值变为16,“x/3”的值为5为真,执行其后的语句“x++;”,x的值变为17,执行语句“break”,退出循环,输出x的值为17。
38.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。
39.本题主要考查函数的嵌套调用和数组名作为实参。实际程序运行结果应为aa[2]+aa[3]+aa[4]+aa[5]=18。\r\n\r\n
40.00解析:在函数fun()中,while((*n)-)是先引用*n的值,再做(*n)--运算,所以循环结束时*n的值为0,再做(*n)--运算后,*n的值为-1;执行++(*n)后,*n的值是0。
41.B解析:静态测试包括代码检查、静态结构分析和代码质量度量等。其中白盒测试属于动态测试。
42.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。
43.A解析:条件运算符“?:”是三目运算符,运算规则为如果?前面的表达式的值为真,则取:前表达式的值,否则,取:后面表达式的值。分析题目中给出的表达式可知,如果a>b成立则表达式的值为表达式b>c?1:0的值,如果b>c成立,则该表达式的值为1,即a>b和b>c同时成立时,k=1。当b>c不成立时,k=0;当a>b不成立时,k=0,即a>b和b>c不能同时成立时,k=0。选项A符合题意。
44.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。
45.AC语言规定:else总是与离自己前面最近的if配对,程序中if(a>b)不成立,因此执行prinff("%d\\n",d);,输出结果为2。
46.B
47.B解析:argc=3,argv[1]='hello',argv[2]='good'。注意:printf格式串中是%c,因此输出argv[1]和argv[2]的第一个字符,即'hg'。
48.A解析:根据运算符的优先级:逻辑非>算术运算>关系运算>逻辑与>逻辑或>赋值运算,可以计算得到为A。其中C选项因为a、b均不为0,所以结果为1。
49.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。
50.B解析:根据二分法查找需要两次:①首先将90与表中间的元素50进行比较,由于90大于50,所以性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找成功。
51.D解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。
52.A解析:在16位编译系统下,一个int型变量是用16位来存储的,其占用两个字节,当执行p++之后,相当于p向高位移动了一个存储单元,也就是两个字节。因此,本题的答案为选项A)。
53.C解析:选项A)char*a;*a=“china”应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。
54.A解析:本题主要考查的知识点是大写字母比它对应的小写字母ASCII码值小32,并且字符可以看作整数进行算术运算等操作。
55.B解析:在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。
56.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。
57.A解析:swapl(a,a+1)是将a,a+1的地址进行传递,运行swapl以后,a[0],a[1]的值不发生改变,而swap2(&b[0],&b[1])是将两个指针所指的元素进行传递,运行swap2后,b[0]与b[1]的值互换。
58.D解析:本题的考查点是运算符在表达式中的处理原则。本题中把y+z的值赋给x,由于y和z都等于0,所以x的值也为0,表达式值为false,输出####。if语句中if后面的表达式—般为逻辑或关系表达式,但也可以是任意的数值类型。
59.D解析:概要设计是软件系统结构的总体设计,其目的就是要按照需求规格说明书,把软件按照功能划分为多个模块,然后确定每个模块要实现的功能,最后确定模块之间的调用关系。而设计每个模块的伪代码则属于详细设计。所以只有最后一个不属于概要设计范畴。
60.B解析:选项A中&(*p).age代表的是std[0].age的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员name。所以B选项为所选。
61.B在c语言中,用单引号扩起来的一个字符表示字符常量,转义字符由反斜扛”\”+特定字符组成。选项B)表示是8进制数码,出现8属于非法字符,所以正确答案是选项B)
62.A
63.A预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、c错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D错误。
64.C
65.D在一个函数中的复合语中定义的变量,只能在这个复合语句范围内有效。
66.D
67.B栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。
68.D所谓标识符,是指常量、变量、语句标号以及用户自定义函数的名称。C语言规定标识符只能由字母、数字、下画线组成,并且只能以字母、下画线开头。一些标识符被赋予特定的含义就叫做保留字(或称为关键字)。
选项D“m—n”中含有非法字符“—”。
69.Da=“ABCD”书写错误,因为“=”左边不能出现常量;数组名S是代表S数组首地址常量,而不是变量;字符串只有在定义时维数可以省略。
70.B\n由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。
\n
71.B数据独立性是数据库系统的一个最重要的目标之一。它能使数据独立于应用程序。数据库的数据独立性主要包括数据的物理独立性和逻辑独立性。
物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,即数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构。这样,当数据的物理存储改变了,应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变。
本题中说的关系的模型改变时,用户程序可以不变正是数据的逻辑独立性。
72.B
73.C
74.B在需求分析阶段可以使用的工具有数据流图(DFD),数据字典(DD),判定树与判定表,因此本题答案为B)。
75.B
76.B本题重点考察函数返回值的相关知识,函数的值只能通过returll语句返回主调函数,在函敦中允许有多个return语句,但每次调用只能有一个return语句t执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此B选项正确。
77.D
78.A\n此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。
\n
79.A本题中a>b的!条件不满足,因此不执行逗号表达式“a=b,b=-c;”的操作,而是执行“c=a”的操作,即c的值为10。’故本题答案为A)。
80.A
81.(1)错误:for(k=-m;k>0;k——)
正确:for(k=m-1;k>=0;k——)
(2)错误:pt=j;
正确:pt-=j;
82.
【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组pp中,最后返回到主函数当中。
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序
prt(int*m,intn)
{
inti;
for(i=0;i<n;i++)
m[i]++;
}
main()
{
inta[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是A.A.1,2,3,4,5,
B.3,4,5,6,7,
C.2,3,4,5,6,
D.2,3,4,5,1,
2.信息隐蔽的概念与下述哪一种概念直接相关?
A.软件结构定义B.模块独立性C.模块类型的划分D.模块耦合度
3.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
4.在供应关系中,实体供应商和实体零件之间的联系是()。
A.多对多B.一对一C.多对一D.一对多
5.若有定义"int(*pt)[3];",则下列说法正确的是()。
A.定义了基类型为int的三个指针变量
B.定义了基类型为int的具有三个元素的指针数组pt
C.定义了一个名为*pt、具有三个元素的整型数组
D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
6.以下关于简单程序设计的步骤和顺序的说法中正确的是()。
A.确定算法后,整理并写出文档,最后进行编码和上机调试
B.首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C.先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D.先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
7.
8.以下选项中,不能作为合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
9.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。
A.iB.n-iC.n-i+1D.不确定
10.该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;
B.*p=&n;
C.scanf("%d",&p)
D.printf("%d\n",p);
11.与单链表相比,双向链表的优点之一是()。
A.插入、删除操作更加简单B.可以随机访问C.可以省略表头指针或表尾指针D.顺序访问相邻结点更加灵活
12.下列程序的输出结果是()main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
13.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
14.已知一个大小为n的整型数组,现求该数组的全部连续子数组的元素之和的最大值,最优算法的时间复杂度是()如:a[4]={2,-1,3,-4},它的全部连续子数组为{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它们的元素之和为{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值为4。
A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)
15.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}
A.266B.11C.265D.138
16.按照“先进后出”原则组织数据的结构是()。
A.队列B.栈C.双向链表D.二叉树
17.以下叙述中正确的是()。
A.用C语言编写的程序只能放在一个程序文件中
B.C语言程序书写格式严格,要求一行内只能写一个语句
C.C语言程序中的注释只能出现在程序的开始位置和语句的后面
D.C语言程序书写格式自由,一个语句可以写在多行上
18.
19.按照C语言规定的用户标识符命名规则,不能出现在用户标识符中的是()。
A.大写字母B.下划线C.数字D.连接符
20.下列程序段的时间复杂度为()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)
二、2.填空题(20题)21.有以下程序片段,请问执行后的输出结果是【】。
intn=10;
while(n>7)
{printf("%d",n--);
}
22.在面向对象方法中,类之间共享属性和方法的机制称为______。
23.以下程序运行后的输出结果是【】。
voidfun()
{
staticinta=0;
a+=2;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<4,cc++)fun();
printf("\n");
}
24.阅读程序:
#include<string.h>
#include<strdio.h>
strle(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!='0')num++;
while(b[n])
{*(a+num)=b[n];num++;n++;}
return(num);
}
main()
{charstrl[81],str2[81],*p1=strl,*p2=str2;
gets(p1);gets(p2);
prinf("%d\n",strle(p1,p2));
}
运行上面的程序,如果从键盘上输入字符串qwerty和字符串abcd,则程序的输出结果是【】。
25.与表达式a+=b等价的另一书写形式是______。
26.下列程序的功能是将2个数从小到大输出。
main()
{floata,b,【】;
scanf(【】,&a,&b);
if(a>b)
{t=a;
【】;
b=t;
}
printf("%5.2f,%5.2f\n",a,b);
}
27.在数据结构中,顺序存储结构的数据元素所占的存储空间是______的。
28.算法的执行过程中,所需要的存储空间称为算法的【】。
29.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。
30.以下说明语句中,【】是结构体类型名。
typedefstruct
{intn;
charch[8];
}PER;
31.程序如下:
main()
{inti=4;
printf("%d",-++i);
}
该程序执行后的输出结果以及i的值分别是______、_______。
32.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。
33.【】是从二维表列的方向进行的运算。
34.若有定义:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[2][2]得到的初值是______。
35.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
36.下列程序的功能是将字符串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);
}
37.以下程序运行后的输出结果是【】。
main()
{intx=15;
while(x>10&&x<50)
{x++;
if(x/3){x++;break;}
elsecontinue;
}
printf(“%d\n”,x);
}
38.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。
39.下面程序的运行结果是______。
#include<stdio.h>
intf(inta[],intn)
{if(n>1)
returna[0]+f(a+1,n-1);
else
returna[0];
}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4);printf("%d\n",s);
}
40.下列程序的输出结果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
三、1.选择题(20题)41.下列不属于静态测试方法的是()。A.A.代码检查B.白盒法C.静态结构分析D.代码质量度量
42.结构化程序设计的核心和基础是()。
A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法
43.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()。
A.if((a>b)&&(b>c))k=1;
B.if((a>b)||(b>c))k=1;elsek=0;elsek=0;
C.if(a<=b)k=0;
D.if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1;elsek=0;
44.以下不正确的定义语句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={′1′,′2′,′3′,′4′,′5′};
D.charc2[]={′\x10′,′xa′,′\x8′};
45.有以下程序:#include<stdio.h>main()inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",d);程序运行后的输出结果是()。
A.2B.3C.43D.44
46.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing":pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。
A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina
47.设下面程序的可执行文件名为prg.exe,在该程序所在子目录下输入以下命令行:prghellogood<回车>则程序的输出结果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}
A.hellogoodB.hgC.helD.hellogood
48.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是______。
A.(!a==1)&&(!b==0)
B.(a>b)&&!c||1
C.a&&b
D.a||(b+b)&&(c-a)
49.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是
A.0,0B.0,1C.1,0D.1,1
50.己知一个有序线性表为(13,18,24,35,47,50,62,83,96,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。
A.1B.2C.3D.9
51.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是
A.p=q;B.*p=*q;C.n=*q;D.p=n;
52.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与a+1等价
53.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china"};等价于charstr[]={"china"};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
54.当运行以下程序时,从键盘输入AhaMA(空格)Aha<CR>,则下面程序的运行结果是
#include<stdio.h>
main()
{chars[80],c=′a′;
inti=0;
scanf("%s",s);
while(s[i]!=′
{if(s[i]==c)s[i]-32;
elseif(s[i]==c-32)s[i]=s[i]+32;
i++;}
puts(s);}
A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA
55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序运行后的输出结果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
56.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
57.有以下程序:voidswapl(intc0[],intc1[]){intt;t=co[o];co[o]=o1[o];c1[o]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]=A{3,5);swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。
A.3553B.5335C.3535D.5353
58.下面的程序main(){intx=3,y=0,z=0;if(x=y+z)printf("***");elseprintf("####");}_______。
A.有语法错误不能通过编译B.输出****C.可以通过编译,但是不能通过连接,因而不能运行D.输出####
59.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A.A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码
60.设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下面各输入语句中错误的是A.scanf("%d",&(*p).age);
B.scanf("%s",&);
C.scanf("%c",&std[0].sex);
D.scanf("%c",&(p->sex));
四、选择题(20题)61.以下不合法的字符常量是()。
A.
B.
C.
D.
62.设有定义语句
则以下叙述正确的是().
A.f是指向函数的指针变量,该函数具有_个int类型的形参
B.f是基类型为int的指针变量
C.f是指向int类型一维数组的指针变量
D.f是函数名,该函数的返回值是基类型为int类型的地址
63.以下叙述中正确的是()。
A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于c源程序的起始位置
C.#include<stdi0.h>必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
64.(72)n个顶点的强连通图的边数至少有______。
A.n-1
B.n(n-1)
C.n
D.n+1
65.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
66.下列字符串不属于标识符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
67.下列关于栈的叙述正确的是()。
A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据
68.下列C语言用户标识符中,不属于合法标识符的是
A._1B.d3_7C._a7D.m—n
69.下列判断正确的是()。
A.chara="ABCD":等价于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等价于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";
70.有以下程序:
#includc<stdio.h>
voidfun(int*p)
{printf("%d\n",p[5]);}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
}
程序运行后的输出结果是()。
A.5B.6C.8D.9
71.在关系数据库系统中,当关系的模型改变时,用户程序可以不变,这是
A.数据的物理独立性B.数据的逻辑独立性C.数据的位置独立性D.数据的存储独立性
72.
73.
74.在软件开发中,需求分析阶段可以使用的工具是()。A.N—s图B.DFD图C.PAD图D.程序流程图
75.
76.以下叙述中错误的是()。
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有reillnl语句,则应当定义函数为void类型
D.函数的retU/Tl语句中可以没有表达式
77.
78.有以下程序:
#include<stdio.h>
main()
{inta=7;
while(a--);
print[("%d\n",a);
}
程序运行后的输出结果是()。
A.-l
B.0
C.1
D.7
79.有以下程序段程序的输出结果是()。
A.a=10b=50c=10
B.a=10b=50c=30
C.a=10b=30c=lO
D.a=50b=30c=50
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如,把“ab、cd、ef9”3个字符串反着串连起来,结果是efgcdab。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或者删行,也不得改变程序的结构!
试题程序:
六、程序设计题(1题)82.请编一个函数voidproc(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。
2.B解析:采用信息隐蔽的目的就是为了确保每个模块的独立性。
3.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
4.A一家供应商可提供多种零件,一种零件也可被多家供应商提供。所以实体供应商和实体零件之间的联系是多对多。本题答案为A选项。
5.D\n数组指针是指向数组的一个指针,int(*pt)[3]表示一个指向3个int元素的数组的一个指针。
\n
6.B\n选项C和D可直接排除,程序是数据结构和算法的组合体,所以是先选择数据结构,然后继而选择相对应的算法,编码并上机调试,最后整理文档。
\n
7.C
8.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
9.C
10.A选项B)的正确写法应为p=&n;选项C)的正确写法应为scanf("%d",p);选项D)的正确写法应为print("%d\\n",*p)。
11.D
12.B解析:本题的执行过程是:
在While循环中,
比较xyz
第—次:3>0&&1<5142
第二次:2>0&&2<5231
第三次:1>0&&3<5320
判断条件“z-->0”不成立,也不执行“i+=2”语句,循环结束,因此,输出结果为3,2,-1。
13.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。
14.B
15.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。
16.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。
17.D用C语言编写的程序可以放置于多个程序文件中,所以A选项错误。C语言程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行,也可以不放在一行,所以C选项错误。故
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学科学《天气日历》单元知识点试卷
- 湖北省随州市曾都区部分学校2025-2026学年高一上学期12月月考英语试题
- 小学二年级下册语文实践知识点考查试卷
- 2026年新媒体写作有关测试题及答案
- 2026年男生纯洁测试题及答案
- 2026年教育法的测试题及答案
- 2026年轻度计算障碍测试题及答案
- 2026年性格游戏测试题及答案
- 2026年杭州方言测试题及答案
- 辽宁省沈阳市五校协作体2024-2025学年高二上学期期末物理试卷
- 2022年湖南省长沙市中考物理真题及答案解析
- 2025广西广投产业链服务集团有限公司招聘24人笔试历年参考题库附带答案详解
- 2026年小红书运营专员技能考核笔记创作与关键词布局
- 2025年内蒙古赤峰市地理生物会考考试试题及答案
- 2025-2026学年 人教版数学五年级下册 8 数学广角-找次品 教学课件
- 2025年广西继续教育公需科目考试试题和答案2025年公需科目考试试题及答案
- 2026版考评员国家职业技能鉴定考试题库(附答案)
- (交安C证)公路工程施工企业安全生产管理人员考试试题含答案
- 2025北京东城区五年级(下)期末语文试题及答案
- 18项护理核心制度
- HJ-1396-2024-水质-水温的测定-传感器法方法验证参考
评论
0/150
提交评论