




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年黑龙江省伊春市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列程序段中完全正确的是()。A.int*p;scanf(“%d”,&p);
B.int*p;scanf(“%d”,p);
C.intk,*p=&k;scanf(“%d”,p);
D.intk,*p;*p=&k;scanf(“%d”,p);
2.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序运行后的输出结果是
A.22B.10C.34D.30
3.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4
4.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),
A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定
5.归并排序采用的算法设计方法属于()
A.归纳法B.分治法C.贪心法D.回溯方法
6.有以下程序程序运行后的输出结果是()。
A.21B.11C.20D.10
7.有下列程序:#include<stdio.h>#include"string.h"voidtim(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是()。A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc
8.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。
A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度
9.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
10.以下语句中,正确制作电子邮件链接的是()。
11.设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是()。
A.ZB.aC.zD.A
12.
13.以下说法正确的是()。
A.数据项是数据的基本单位
B.数据元素是数据的最小单位
C.数据结构是带结构的数据项的集合
D.一些表面上很不相同的数据可以有相同的逻辑结构
14.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。
A.11,11B.29,29C.26,29D.121,121
15.以下程序的输出结果是______。
A.54321
B.12345
C.12345
D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}
16.以下程序的输出结果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
17.第
2
题
现有如下程序段
#include"stdio.h"
main()
{intk[30]={12,324,45,6,768,98,21,34,453,456};
intcount=0,i=0;
while(k[i])
{if(k[i]%2==0‖k[i]%5==0)count++;
i++;}
printf("%d,%d\n",count,i);}
则程序段的输出结果为
A.7,8B.8,8C.7,10D.8,10
18.若有以下程序: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
19.程序流程图中带有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
20.现有二叉搜索树(BST)前序遍历结果序列为abdefgc,中序遍历结果序列为debgfac,请问后序遍历结果序列为()
A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC
二、2.填空题(20题)21.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
22.若fp已正确定义为—‘个文件指针,d1.dd为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(______);。
23.若a=10,b=20,则表达式!(a<b)的值是【】。
24.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。
25.算法的复杂度主要包括【】复杂度和空间复杂度。
26.阅读下面程序段,则执行后输出的结果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
27.软件工程研究的内容主要包括:【】技术和软件工程管理。
28.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
29.\13'在内存中占1个字节,"\12"在内存中占______个字节。
30.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。
31.以下定义的结构体类型包含两个成员,其中成员变量info用来存放整型数据;成员变量link是指向自身结构体的指针。请将定义补充完整。
structnode
{intinfo;
【】Link;
};
32.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。
33.软件是程序、数据和【】的集合。
34.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。
majn()
{FILE*fp;charch;
fp=fopen(______);
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
35.数据结构分为逻辑结构与存储结构,线性链表属于【】。
36.下面程序的输出结果是【】。
longfun5(intn)
{longs;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);}
main()
{longx;
x=fun5(4);
printf("%ld\n",x);}
37.以下程序运行后的输出结果是【】。
main()
{charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
}
38.以下程序的运行结果是()。#defineA4#defineB(x)A*x/2main(){floatc,a=8.0;c=B(A;printf("%f\n",C);}
39.按“先进后出”原则组织数据的数据结构是[]。
40.对长度为8的线性表进行冒泡排序,最坏情况下需要比较的次数为()。
三、1.选择题(20题)41.下面不属于软件设计原则的是()。
A.抽象B.模块化C.自底向上D.信息隐蔽
42.以下程序运行后的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}
A.699B.669C.61515D.6615
43.已知字母A的ASCII码为十进制数65,下面程序的输出结果是()main(){charch1,ch2;ch1=A+5-3;ch2=A+6-3;printf("%d,%c\n",ch1,ch2);}
A.67,DB.B,CC.C,DD.不正确定的值
44.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。
A.0B.1C.2D.3
45.下列判断正确的是()。
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";
46.下列程序的输出结果是_____。main(){inti;for(i='A';i<'I';i++)printf("%c",i+32);printf("\n");}
A.编译不通过,无输出B.acegC.acegiD.abcdefghi
47.下列选项中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
48.下列程序中c的二进制值是()。
chara=2,b=4,C;
c=a^b>>2;
A.00000011B.00010100C.00011100D.00011000
49.在执行完下列的C语句段之后,则B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));
A.0B.1C.TRUED.FALSE
50.函数调用strcat(strcpy(str1,str2),str3)的功能是()。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
C.将字符串str2复制到字符串str1后再将字符串str3连接到字符串str1之后
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中
51.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若从键盘输入:abcdef<回车>,则输出结果是()。
A.defdefB.abcdefC.abedD.dd
52.以下定义语句中正确的是
A.chara='A'b='B';
B.floata=b=10.0;
C.inta=10,*b=&a;
D.float*a,b=&a;
53.已知大写字母F的ASCII码为70,以下程序的运行结果为()#include<stdio.h>main(){charc1='F',c2='p';printf("%d,%d\n",c1,c2);}
A.70,80B.70,81C.70,82D.70,83
54.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
55.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序运行后的输出结果是()。
A.235B.235C.2356D.2356
56.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}该程序的输出结果是
A.987B.876C.8765D.9876
57.有以下定义
#include<stdio.h>
chara[10],*b=a;
不能给a数组输入字符串的语句是
A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(B);
58.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定,else子句总是与()配对。
A.缩排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
59.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}
A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147
60.当说明一个结构体变量时系统分配给它的内存是()。
A.各成员所需要内存量的总和
B.结构中第一个成员所需的内存量
C.成员中占内存最大者所需的容量
D.结构中最后一个成员所需要的内存量
四、选择题(20题)61.
62.若调用fputc函数输出字符成功,则其返回值是()。
A.EOFB.1C.0D.输出的字符
63.有以下程序程序的运行结果是()。
A.321678B.876543C.1098765D.345678
64.有以下程序:
运行时,若输入123450<回车>,则输出结果是()。
A.6566456
B.66656
C.66666
D.6666656
65.下列叙述中正确的是()。
A.一个逻辑数据结构只能有一种存储结构
B.数据的逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
66.
67.下列叙述中正确的是()。A.在c程序的函数中不能定义另一个函数
B.在c程序中main函数的位置是固定的
C.C程序中所有函数之间都可以相互调用
D.每个C程序文件中都必须要有一个main函数
68.
69.如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是()。
A.stdio.hB.string,hC.alloc.hD.math.H
70.下面叙述中,正确的是
A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种
C.C语言的函数可以嵌套定义D.C语言的函数可以嵌套调用
71.
72.
73.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。
A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库
74.已定义以下函数:
fun(char*p2,char*p1)
{while((*p2=*p1)!=’\0’){p1++;p2++;}}
函数的功能是()。
A.将p1所指字符串复制到p2所指向内存空间
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有’\0’
75.若变量c为char类型,能正确判断出c为小写字母的表达式是
A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)
C.(’a’<=c)and(’z’>=c)D.(c>=’a’)&&(c<=’z’)
76.已知inta,b;doublec;,则以下语句中错误的函数调用是
A.scanf("%d,%x,%lf",&a,&b,&c);B.scanf("%d,%d,%le",&a,&b,&c);
C.scanf("%o,%x,%o",&a,&b,&c);D.scanf("%d,%o,%e",&a,&b,&c);
77.以下选项中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
78.程序调试的目的是
A.发现程序中的错误B.改正程序中的错误C.验证程序的正确性D.改善软件的性能
79.以下语句中存在语法错误的是()。
80.冒泡排序的时间复杂度为
A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)
五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参n。计算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若输入6,则应输出0.616667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),该函数的功能是统计一行字符串中单词的个数,并将其作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<string.h>2#include<stdio.h>3#defineN804intfun(char*s)5{67}8voidmain()9{10FILE*wf;11charline[N];12intnum=0;13printf("Enterastring:\n");14gets(line);15num=fun(line);16printf("Thenumberofwordsis:%d\n\n",num);17/*********found*********/18wf=fopen("out.dat","w");19fprintf(wf,"%d",fun("abigcar"));20fclose(wf);21/*********found*********/22}
参考答案
1.CA选项中,没有对指针进行初始化,属于无效指针,并且在“scanf(“%d”,&p);”中无须再进行取地址操作;B选项中,没有对指针进行初始化,属于无效指针;D选项中,语句“*p=&k;”书写错误,应为“P=&k;”。故本题答案为C选项。
2.A解析:本题考查的知识点是数组名作为函数参数及函数调用。reverse()数的功能是将具有n个元素的数组a反序存放。在主函数中调用语句是“reverse(b,8);”,实现的功能是把b数组的前八个元素逆置,所以b数组中依次存放的值为“8,7,6,5,4,3,2,1,9,10”。for循环了4次,分别把b[6]、b[7]、b[8]和b[9]的值(分别是2、1、9、10)加到了s中,s的结果是22,所以最后输出的s值为22。所以4个选项中A正确。
3.C本题考查三目运算符a<b?a:c<d?c:d也可写成a<b?a:(c<d?c:d),所以根据优先级,先算括号内的,c小于d为真取C的值,再看a小于b为假,所以取C的值。
4.D解析:在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo\u3000C\u30002.0中,int占2个字节,但在VisualC++6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。
5.B解析:以2一路归并排序为例进行说明。2一路归并是指将两个有序序列合并成一个有序序列,其基本过程为;从两个序列中各取一个元素,进行比较,输出较小的元素,从较小元素所在序列取下一个元素,与未输出的那个元素比较,输出较小者。依此类推,直到输出序列包含了两个初始有序序列的全部元索。对于一个初始无序的序列,可以先将其等分为两个无序的子序列,对这两个子序列再次二分,重复该过程,直到分出的子序列中仅包含一个元素时(一个元素自然是有序的)为止,然后在反复进行2一路归并的过程,最后完成排序。
6.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。
7.A解析:从main函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行fun(ss,5)函数后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别为xy,aaaacc。
8.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。
9.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
10.C
11.B
12.D
13.D
14.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。题目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,经计算可得29。“S(j+k+2)=j+k+2*k+j+2/j+k+2”,经计算可得29。因此输出为29,29。故本题答案为B选项。
15.B
16.D当k=1时,循环成立,输出w[l]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。
17.D
18.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。
19.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;
表示逻辑条件。
20.B
21.完整性控制完整性控制
22.d1.dat""rb"或"d1.dat""r+b”或"d1.dat""rb+"d1.dat','rb'或'd1.dat','r+b”或'd1.dat','rb+'解析:本题考查的知识点是二进制文件的打开方式。打开文件的函数为fopen('文件名''mode'),其中'mode'表示文件的打开方式.如果打开的是二进制文件,其mode字符串可以是:'rb''wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只读方式打开。'w'表示以写方式打开,如果已有在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件.'a'为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加.当文件不存在,将创建新文件。'r='打开一个已有在文件用于更新(可读可写)。'w+'创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。'a+'打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填'd1.dat','rb'或其他等价的表达法。
23.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
24.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前疗遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。
25.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
26.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。
27.软件开发
28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下—个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。
29.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。
30.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
31.structnode*structnode*解析:link是指向结构体自身的指针,因此link是指针,指向strictnode类型的数据,可定义成“stmctnode*link”。
32.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。
33.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。
34.
35.存储结构
36.9
37.220.000000220.000000解析:注意区分运算符的优先级。先是给c赋值,然后计算x=f*=n/=50,得x=f*=2,最后有x=20。x输出是按浮点数的形式输出的,小数点后的0不能少。
38.16.0
39.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。
40.2828解析:在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为O(n1.5);堆排序所需要的比较次数为O(nlog2n)。
41.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。
42.C解析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。
43.A
44.B解析:先计算关系表达式a<b=2<3为真(表达式为真时,如果变量为int型变量则真用1表示,假用0表示),即a=1。
45.D解析:a='ABCD'书写错误,因为“=”左边不能出现常量;数组名s是代表s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。
46.B
47.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。
48.A解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。
49.B解析:本题考查C语言3个知识点:①将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中;②大写字母的ASCII码值小于其对应小写字母的ASCII码值;③只要逻辑与运算符&&的两个运算对象都为非零,返回值就是1。
50.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。
51.A解析:本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,def所以4个选项中A正确。
52.C解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确,选项D定义一个指针,然后定义了一个变量并让这个变量的初值为该指针变量,显然这这时的指针变量还没初始化就被赋值给变量,是不对的,故选项D不正确,所以,4个选项中选项C符合题意。
53.A
54.D解析:在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。
55.A解析:do-while语句的特点是先执行循环体,然后再判断循环条件是否成立,当循环条件的值为0时循环结束。本题中执行switch语句,寻找与5匹配的case5分支,没有寻找到则执行default后的语句,n=0,k的值变为4,继续执行switch语句,寻找与4匹配的case4分支,找到后开始执行其后的语句“n+=2;k--;”,n的值为2,k的值变为3,遇到break语句跳出该switch语句体。执行print语句输出2;此时n=2,k=3依旧满足do-while循环条件,将用同样的方式再次执行switch语句,直到n=5时不再满足do-while循环条件退出所有的循环。
56.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。
57.B解析:函数gets()的调用形式为gets(str_adr);str_adr是存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。gets函数的参数a[0]不能表示数组a的首地址。
58.B解析:本题考查ifelse语句。C语言规定,else总是与它前面的最近的if配对。
59.C
60.A解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。
61.B\r\n
62.Dfputc函数的一般调用形式为fputc(ch,fp),其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量,fp是文件指针变量。函数的作用是将字符(ch的值)输出到fp所指向的文件中。
fputc函数也返回一个值,如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF(-1)。因此,本题的正确答案选D。
63.A本题中,函数fun()的功能是将数组k中前5个元素倒序,因此返回后数组k中的元素排列是5…432,l,6,7,8,9,10。程序打印输,hqk[21到k[71元素的值,flP321678,所以选择A)。
64.Aswitch语句执行完一个case后面的语句后,流程控制转移到下一个case语句继续执行,遇到break会跳出本次循环。本题中输入l时会输出65,输入2时会输出6,输入3时会输出64,输入4时会输出5,输入5时会输出6,在输入0时不满足循环条件,程序执行结束。
65.D解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。但是不同的存储结构的数据的处理效率不同。
66.C
67.A在C语言中函数不能嵌套定义,所以选择A)。
68.D
69.B头文件;C语言中要用库函数,则需在前面添加头文件。输入输出函数的头文件为”stdio.h”
70.D本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。
C语言程序在编译时的主要任务就是检查程序的语法是否符合规定,因此选项A的描述不正确。
一个程序一般都是从主函数开始运行,之后主程序调用的其他程序段叫子程序。由于C语言的程序段都是以函数形式存在的,所以除了主程序main()函数以外,其他程序中出现的子程序都是函数,而非过程。因此,选项B的描述不正确。
在C语言中,函数是不允许被定义在其他函数里面的,即嵌套定义的。因此,选项C的描述是错误的。
在C语言中,函数不能嵌套定义,但可以嵌套调用和递归调用。嵌套调用是指一个函数在执行过程中,调用了另一个函数,而被调函数在执行时,还可以调用其他函数。因此,本题正确的答案选D。
71.B
72.D
73.B
\n①以内模式为框架所组成的数据库,1物理数据库;②以概念模式为框架所组成的数据库叫概念数据库;③以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。
\n
74.A将p1指向的字符赋给p2,然后再移向下一个字符,直到结束字符0为止,因此这是将p1所指的字符串复制到p2所指的内存空间。
75.D在本题中,首先定义了一个字符型变量c,然后要求找出能判断c中字符为小写字母的表达式。
选项A的表达式′a′<=c<=′z′是一个错误的表达式,系统在编译时,会因为该语句报错。
选项B的表达式(c>=′a′)||(c<=′z′)是判定变量c的字符是大于等于字符a的字符或者小于等于z的字符,这其实相当于ASCII码中所有的字符,不能完成题目的要求。
选项C的表达式(′a′<=c)and(′z′>=c)是一个错误的表达式,在C语言中,没有定义一个and关键字,系统在编译时会报错。
选项D的表达式(c>=′a′)&&(c<=′z′)是判定变量c的字符同时具有大于等于字符a和小于等于z的特点,很显然,这样的字符是小写字母。
通过上面的分析,我们可以知道本题正确的答案是D。
76.C本题主要考查格式输入函数scanf。此函数一般的输入形式是scanf(格式控制,地址表列);。函数“格式控制”的含义同printf函数,以%开始,以一个格式字符结束,中间可以插入附加的字符。常用的格式字符主要有:
d:用来输入有符号的十进制整数。
u:用来输入无符号的十进制整数。
o:用来输入无符号的八进制整数。
x:用来输入无符号的十六进制整数(大小写作用相同)。
c:用来输入单个字符,包括回车键。
s:用来输入字符串,将字符串送到一个字符数组中,在输入时以非空格字符开始,以第一个空格字符结束。字符串以串结束标志’\\0’作为其最后一个字符。
f:用来以小数形式输入实数(包括浮点型和双精度型)。
e:用来以指数形式输入实数。
sc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 配班个人工作总结
- 探讨机器人运动中曲线平滑算法
- 电信运营商行业5G网络覆盖优化方案
- 造纸厂工业流程
- 汽车零部件检测与质量控制手册
- 防止食物中毒的安全教育
- 基于人工智能的农业物联网技术推广方案
- 分析软件项目风险管理的关键步骤
- 企业管理软件选型及实施策略
- 植物种植技术理论与实践试题
- 厨房设备购销合同范本(一)与厨房设备采购合同8篇
- 2025年中储粮吉林分公司招聘(74人)笔试参考题库附带答案详解
- 化粪池清掏协议书范本
- 2024-2025学年九年级化学人教版教科书解读
- 2025年长春医学高等专科学校单招职业技能测试题库及完整答案1套
- 2025年中国大唐集团有限公司重庆分公司高校毕业生招聘笔试参考题库附带答案详解
- 2025年西安铁路职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 化工原理完整(天大版)课件
- 2024年心理咨询师题库附参考答案(达标题)
- 《无人机桨发匹配试验技术规范》
- 2025年度酒店客房预订渠道拓展与合作协议3篇
评论
0/150
提交评论