二级C语言26.docx
- 文档编号:4285295
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:21
- 大小:26.34KB
二级C语言26.docx
《二级C语言26.docx》由会员分享,可在线阅读,更多相关《二级C语言26.docx(21页珍藏版)》请在冰豆网上搜索。
二级C语言26
二级C语言-26
(总分:
79.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
35,分数:
50.00)
1.若有如下说明,则_______的叙述是正确的。
structst
{inta;
intb[2];
}a;
∙A.结构体变量a与结构体成员a同名,定义是非法的
∙B.程序只在执行到该定义时才为结构体st分配存储单元
∙C.程序运行时为结构体st分配6个字节存储单元
∙D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是aa,变量a处于不同的“层次”上,系统完全能够分情。
st是一个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。
2.下列有关数据库的描述,正确的是
∙A.数据库是一个DBF文件
∙B.数据库是一个关系
∙C.数据库是一个结构化的数据集合
∙D.数据库是一组文件
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。
数据库中的数据具有“集成”、“共享”之特点。
3.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为{{U}}{{/U}}
∙A.a<>0
∙B.!
a
∙C.a=0
∙D.a
(分数:
1.00)
A.
B.
C.
D. √
解析:
4.下列能正确定义一维数组的选项是{{U}}{{/U}}。
∙A.inta[5]={0,1,2,3,4,5};
∙B.chara[]={0,1,2,3,4,5};
∙C.chara={'A','B','C'};
∙D.inta[5]="0123";
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项A)错误;选项C中定义的是一个字符变量C;选项D)中整型数组a中只能存储整型数据,而不能存储字符串常量“0123”。
5.函数rewind的作用是
∙A.使文件位置指针重新返回文件的开始位置
∙B.将文件位置指针指向文件中所要求的特定位置
∙C.使文件位置指针指向文件的末尾
∙D.使文件位置指针自动移至下一个字符位置
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]函数rewind的功能是将文件指针重新指向一个流的开头。
用法如下:
intrewind(FILE*stream);并且无返值。
6.下述程序的输出结果是
#include<stdio.h>
voidmain()
{inta[5]={2,4,6,8,10};
int*p=a,**q=&p;
printf("%d,",*(p++));
pfintf("%d",**q);}
∙A.4,4
∙B.2,2
∙C.4,5
∙D.2,4
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]考查一维数组的指针和指向指针的指针两个知识点。
[解题要点]通过赋值,指针p和q都指向了数组a的首地址,*(p++)先引用数组元素,然后p++,所以输出结果为2,**q指向的数组元素为4。
[考点链接]通过建立一个指针数组来引用二维数组元素。
7.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
∙A.EOF
∙B.-1
∙C.1
∙D.NULL
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。
foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。
如果遇到文件结束就返回1,否则返回0。
8.有以下程序:
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c/n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始):
123<回车>
45678<回车>
则输出结果是
∙A.1267
∙B.1256
∙C.1278
∙D.1245
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]putchar(c1)输出1,putchar(c2)输出2,printf("%c%c/n",c5,c6)输出45。
9.以下程序的输出结果是{{U}}{{/U}}。
#include<stdio.h>
inta[3][3]={1,2,3,4,5,6,7,8,9},*p;
main()
{p=(int*)malloc(sizeof(int));
f(p,a);
printf("%d/n",*p);
free(p);
}
f(int*s,intp[][3])
*s=p[1][1];)
∙A.1
∙B.4
∙C.7
∙D.5
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]本题考查了二维数组元素引用的方法。
题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。
10.有以下定义语句,编译时会出现编译错误的是
∙A.chara='a';
∙B.chara='/n';
∙C.chara='aa';
∙D.chara='/x2d';
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]aa是字符串,字符串的表示要用双引号,可以赋值给字符数组和字符指针变量,但字符串不能赋值给字符变量,只能给字符变量赋值单个字符。
11.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是{{U}}{{/U}}。
∙A.b%(c%4)
∙B.b%(c-a%5)
∙C.b%a-a%5
∙D.(b%a)-(a%4)
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。
12.有以下程序
main()
{inta,b,d=25;
a=d/10%9;b=a&&(-1)
printf("%d,%d/n",a,b);
}
程序运行后的输出结果是______。
∙A.6,1
∙B.2,1
∙C.6,0
∙D.2,0
(分数:
1.00)
A.
B. √
C.
D.
解析:
13.函数rewind的作用是
∙A.使文件位置指针重新返回文件的开始位置
∙B.将文件位置指针指向文件中所要求的特定位置
∙C.使文件位置指针指向文件的末尾
∙D.使文件位置指针自动移至下一个字符位置
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]函数rewind的功能是将文件指针重新指向一个流的开头。
用法如下:
intrewind(FILE*stream);并且无返值。
14.微型计算机的性能主要取决于()
∙A.内存
∙B.中央处理器
∙C.硬盘
∙D.显示卡
(分数:
1.00)
A.
B. √
C.
D.
解析:
15.以下语句或语句组中,能正确进行字符串赋值的是________。
∙A.char*sp;*sp="right!
";
∙B.chars[10];s="right!
";
∙C.chars[10];*s="right!
";
∙D.char*sp="right!
";
(分数:
2.00)
A.
B.
C.
D. √
解析:
16.有以下程序:
int*f(int*x,int*y)
{if(*x<*y)returnx;
elsereturny;
}
main()
{
inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=f(p,q);
printf("%d,%d,%d/n",*p,*q,*r);
}
程序运行后输出结果是______。
∙A.7,8,8
∙B.7,8,7
∙C.8,7,7
∙D.8,7,8
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]f函数的功能是返回地址为x,y的两个数中值较的数的地址,本题输出结果是7,8,7。
17.软磁盘最外边的磁道数是()
∙A.0
∙B.1
∙C.39
∙D.79
(分数:
1.00)
A. √
B.
C.
D.
解析:
18.为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else配对原则是______。
∙A.else子句与缩排位置相同的if配对
∙B.else子句与其之前最近的未被配对的if配对
∙C.else子句与其之后最近的if配对
∙D.else子句与同一行上的if配对
(分数:
1.00)
A.
B. √
C.
D.
解析:
19.有以下程序
#include
main()
{FILE*fp;inti,k,n;
fp=fopen("data.dat","w+");
for(i=1;i<6;i++)
{fprintf(fp,"%d",i);
if(i%3==0)fprintf(fp,"/n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);printf("%d%d/n",k,n);
fclose(fp);
}
程序运行后的输出结果是______。
∙A.00
∙B.12345
∙C.14
∙D.12
(分数:
2.00)
A.
B.
C.
D. √
解析:
20.下列选项中,不属于模块间耦合的是
∙A.数据耦合
∙B.标记耦合
∙C.异构耦合
∙D.公共耦合
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。
按照耦合程度从强到弱分别是:
内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。
21.有以下程序:
#include<stdio.h>
#include<stdlib.h>
intfun(intn)
{int*p;
p=(int*)malloc(sizeof(int));
*p=n;return*p;
}
main()
{inta;
a=fun(10);printf("%d/n",a+fun(10));
}
程序的运行结果是
∙A.0
∙B.10
∙C.20
∙D.出错
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]分配内存空间函数malloc的调用形式:
(类型说明符*)malloc(size)。
其功能是在内存的动态存储区中分配一块长度为“size”字节的连续区域,函数的返回值为该区域的首地址。
“类型说明符”表示把该区域用于何种数据类型。
22.有以下程序:
main()
{
chara[7]="a0/0a0/0";
inti,j;
i=sizeof(a);
j=strlen(a);
printf("%d%d/n",i,j);
}
程序运行后的输出结果是
∙A.22
∙B.76
∙C.72
∙D.62
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]字符数组的元素数量在定义时已经确定,与其存储的内容无关,本题中语句chara[7]定义了由7个字符元素组成的字符数组,其sizeof(a)=7。
字符数组常常存储字符串,但其存储的字符串长度与数组长度没有直接关联。
C语言规定,字符串从首字符开始,以第一个值为ASCII码0的字符结尾,其中的非0字符数量就是字符串的长度。
在本题中,a[0]='a',a[1]='0',a[2]=0,从首字符位置a[0]到第一个ASCII值为0的字符a[2],其中共有2个非0字符,因此strlen(a)=2。
23.算法的空间复杂度是指{{U}}{{/U}}。
∙A.算法程序的长度
∙B.算法程序中的指令条数
∙C.算法程序所占的存储空间
∙D.算法执行过程中所需要的存储空间
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]算法的空间复杂度,是指执行这个算法所需的存储空间。
算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间,以及算法执行过程中所需要的额外空间。
24.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'/101'是()。
∙A.字符A
∙B.字符a
∙C.字符e
∙D.非法的常量
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]本题的关键是八进制101的十进制是多少。
八进制的101转换为十进制为65,也就是字符A的ASCII码。
故应该选择A。
25.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为{{U}}{{/U}}。
ch='b';
k=10;
printf("%x,%O,",ch,ch,k);
printf("k=%%d/n",k);
∙A.因变量类型与格式描述符的类型不匹配,输出无定值
∙B.输出项与格式描述符个数不符,输出为0值或不定值
∙C.62,142,k=%d
∙D.62,142,k=%10
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个pfintf函数,有两个%说明,第1个%后面的字符要原样输出。
[知识拓展]本题考查printf函数的格式。
①“%x”和“%o”分别表示以十六进制和八进制无符号型输出整型数据(不带前导Ox或O):
②printf函数中格式说明符之前插入的任何字符都原样输出:
⑧格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。
26.若主函数中有以下定义和语句:
main()
{doublea[3][4];
……
fun(a);
}
则正确的fun函数的首部是{{U}}{{/U}}
∙A.voidfun(double*s)
∙B.fun(double*s[4])
∙C.fun(double(*s)[3])
∙D.voidfun(double(*s)[4])
(分数:
1.00)
A.
B.
C.
D. √
解析:
27.下列设备不是输出设备的是______。
∙A.显示器
∙B.打印机
∙C.绘图仪
∙D.扫描仪
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]扫描仪属于输入设备。
28.以下选项中,不能作为合法常量的是{{U}}{{/U}}。
∙A.1.234e04
∙B.1.234e0.4
∙C.1.234e+4
∙D.1.234e0
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]本题考查的是C语言中实型常量的指数表示法。
实型常量的指数表示法是用字母e(或E)将一个实数的小数部分和指数部分分隔开。
字母e(或E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。
故选项B)不正确。
所以,4个选项中选项B)符合题意。
29.在设计程序时,应采纳的原则之一是______。
∙A.程序结构应有助于读者理解
∙B.不限制goto语句的使用
∙C.减少或取消注解行
∙D.程序越短越好
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]滥用goto语句将使程序流程无规律,可读性差:
添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。
30.设有以下定义:
uniondata
{intd1;floatd2;}demo;
则下面叙述中错误的是{{U}}{{/U}}。
∙A.变量demo与成员d2所占的内存字节数相同
∙B.变量demo中各成员的地址相同
∙C.变量demo和各成员的地址相同
∙D.若给demo.d1赋99后,demo.d2中的值是99.0
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题中float所占内存字节数为4,而int类型在VC6.0中占4字节,所以demo就与成员d2所占字节数是相同的,选项A的说法正确。
联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。
故选项B和C都是正确的。
由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。
故选项D不正确,答案应该选择D。
31.请选出正确的程序段______。
∙A.int*pscanf("%d"",p);……
∙B.int*s,k;*s=100;……
∙C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……
∙D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]本题的A和B犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量,因此不能进行赋值操作。
另外,在选项D中,s是int指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。
32.若有以下定义和语句:
#include<stdio.h>
chars1[10]="abcd!
",*s2="/n123/";
printf("%d%d/n",strlen(s1),strlen(s2));
则输出结果是______。
∙A.107
∙B.105
∙C.55
∙D.58
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]strlen函数返回字符串的长度,求字符串长度时,遇到结束标识'/0'为止,但是长度不包括结束标识。
字符数组s1的后5个元素没有赋值,都为'/0',即"abcd!
"后为'/0',所以strlen(s1)的值为5。
字符指针s2所指向的字符串中,/n为转义字符换行符,表示1个字符,//也为转义字符,代表/,也是1个字符,其后为字符串结束标识'0';所以strlen(s2)的值也为5。
因此C选项正确。
33.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a<b?
a:
c<d?
c:
d的值是{{U}}{{/U}}。
∙A.1
∙B.2
∙C.3
∙D.4
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]条件表达式的形式如下:
表达式17表达式2:
表达式3,所以本题条件表达式a<b?
a:
c<d?
c:
d应该理解为a<b?
a:
(c<d?
c:
D),首先求出条件表达式c<d?
c:
d的值等于2,再求条件表达式a<b?
a:
2的值,由于a=1<b=4成立,所以上述条件表达式的值等于1。
34.关于结构化程序设计原则和方法的描述错误的是{{U}}{{/U}}。
∙A.选用的结构只准许有一个入口和一个出口
∙B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
∙C.不允许使用GOTO语句
∙D.语言中所没有的控制结构,应该采用前后一致的方法来模拟
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。
其他3项为结构化程序设计的原则。
35.不合法的main函数命令行参数表示形式是{{U}}{{/U}}A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)C)main(intargv,char*argc[])
(分数:
1.00)
A.
B.
C. √
D.
解析:
二、{{B}}填空题{{/B}}(总题数:
15,分数:
29.00)
36.线性表的存储结构主要分为顺序存储结构和链式存储结构。
队列是一种特殊的线性表,循环队列是队列的{{U}}{{U}}{{/U}}{{/U}}存储结构。
填空项1:
__________________ (正确答案:
顺序)
解析:
[解析]本题考查数据结构的队列。
队列是一种特殊的线性表,即限定在表的一端进行删除,在表的另一端进行插入操作的线性表。
允许删除的一端叫做队头,允许插入的一端叫做队尾。
线性表的存储结构主要分为顺序存储结构和链式存储结构。
当队列用链式存储结构实现时,就称为链队列;当队列用顺序存储结构实现时,就称为循环表。
因此,本题划线处应填入“顺序”。
37.下面程序将二维数a的行和列元素互换后存放另一个二维数组b中。
请填空。
main(){inta[2][3]={{1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 26
![提示](https://static.bdocx.com/images/bang_tan.gif)