2015年计算机二级《C语言》考前押题密卷
参考解析:水平制表符中,’\t'表示的是横向跳若干格;选项B中,’\039’错误,’\039’是八进制形式表的字符,最大数为7,但其中出现'9',’,’是字符逗号;选项D中,7\n’表示的是换行。
2下列函数的类型是( )。
fun(double x)
{float y;
y=3*x-4;
return y;
}
A.intB.不确定C.voidD.float
参考答案:A
参考解析:本题考查函数值的类型。在函数调用时,尽管y的类型是float,x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。
3软件生命周期是指( )。
A.软件产品从提出、实现、使用维护到停止使用退役的过程
B.软件从需求分析、设计、实现到测试完成的过程
C.软件的开发过程
D.软件的运行维护过程
参考答案:A
参考解析:软件生命周期(SystemsDevelopmenlLifeCyele,SDlC)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。
4有如下程序:
main()
f int x=23:
do
{printf(”%d”,x——);}
while(!x);
}
该程序的执行结果是( )。
A.321B.22C.不输出任何内容D.陷入死循环
参考解析:本题考查d0-while语句,当X一23时,执行d0后的语句,x一一的表达式值为x=x-1,此时X的值为22,而!X为0,因此while循环不成立,退出,故选择B选项。
5已有定义:char C;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是( )。
A.isupper(c)
B.'A'<一c<='Z'
C.'A'<一c&&c<='Z'
D.c<=('z'-32)&&('a'—32)<=c
参考解析:选项B先计算关系表达式“『A7<一c”的值是0还是l,再比较该值与字符'z'之间的大小关系,不能实现题目所要求的功能。
6下列叙述中不正确的是( )。
A.在c语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在c的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
参考解析:在程序运行中局部变量所在的函数被调用时,编译系统根据需要临时分配内存,调用结束空间解放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存未知的情况下,最好不要使用全局变量。
7定义下列结构体(联合)数组:
struet St
{char name[15];
int age;
)a[10]={”ZHA()”,14,”WANG”,15,”LIU”,16,”
ZHANG”,17);
执行语句printf(”%d,%c”,a[2].age,*(a[3].name+2))的输出结果为( )。
A.15,AB.16,HC.16,AD.17,H
参考答案:C
参考解析:本题考查结构体数组。a[2].age为结构体a[2]的age成员,即a[3],name为指向结构体a[3]的flame成员的第一个元素的指针,即指向“2”,(a[3].name+2)将指针后移两位指向第三个元素“A”,*(a[3].name+2)是取指针所指向地址的内容。
8若变量已正确定义为float型,要通过输入语句:scanf(”%f%f%f”,&a,&b,&c);给a赋值11.0,b赋值22.0,e赋值33.0,不正确的输入形式是( )。
A.11 22 33
B.11.0,22.0,33.0
C.11.0 22.0 33.0
D.1122
参考解析:B选项中不应该加“,”号。
9以下叙述中正确的是( )。
A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地表示
B.C程序由主函数组成
C.C程序由若干函数组成
D.C程序中只允许包含一个函数
参考答案:C
参考解析:整型是没有问题的.实型在存诸的时候,是用科学记数法存的,没有办法得到准确值的,是有一定误差的。C程序是由若干的函数组成,不只有主函数,函数是c程序的基本组成部分。但是C程序中必须有一个而且只能有一个以main(主函数)开头的函数,因为c程序的执行是从main函数开始的,所以正确选项为C。
10C语言中运算对象必须是整型的运算符是( )。
A.%B./C.!D.**
参考答案:A
参考解析:%既然求余数,运算对象必须是整数。
11下列关于定点数与浮点数的叙述中错误的是( )。
A.在实数的浮点表示中,阶码是一个整数
B.整数是实数的特例,也可以用浮点数表示
C.实数的补码是其对应的反码在最后一位加1
D.相同长度的浮点数和定点数,前者可表示数的范围要大于后者
参考答案:C
参考解析:正整数的补码与其原码一致;负整数的褂 码是其对应的反码在最后一位加l。
12表达式'5'-'1'的值是( )。
A.整数4B.字符4C.表达式不合法D.字符6
参考答案:A
参考解析:在C语言中,字符都是变为其对应的ASCIl码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCIl码值相差仍是4。
13有以下程序:
#include
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10),*p=a;
printf(”%a\n”,*(p+2));
)
程序的输出结果是( )。
A.3B.4C.1D.2
参考答案:A
参考解析:*p—a;P指向首地址,*(p+2))往后移
动两个元素,指向3,所以正确答案为A。
14在C语言中,函数返回值的类型最终取决于( )。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
参考答案:A
参考解析:在C语言中,函数返回的类型最终取决于函数定义时在函数首部所说明的函数类型,与调用函数时主调函数所传递的实参类型和函数定义时形参的类型无关,而retllrn语句表达式的值将强制转换为函数定义时在函数首部所说明的函数类型返回。
15下列程序的运行结果是( )。
#included
void main()
{int s=0,k;
for(k=7;k>1;k--)
{switch(k)
{case 1:
case 4:
case 7:
s++:
break;
case 2:
case 3:
case 6:break;
case 0:
case 5:
s+=2:
break;
))
print[(”S=%d”,s);
}
A.S=3B.s=4C.s=5D.无输出结果
参考解析:运行程序,当k一7时switch(7)执行case:7,s+十后S一1,break跳出。k一一,k=7继续循环switch(6),执行case6;直接跳出循环,k一一变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s—s+2,此时S为3,break跳出,k变为4,继续循环,执行ease4为空,继续执行case7;s++为4跳出循环,k一一变为3,继续循环,执行case3,空语句往下执行case6,跳出,k一一为2,继续循环,执行case2;空语句往下执行ease3,空语句再执行case7,跳出循环,k一一为1不符合循环,退出,此时s=4。
16设x为int型变量,则执行以下语句后,X的值为( )。
x=10;x=x-=x-x:
A.10B.20C.40D.30
参考答案:A
参考解析:执行x—X--=X--x语句可写成x=x一(x—x),可看出结果为10,故A选项正确。
17有以下程序:
#include
void WriteStr(char*fn.char*str)
{FILE*fp
fp=fopen(fn,”w”);fputs(str,fp);fclose(fp);)
main()
{ WriteStr(”t1.dat”,”start”);
WriteStr(”t1.dat”,”end”);)
程序运行后,文件t1.dat中的内容是( )。
A.startB.endC.starte ndD.endrt
参考解析:用”w”方式打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。
18若程序中有宏定义行:#define N 100,则以下叙述中正确的是( )。
A.宏定义行中定义了标识符N的值为整数100
B.在编译程序对C源程序进行预处理时用100替换标识符N
C.对C源程序进行编译时用100替换标识符N
D.在运行时用100替换标识符N
参考解析:C语言中,凡是以“#”号开头的行,都称为“编译预处理”。对c源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理。
19合法的八进制数是( )。
A.0B.028C.-077D.01.0
参考答案:A
参考解析:八进制数里没有8,7完了就要进位的,并且八进制里没有小数位的。因此选项A是正确的。
20以下选项中不合法的用户标识符是( )。
A._123B.printfC.A$D.Dim
参考答案:C
参考解析:c语言规定标识符只能由字母、数字、下划线组成,并且只能由字母或下划线开头,不能以数字开头。c项中包含$特殊符号,所以c项不合法。
21若有以下程序:
#include
void fun(float*a,float*b)
( float w;
*a=*a+*a;w= *a;*a= *b;*b=W;
}
main()
{ float x=2..0,y=3.0,*px=&x,*py=&y;
fun(px,py);printf(”%2.of,%2.0fkn”,X,y);
)
程序的输出结果是( )。
A.4,3B.2,3C.3,4D.3,2
参考答案:C
参考解析:include
voidfun(float*a,float*b)//a即指向px的指针,b即指向py的指针,则*a指向x,*b指向y
{
floatW;
*a-*a+*a;//将x地址存放的数据自加,x变为4
W=*a:*a=*b:*b=w;//将x和Y地址里面的数据互换,则x变
为3,Y变为4)
main(){
floatx=2.0,y=3.0,*px=&x,*py=&-y;//px和py分别是指向X和Y地址的指针
fun(px,PY);
printf(”%2.Of,%2.of\n”,x,y);//%2.0f表示结果前面有2个空格,小数点后有0位,即保留到个位}
22下列程序的运行结果是( )。
#include
#define ADD(x)X+X
main()
{ int m=1,n=2,k=3:
int s=ADD(m十n)*k;
printf(”s=%d”,s):
}
A.sum=18B.sum=10C.sum=9D.sum=25
参考解析:本题考查带参数的宏的定义:“#defineADD(x)X+x”中x代表m+n,故s写成s=m+n+m+r*k=l+2十1+2*3=l0。
23若有以下说明,则( )不是对strcpy库函数正确的调用。
strcpy库函数用于复制一个字符串:char*str1==”abed”,str1[10],*str3="hijklmn",*str4[-2],*str5=”aaaa”;
A.strcpy(str2,str1)
B.strcpy(str3,str1)
C.strcpy(str1,str2)
D.strcpy(str5,str1)
参考答案:C
参考解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中。要保证s1存储区能容纳下s2字符串。
24C语言中,字符(char)型数据在微机内存中的存储形式是( )。
A.反码B.补码C.EBCDIC码D.ASCIl码
参考答案:D
参考解析:其他3个是用来进行数值处理的。
25有以下程序:
#include
main()
{int a[J一{1,2,3,4,5,6,7,8,9,10,11,12),*P=a
+5;
*q=NULL;+q=*(p+5);
printf(”%d%d\n”,*q,*q);
}
程序运行后的输出结果是( )。
A.运后后报错B.6 6C.6 11D.5 10
参考答案:A
参考解析:本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p-a+5语句使得P指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。第25题 笔记记录我的笔记(0) | 精选笔记(11)选择笔记标签:试题内容(11)答案解析(0)
26有以下程序:
#include
main()
{int i,X[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf(”%d,”,x[i][2-i]);
{
程序的输出结果是( )。
A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,
参考答案:C
参考解析:即输出xE03[2]x[1][1]x[2][o]分别为357。