全国计算机二级c语言考试题库
在全国计算机二级c语言考试的题库中,有哪些类型的题目呢?下面是学习啦小编给大家整理的计算机二级c语言考试题库选择题及答案,供大家参阅!
计算机二级c语言考试题库单选题
1.有以下程序
#include
main( )
(int n=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
)
程序运行后的输出结果是( )。
A.O2
B.13
C.57
D.12
2.有以下定义语句,编译时会出现编译错误的是( )。
A.char a=’a’;
B.char a=’\n’
C.char a=’aa’;
D.char a=’\x2d’;
3.有以下程序
#include
main( )
{char cl,c2;
cl=’A’+’8’-’4’
c2=’A’+’8’-’5’;
printf("%C,%d\n",cl,c2);
)
已知字母A的ASCIl码为65,程序运行后的输出结果是( )。
A.E,69
B.D,69
C.E,D
D.输出无定值
4.有以下程序
#include
void fun(int p)
{int d=2;
p=d++;printf("%d".p);}
main( )
{int a=1;
fun(a):printf("%d\n",a);)
程序运行后的输出结果是( )。
A.32
B.12
C.21
D.22
5.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致
不能实现预定功能。
#define MIN-2147483647
int findmax(int x[],int n)
{int i,max;
for(i=0;i {max=MIN;
if(max return max;
)
造成错误的原因是( )。
A.定义语句“int i,max;”中max未赋初值
B.赋值语句“max=MIN;”中,不应给max赋MIN值
C.语句“if(max D.赋值语句“max—MIN;”放错了位置
6.有以下程序:
#include
main( )
{int m=1,n=2,*p=&m,*q=&n,*r;
r=P;P=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*P,*q);
}
程序运行后的输出结果是( )。
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
7.若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。
A.D=a
B.q[i]=a[i]
C.p=a[l]
D.P=&a[2][1]
8.有以下程序:
#include
#include
main( )
{char str[][20][{"One*World","One*Dream!"},*p=str[1];
prinft("%d,",strlen(p));printf("%s\n",p);
)
程序运行后的输出结果是( )。
A.9,0ne*World
B.9,0ne*Dream!
C.10,One*Dream!
D.10,Ome*World
9.有以下程序
#include
main( )
{int a[]={2,3,5,4),i;
for(i=0;i<4;i++)
switch(i%2)
{case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case l:a[i]--;
}break;
case l:a[i]=0;
)
for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");
程序运行后的输出结果是( )。
A.3344
B.2050
C.3040
D.0304
10.有以下程序
#include
#incl ude
main( )
{char a[10]=”abcd”;
printf("%d,%d\n",strlen(a),sizeof(a));
)
程序运行后的输出结果是( )。
A.7,4
B.4,10
C.8,8
D.10,10
11.下面是有关C语言字符数组的描述,其中错误的是( )。
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
12.下列函数的功能是( )。
fun(char*a,char*b).
{while((*b=*a)!=’
全国计算机二级c语言考试题库
在全国计算机二级c语言考试的题库中,有哪些类型的题目呢?下面是学习啦小编给大家整理的计算机二级c语言考试题库选择题及答案,供大家参阅!
计算机二级c语言考试题库单选题
1.有以下程序
#include
main( )
(int n=2,k=0;
while(k++&&n++>2);
printf("%d%d\n",k,n);
)
程序运行后的输出结果是( )。
A.O2
B.13
C.57
D.12
2.有以下定义语句,编译时会出现编译错误的是( )。
A.char a=’a’;
B.char a=’\n’
C.char a=’aa’;
D.char a=’\x2d’;
3.有以下程序
#include
main( )
{char cl,c2;
cl=’A’+’8’-’4’
c2=’A’+’8’-’5’;
printf("%C,%d\n",cl,c2);
)
已知字母A的ASCIl码为65,程序运行后的输出结果是( )。
A.E,69
B.D,69
C.E,D
D.输出无定值
4.有以下程序
#include
void fun(int p)
{int d=2;
p=d++;printf("%d".p);}
main( )
{int a=1;
fun(a):printf("%d\n",a);)
程序运行后的输出结果是( )。
A.32
B.12
C.21
D.22
5.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致
不能实现预定功能。
#define MIN-2147483647
int findmax(int x[],int n)
{int i,max;
for(i=0;i {max=MIN;
if(max return max;
)
造成错误的原因是( )。
A.定义语句“int i,max;”中max未赋初值
B.赋值语句“max=MIN;”中,不应给max赋MIN值
C.语句“if(max D.赋值语句“max—MIN;”放错了位置
6.有以下程序:
#include
main( )
{int m=1,n=2,*p=&m,*q=&n,*r;
r=P;P=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*P,*q);
}
程序运行后的输出结果是( )。
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
7.若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。
A.D=a
B.q[i]=a[i]
C.p=a[l]
D.P=&a[2][1]
8.有以下程序:
#include
#include
main( )
{char str[][20][{"One*World","One*Dream!"},*p=str[1];
prinft("%d,",strlen(p));printf("%s\n",p);
)
程序运行后的输出结果是( )。
A.9,0ne*World
B.9,0ne*Dream!
C.10,One*Dream!
D.10,Ome*World
9.有以下程序
#include
main( )
{int a[]={2,3,5,4),i;
for(i=0;i<4;i++)
switch(i%2)
{case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case l:a[i]--;
}break;
case l:a[i]=0;
)
for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");
程序运行后的输出结果是( )。
A.3344
B.2050
C.3040
D.0304
10.有以下程序
#include
#incl ude
main( )
{char a[10]=”abcd”;
printf("%d,%d\n",strlen(a),sizeof(a));
)
程序运行后的输出结果是( )。
A.7,4
B.4,10
C.8,8
D.10,10
11.下面是有关C语言字符数组的描述,其中错误的是( )。
A.不可以用赋值语句给字符数组名赋字符串
B.可以用输入语句把字符串整体输入给字符数组
C.字符数组中的内容不一定是字符串
D.字符数组只能存放字符串
12.下列函数的功能是( )。
fun(char*a,char*b).
{while((*b=*a)!=’\0’){a++;b++;})
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’\O’
13.设有以下函数:
void fun(int n,char*s){…}
则下面对函数指针的定义和赋值均正确的是( )。
A.void(*pf)( );pf=fun;
B.void*pf( );pf=fun
C.void*pf( );*pf=fun;
D.void(*pf)(int,char);pf=&fun;
14.有以下程序:
#includedstdio.h>
int f(int n);
main( )
{int a=3,s;
s=f(a);s=s+f(a);printf("%dkn",s);
)
int f(int n)
{static int a=1;
n+=a++;
return n;
)
程序运行后的输出结果是( )。
A.7
B.8
C.9
D.10
15.有以下程序:
#includedstdi0.h>
#define f(x)X*x*x
main( )
{int a=3,S,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",S,t);
)
程序运行后的输出结果是( )。
A.10,64
B.10。10
C.64,10
D.64,64
16.下面结构体的定义语句中,错误的是( )。
A.struct ord{int x;int Y;int Z;};struet ord a;
B.struct ord{int x;int y;int Z;}struct ord a;
C.struct ord{int X;int Y;int Z;}a;
D.struct{int X;int y;int Z;}a;
17.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的( )。
A.char str[]="strin9";c=str;
B.scanf(%s,c):
C.c=getchar( );
D.*c="strin9";
18.有以下程序:
#include
#include
struct A
(int a;char b[10];double C;);
struct A f(struct A t):
main( )
{struct A a={1001,"ZhangDa",l098.0};
a=f(a);printf("%d,%S,%6.1f\n",a.a,a.b,a.c);
)
struct A f(struct A t)
{t.a= 1002;strcpy(t.b,"ChangRon9");t.c=1202.0;return t;)
程序运行后的输出结果是( )。
A.1001,ZhangDa,1098.0
B.1002,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1002,ChangRong,1202.0
19.若有以下程序段:
int r=8;
print("%d\n",r>>1):
输出结果是( )。
A.16
B.8
C.4
D.2
20.下列关于C语言文件的叙述中正确的是( )。
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
计算机二级c语言考试题库单选题答案
1.D。【解析】本题判断while语句中的逻辑关系的真假。“&&”两端都为真时结果为真,而题中k的值为0,k++是先使用k的值,再将k加1,而k此时的值为0,结果为假,所以不再执行后面的语句,输出结果时,k的值自加l为1,n的值仍为2。
2.C。【解析】char类型用于存储单个字符的简单变量类型,它可以被指定为一个字符常量或一个整数。
3.A。【解析】本值输出两个值,%c为输出一个字母,0/4d输出一个数字。“A”的ASCIl码为65,再加 4之后为69,也就是字母E,所以本题A正确。
4.C。【解析】本题考查函数调用。主函数中调用fun( )函数,p=d++,d=2,选取d的值,再加1,所以输出P的值为2,再回到主函数中,直接输出a的值为1。
5.D。【解析】“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。
6.B。【解析】本题进行了交换,输出的4个值,前两个为m和n的值,*P取m的值,*q取n的值,分别为l和2;而“r=P;p=q;q=r;”语句是进行P和q的交换。所以本题输出结果为1,2,2,1。
7.A。【解析】数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。
8.C。【解析】本题输出两个结果,第一个是求字符串的长度。第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!”。
9.C。【解析】本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease 0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case 0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行case l,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执 行case l,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行case l,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3 0 4 0。
10.B。【解析】strlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。
11.D。【解析】用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不作初始化赋值,则必须说明数组长度,还可用printf函数和scarlf函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出每个字符。通常用一个字符数组来存放一个字符串。所以D选项不正确。
12.A。【解析】本题函数的功能是将a所指向的字符串赋给b所指向的空间。
13.A。【解析】函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。
14.C。【解析】本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。
15.A。【解析】本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1), 所以结果为43=64。
16.B。【解析】结构体定义的类型说明的一般形式为:struct结构体标识名{类型名1结构成员名表l;类型名2结构成员名表2;···};。注意:①结构体说明同样要以分号结尾;②紧跟在结构体类型说明之后进行定义;③在说明一个无名结构体类型的同时,直接进行定义;④先说明结构体类型,再单独进行变量定义等。所以B选项错误。
17.A。【解析】选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确。
18.D。【解析】本题考查了结构体函数的调用。定义了结构体A,A含有三个参数分别是整型,字符型和双精度型。主函数中调用了fun( ),转到struct A f(struct A t)函数中,内容分别变成了{1002,Chan-gRong,1202.2),函数调用后,格式仍为struct A a={1001,"ZhangDa",l098.0);的格式。所以D选项为正确答案。
19.C。【解析】本题考查移位运算。将8转为二进制数为1000,右移一位不足补0,结果为0100,转化为十进制结果为4。
20.C。【解析】本题考查文件的知识点,文件是由数据序列组成的,可以构成二进制文件或文本文件。
看了“全国计算机二级c语言考试题库”的人还看了:
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’\O’
13.设有以下函数:
void fun(int n,char*s){…}
则下面对函数指针的定义和赋值均正确的是( )。
A.void(*pf)( );pf=fun;
B.void*pf( );pf=fun
C.void*pf( );*pf=fun;
D.void(*pf)(int,char);pf=&fun;
14.有以下程序:
#includedstdio.h>
int f(int n);
main( )
{int a=3,s;
s=f(a);s=s+f(a);printf("%dkn",s);
)
int f(int n)
{static int a=1;
n+=a++;
return n;
)
程序运行后的输出结果是( )。
A.7
B.8
C.9
D.10
15.有以下程序:
#includedstdi0.h>
#define f(x)X*x*x
main( )
{int a=3,S,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",S,t);
)
程序运行后的输出结果是( )。
A.10,64
B.10。10
C.64,10
D.64,64
16.下面结构体的定义语句中,错误的是( )。
A.struct ord{int x;int Y;int Z;};struet ord a;
B.struct ord{int x;int y;int Z;}struct ord a;
C.struct ord{int X;int Y;int Z;}a;
D.struct{int X;int y;int Z;}a;
17.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的( )。
A.char str[]="strin9";c=str;
B.scanf(%s,c):
C.c=getchar( );
D.*c="strin9";
18.有以下程序:
#include
#include
struct A
(int a;char b[10];double C;);
struct A f(struct A t):
main( )
{struct A a={1001,"ZhangDa",l098.0};
a=f(a);printf("%d,%S,%6.1f\n",a.a,a.b,a.c);
)
struct A f(struct A t)
{t.a= 1002;strcpy(t.b,"ChangRon9");t.c=1202.0;return t;)
程序运行后的输出结果是( )。
A.1001,ZhangDa,1098.0
B.1002,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1002,ChangRong,1202.0
19.若有以下程序段:
int r=8;
print("%d\n",r>>1):
输出结果是( )。
A.16
B.8
C.4
D.2
20.下列关于C语言文件的叙述中正确的是( )。
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
计算机二级c语言考试题库单选题答案
1.D。【解析】本题判断while语句中的逻辑关系的真假。“&&”两端都为真时结果为真,而题中k的值为0,k++是先使用k的值,再将k加1,而k此时的值为0,结果为假,所以不再执行后面的语句,输出结果时,k的值自加l为1,n的值仍为2。
2.C。【解析】char类型用于存储单个字符的简单变量类型,它可以被指定为一个字符常量或一个整数。
3.A。【解析】本值输出两个值,%c为输出一个字母,0/4d输出一个数字。“A”的ASCIl码为65,再加 4之后为69,也就是字母E,所以本题A正确。
4.C。【解析】本题考查函数调用。主函数中调用fun( )函数,p=d++,d=2,选取d的值,再加1,所以输出P的值为2,再回到主函数中,直接输出a的值为1。
5.D。【解析】“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。
6.B。【解析】本题进行了交换,输出的4个值,前两个为m和n的值,*P取m的值,*q取n的值,分别为l和2;而“r=P;p=q;q=r;”语句是进行P和q的交换。所以本题输出结果为1,2,2,1。
7.A。【解析】数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。
8.C。【解析】本题输出两个结果,第一个是求字符串的长度。第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!”。
9.C。【解析】本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease 0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case 0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行case l,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执 行case l,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行case l,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3 0 4 0。
10.B。【解析】strlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。
11.D。【解析】用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不作初始化赋值,则必须说明数组长度,还可用printf函数和scarlf函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出每个字符。通常用一个字符数组来存放一个字符串。所以D选项不正确。
12.A。【解析】本题函数的功能是将a所指向的字符串赋给b所指向的空间。
13.A。【解析】函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。
14.C。【解析】本题考查函数的调用。当执行s=f(a)时,进入fun函数,n=n+(a++),n的值为3,a的值为1,a++的意思是先用a的值,再将a加1为2,所以n的结果为4,也就是主函数中f(a)的结果为4;返回主函数,执行s=s+f(a),s为4,再次调用函数,此时n仍为3,a的值刚才已经自加2,所以计算后n的值为5,a自加l为3。返回主函数,f(a)的结果为5,所以s=4+5=9。
15.A。【解析】本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1), 所以结果为43=64。
16.B。【解析】结构体定义的类型说明的一般形式为:struct结构体标识名{类型名1结构成员名表l;类型名2结构成员名表2;···};。注意:①结构体说明同样要以分号结尾;②紧跟在结构体类型说明之后进行定义;③在说明一个无名结构体类型的同时,直接进行定义;④先说明结构体类型,再单独进行变量定义等。所以B选项错误。
17.A。【解析】选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确。
18.D。【解析】本题考查了结构体函数的调用。定义了结构体A,A含有三个参数分别是整型,字符型和双精度型。主函数中调用了fun( ),转到struct A f(struct A t)函数中,内容分别变成了{1002,Chan-gRong,1202.2),函数调用后,格式仍为struct A a={1001,"ZhangDa",l098.0);的格式。所以D选项为正确答案。
19.C。【解析】本题考查移位运算。将8转为二进制数为1000,右移一位不足补0,结果为0100,转化为十进制结果为4。
20.C。【解析】本题考查文件的知识点,文件是由数据序列组成的,可以构成二进制文件或文本文件。
看了“全国计算机二级c语言考试题库”的人还看了:
上一篇:全国计算机二级c语言考试题
下一篇:计算机等级考试c语言试题及答案