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