2017年计算机二级C语言模拟题及答案
1.1 单选题
A.A25 B.My_car
C.My-str D.abc
2.下列常量中,十六进制int型常量是( A )。
A.0x5f B.x2a
C.046 D.7a
3.下列常量中,不是字符常量的是( B )。
A.'\n' B."y"
C.'x' D.'\7'
4.在函数体内定义了下述变量a,a的存储类为( D )。
int a
A.寄存器类 B.外部类
C.静态类 D.自动类
5.下列关于变量存储类的描述中,错误的是( C )。
A.任何变量定义后都具有一个确定的存储类
B.变量的存储类确定了变量的作用域和寿命
C.定义变量时没有存储类说明符者一律为自动类
D.内部静态类变量和外部静态类变量的存储类说明符都是static
6.下列关于变量数据类型的描述中,错误的是( A )。
A.定义变量时int型数据类型可以省略
B.变量的数据类型可以决定该变量占内存的字节数
C.变量的数据类型是可以被强制的
D.变量的数据类型是有高低之分的
7.长双精度浮点型常量的后缀是( C )。
A.U B.F
C.L D.无
8.下列运算符中,不能用于浮点数操作的是( D )。
A.++ B.+
C.*= D.&(双目)
9.下列运算符中,优先级最高的是( A )。
A.*(双目) B.||
C.>>D.%=
10.下列运算符中,优先级最低的是( B )。
A.== B.?:
C.| D.&&
11.已知:int a(3)下列表达式中,错误的是( C )。
A.a%2==0 B.a--+2
C.(a2)++ D.a>>=2
12.已知:int b(5),下列表达式中,正确的是( D )。
A.b="a" B.++(b1)
C.b%2.5 D.b=3,b+1,b+2
6
13.下列关于类型转换的'描述中,错误的是( C )。
A.类型转换运算符是(<类型>)
B.类型转换运算符是单目运算符
C.类型转换运算符通常用于保值转换中
D.类型转换运算符作用于表达式左边
1.1 判断题
×1.C++语言和C语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C语言是C++语言的一个子集。C++语言继承了C语言。
×4.C++语言程序与C语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比C语言对数据类型要求更加严格了。
√7.C++语言对C语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。
√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。
通过对1.5题中3个程序的修改,回答下列问题
从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。
答:C++程序要包含iostraem.h,main()函数前应加类型说明符void。
C++程序中所出现的变量是否必须先说明后使用?在函数体内说明变量时是否都要放在函数体的开头?
答:C++程序中所出现的变量必须先说明后使用。在函数体内说明变量时不一定要放在函数体的开头。
使用cout和插入符(<<)输出字符串常量时应注意什么?
答:可输出一个字符串常量,也可输出多个字符串常量。每输出一个字符串常量要使用一次插入符(<<)。
程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?
答:不能使用。因为它的值不确定。
5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?
答:不一定正确。可能还有算法错。
{ char x=0xFFFFprintf("%d\n",x--)}
A.-32767
B.FFFE
C.1
D.32768
22.下面的函数调用语句中func函数的实参个数是( )。
func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3
B.4
C.5
D.8
23.语句“printf("akbre"\’hi\’y\\\bou\n")”的输出结果是( )。
A.akbre\’hi\’y ’\\\bou
B.a\bre\’hi\\y\bou
C.re ’hi’you
D.abre’hi’y\bou
24.下面程序输出的是( )。
main()
{ int t=lfun(fun(t))}
fun(int h)
{ static int a[3]={1.2.3}
int k
for(k=0k<3k++)a[k]+=a[k]-h
for(k=0k<3k++)printf("%d",a[k])
printf("\n")
return(a[h])}
A.1,2,3,
1,5,9,
B.1,3,5,
1,3,j,
C.1,3,5,
0,4,8,
D.1,3。5,
-1,3,7,
25.以下叙述中正确的是( )。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
c.每个C程序必须在开头包含预处理命令行:#include
D.C语言的预处理不能实现宏定义和条件编译的功能
26.为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与( )配对。
A.缩排位置相同if
B.其前面最近的if
C.其后面最近的if
D.同一行上的if
27.设有下列程序段:
char str[]="HelloWorld":
char* plr
ptr=str:
执行上面的程序段后,*(ptr+10)的'值为( )。
A.’\0 ’
B.’0’
C.不确定的值
D.’0’的地址
28.有以下程序:
void swap(char*x,char*y)
{ char t
t=*x*x=*y*y=t
}
main()
{ char*s1="abe",*s2="123":
swap(s1,s2)
printf("%s,%s\n",s1,s2)
}
程序执行后的输出结果是( )。
A.123,abe
B.abc.123
C.1bc,a23
D.321,cba
29.下列程序的运行结果是( )。
#include
main()
{ static char a[]="Languagef",b[]="programe":
char*p1,*p2int k
p1=ap2=b
for(k=0k<=8k++)
if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k)):
}
A.gae
B.ang
C.program
D.有语法错
30.下列程序的运行结果为( )。
#define MAX(x,y)(x)>(y)?(x):(y)
main()
{ int a=2,b=3,C=1,d=3,t:
printf("%d\n",(MAX(a+h,c+d))*100):
}
A.500
B.5
C.4
D.400
31.设int x=7,则~x的值是()。
A.-8
B.7
C.-1
D.1
32.有以下程序:
void fun(char*a,char*b)
{a=b(*a)++}
main()
{char c1=’A ’,c2=’a’,*p1,*p2
p1=&c1p2=*c2fun(p1,p2)
printf("%C%c\n",c1,c2)
}
程序运行后的输出结果是()。
A.Ab
B.aa
C.Aa
D.Bb
33.有以下程序:
int fun(int n)
{if(n==l)return l
else return(n+fun(n一1)):
}
main()
{int x
scanf("%d",&x)x=fun(x)printf("%d\n",
x):
}
执行程序时,给变量X输入10,程序的输出结果是()。
A.55
B.54
C.65
D.45
34.有以下程序:
void f(int x,int y)
{int t
if(x}
main()
{int a=4,b=3,c=5
f(a,b)f(a,c)f(b,c)
printf("%d,%d,%d\n",a,b,c)
}
执行后输出结果是()。
A.3,4,5
B.5,3,4
C.5,4,3
D.4,3,5
35.以下程序的输出结果是()。
main()
{char*s="12134211"
int v[4]=(0,0,0,0),k,i
for(k=0s[k]k++)
{switch(s[k])
{case’1’:i=0
case’2’:i=1
case’3’:i=2
计算机二级C语言题型和评分标准:1、选择题:40题,每题1分。按标答给分2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分
3、程序改错:2处错误,每处9分,共18分。都是/*found*/下面的一行有错误,按标答给分,如果和标答的写法不一样,就算对的也没有分。
4、程序编制题:共24分。按程序结果给分。编程完成后,存盘,编译,连接,执行,按题目要求输入,得到要求的结果就有24分,否则就是0分。
上机考试填空和改错题是按空给分的,它是按行找到那个空,然后对比打分,这也就是为什么不让你增加或减少行数的原因了.对于最后一个编程题,也是差不多按这个方法来的,它把你把你编好的程序的运行结果保存在.dat文件内,然后对比,再给出你的分数.这个文件你可以在考生文件夹内看到,所以考完一定要检查一下这个文件,以免出现什么问题影响考试成绩.
对于编程题,评分程序先是读取考生文件夹下的扩展名为.DAT的文件,再其中的数据与评分程序中的提供的数据进行对比,因此,考生在编程后,一定要运行程序,以生成扩展名为.DAT的输出文件!!