二级C语言笔试148真题含答案与解析交互Word下载.docx
《二级C语言笔试148真题含答案与解析交互Word下载.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试148真题含答案与解析交互Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
D
875421
分值:
1
答案:
C
[解析]本题考查变量的自加“++”和自减“--”问题。
当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为852。
2.
下面程序的输出结果是
#include<stdio.h>
main()
inta[]=1,2,3,4,5,6,7,8,9,0,*p;
p=a;
printf("
%d\n"
,*p+9);
1
10
9
[解析]此题考查了指针引用一维数组元素的方法。
*p+9因为运算符“*”的优先级高于“+”,所以输出结果为p指向的元素1,然后加9,值为10。
3.
下列叙述中正确的是
程序执行的效率与数据的存储结构密切相关
程序执行的效率只取决于程序的控制结构
程序执行的效率只取决于所处理的数据量
以上三种说法都不对
A
[解析]程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。
顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。
4.
inti,j,m=55;
for(i=1;
i<=3;
i++)
for(j=3;
j<=i;
j++)m=m%j;
,m);
2
3
B
[解析]本题考查循环语句的嵌套以及条件的判断问题。
在程序中,内层循环判断条件为“j<=i”,而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。
只有当i和j都等于3时才会执行一次。
m的值为55对3取模,计算结果为1。
5.
在16位IBM-PC机上使用C语言,若有如下定义
structdata
inti;
charch;
doublef;
b;
则结构变量b占用内存的字节数是
7
11
D
[解析]结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。
本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。
6.
假定当前盘符下有两个如下文本文件:
文件名
a1.txt
a2.txt
内容
123#
321#
则下面程序段执行后的结果为
#include"
stdio.h"
voidfc(FILE*p)
charc;
while((c=fgetc(p))!
='
#'
)putchar(c);
FILE*fp;
fp=fopen("
a1.txt"
,"
r"
);
fc(fp);
fclose(fp);
a2.txt"
putchar('
\n'
123321
123
321
以上答案都不正确
[解析]本题的功能是顺序的读两个文本文件;
依次输出。
当打开文件时出现错误,fopen函数将返回NULL。
7.
以下选项中不属于字符常量的是
'
C'
"
C"
\xCC'
\072'
[解析]在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。
选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。
8.
下列叙述中,不符合良好程序设计风格要求的是
程序的效率第一,清晰第二
程序的可读性好
程序中要有必要的注释
输入数据前要有提示信息
[解析]当今主导的程序设计风格是“清晰第一,效率第二”的观点。
结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。
9.
设有定义:
charp[]='
1'
,'
2'
3'
,*q=p;
,以下不能计算出一个char型数据所占字节数的表达式是
sizeof(p)
sizeof(char)
sizeof(*q)
sizeof(p[0])
[解析]在本题中,p和q同为指向字符类型数据的指针。
*q和p[0]同为字符型数据。
选项B)、C)和D)都符合题目的要求;
选项A)计算得出的是指针类型数据所占的内存字节数。
10.
以下关于long、int和short类型数据占用内存大小的叙述中正确的是
均占4个字节
根据数据的大小来决定所占内存的字节数
由用户自己定义
由C语言编译系统决定
[解析]在ANSI标准中,long、int和short分别占用4、2和2个字节。
但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。
11.
下列程序的运行结果为
#include<stdio.h>
voidabc(char*str)
inta,b;
for(a=b=0;
str[a]!
\0'
;
a++)
if(str[a]!
c'
)
str[b++]=str[a];
str[b]='
voidmain()
charstr[]="
abcdef"
abc(str);
str[]=%s"
,str);
str[]=abdef
str[]=abcdef
str[]=a
str[]=ab
[解析]本题考查了用字符指针引用字符数组中的字符及对字符的操作。
函数abc()的for语句执行过程是:
从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为“c”,若不是就执行一次数组元素的赋值过程,若字符为“c”就不执行。
12.
s[12]=1,2,3,4,4,3,2,1,1,1,2,3,c[5]=0,i;
for(i=0;
i<12;
i++)
c[s[i]++;
for(i=l;
i<5;
,c[i]);
\n"
1234
2344
4332
1123
[解析]在for(i=0;
i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。
13.
若变量已正确定义并赋值,以下符合C语言语法的表达式是
a:
=b+1
a=b=c+2
int18.5%3
a=a+7=c+b
[解析]选项A)中包含一个不合法的运算符“:
=”;
选项C)应改为(int)18.5%3;
选项D)可理解为两个表达式:
a+7=c+b和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。
因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:
b=c+2和a=b。
14.
FILE
*fp;
inta[10]=1,2,3,i,n;
d1.dat"
w"
i<3;
fprintf(fp,"
,a[i]);
fprintf(fp,"
d1.dat"
fscanf(fp,"
,&
n);
,n);
12300
[解析]在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。
15.
数据处理的最小单位是
数据
数据元素
数据项
数据结构
[解析]数据处理的最小单位是数据项;
由若干数据项组成数据元素;
数据是指能够被计算机识别、存储和加工处理的信息载体;
数据结构是指数据之间的相互关系和数据运算。
16.
在深度为5的满二叉树中,叶子结点的个数为
32
31
16
15
[解析]满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。
在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点.且深度为m的满二叉树有2m-1个结点。
17.
下面说明不正确的是
chara[10]="
china"
chara[10],*p=a;
p="
char*a;
a="
chara[10],*P;
p=a="
[解析]C语言中操作一个字符串常量的方法有:
①将字符串常量存放在一个字符数组之中;
②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。
当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。
本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。
18.
可在C程序中用作用户标识符的一组标识符是
and
2007
Date
y-m-d
Hi
Dr.Tom