C语言全部考试系统题库含答案.docx
《C语言全部考试系统题库含答案.docx》由会员分享,可在线阅读,更多相关《C语言全部考试系统题库含答案.docx(101页珍藏版)》请在冰豆网上搜索。
C语言全部考试系统题库含答案
目录
目录1
单元练习题一C语言基础知识3
一、判断题3
二、单项选择题4
三、读程序选择题7
四、程序填空题8
五、编程题10
单元练习题二C语言程序结构10
一、判断题10
二、单项选择题11
三、读程序选择题18
四、程序填空题30
五、编程题35
单元练习题三数组36
一、判断题36
二、单项选择题37
三、读程序选择题39
四、程序填空题43
五、编程题49
单元练习题四函数49
一、判断题49
二、单项选择题50
三、读程序选择题52
四、程序填空题60
五、编程题63
单元练习题五预处理63
一、判断题63
二、单项选择题64
三、读程序选择题64
四、程序填空题65
五、编程题65
单元练习题六指针66
一、判断题66
二、单项选择题66
三、读程序选择题67
四、程序填空题74
五、编程题77
单元练习题七结构体与共用体78
一、判断题78
二、单项选择题78
三、读程序选择题79
四、程序填空题83
五、编程题83
单元练习题八文件84
一、判断题84
二、单项选择题84
三、读程序选择题84
四、程序填空题85
五、编程题87
第一章C语言基础知识
(C语言概述、算法、数据类型运算符表达式、位运算)
一、判断题(正确的填A,错误的填B)
R1.在C语言中,逗号运算符的优先级最低。
(A)
2.在C语言可执行程序的开始执行点是程序中第一个函数。
(B)
3.“5ch”是合法的变量名。
(B)
4.C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
(A)
5.当输入数据时,必须指明变量的地址,如scanf("%f",&f)(A)
N6.表达式i++与++i在任何场合功能完全相同。
(B)
7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。
(A)
R8.C语言程序中,语句以逗号结尾。
(B)
9.在C程序中,APH和aph代表不同的变量。
(A)
10.a-=7等价于a=a-7。
(A)
N11.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按原字符长从左向右全部输出。
(A)
12.如果x>y为真或ay)&&(a
(B)
13.C语言程序的变量必须先定义再使用。
(A)
14.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。
(B)
15.程序的执行总是从main函数开始,在程序的最后一个函数中结束。
(B)
16.变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。
(A)
17.运算符优先顺序:
赋值运算符<逻辑运算符<关系运算符<算术运算符(B)
18.对应float类型的变量,也可以用等号“==”进行数值的判断。
(B)
19.表达式:
1&&3.14和1&3的值一样大。
(B)
20.为了正确计算表达式既要考虑运算符的优先级,也要考虑其结合性。
(A)
21、任何C程序都是从main函数开始和结束;(A)
22.在C程序中,使用分号“;”表示语句的结束。
(A)
23.C程序中的必须要有至少一个main的函数,可以有多个。
(B)
24.在C程序中,无论是整数还是实数,都能准确无误的表示。
(B)
25.在C程序中,赋值运算符的优先级最低。
(B)
26.当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。
(B)
27.在C程序中,变量可以一边定义一边使用。
(B)
28.C程序中的注释部分可有可无,可以省略。
(A)
29.字符型变量可以存放多个字符。
(B)
30.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(B)
5.在C程序中,无论是整数还是实数,都能被准确无误地表示。
(B)
1.一个C程序的执行是从本程序的main函数开始,到main函数结束。
(A)
3.()
4.运算符优先顺序:
赋值运算符<逻辑运算符<关系运算符<算术运算符(B)
二、单项选择题
R1、以下标识符中,不能作为合法的C用户定义标识符的是:
()
A.a3_b3B.voidC._123D.abc
R2、C语言规定:
在一个源程序中,main函数的位置()。
A.必须在最后B.必须在系统调用的库函数的后面。
C.必须在最开始。
D.可以任意
R3、下列说法中正确的是()。
A.C程序书写时,不区分大小写字母
B.C程序书写时,一行只能写一个语句
C.C程序书写时,一个语句可分成几行书写
D.C程序书写时每行必须有行号
4、 已知ch是字符型变量,下面不正确的赋值语句是()。
A.ch=5+9;B.ch='a+b';C.ch='\0';D.ch='7'+'6';
5、 若有定义:
inta=7;floatx=2.5,y=4.7;则表达式
x+a%3*(int)(x+y)%2/4的值是()。
A.2.750000B.0.00000C.3.500000D.2.500000
6.已知ch是字符型变量,下面正确的赋值语句是()。
A.ch='123';B.ch='\08';C.ch='\xff';D.ch="\";
1.以下标识符中,不能作为合法的C用户定义标识符的是:
____________。
A)a3_b3B)voidC)_123D)abc
2.C语言中,运算对象必须是整型的运算符是__________。
A)%B)/C)%和/D)*
7.在C程序中,用___________表示逻辑值“真”。
A)1B)非0的数C)非1的数D)大于0的数
N8.设intc=5和inta;a=2+(c+=c,c+8,++c),则a=__________
A)15B)14C)13D)16
9.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符________。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
10.若变量已正确定义并赋值,表达式____________不符合C语言语法。
A)a*b/c;B)3.14%2C)2,bD)a/b/c
11.下列说法中正确的是___________。
A)C程序书写时,不区分大表达式小写字母
B)C程序书写时,一行只能写一个语句
C)C程序书写时,一个语句可分成几行书写
D)C程序书写时每行必须有行号
12.为表示数学关系x≥y≥z,正确的C语言表达式是__________。
A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
13.不合法的八进制数是________
A)0B)028C)077D)01
14、以下不能定义为用户标识符是
AMainB_0C_intDsizeof
15.若x=5,y=4则y*=x+5;y的值为()。
A.40B.20CB.15D.30
16、组成C语言程序的基本单位是( )。
A)过程 B)子程序
C)函数 D)主程序和子程序
17.下列哪个标识符是C语言合法的标识符( )。
A)a*b B)-xyz
C)ba2 D)5i
N18.若有定义:
int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)/4的值是( )。
A)2.75 B)3.5
C)2.5 D)0
19.设intm=1,n=2;则++m==n的结果是()
A、0B、1C、2D、3
N20.若变量已定义并赋值,下列符合C语法的表达式是:
()
A、a:
=b+1B、a=b=c+2
C、int18.5%3D、a=a+7=c+b
R(3)在C程序中,设一表达式中包含有int,long,unsigned和char类型的变量和数据,则表达式最后的运算结果类型是()
A.intB.charC.unsignedD.long
R21.C语言中基本的数据类型包括__________。
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
N22.若定义x和y为double类型,则表达式:
x=2,y=x+5/2的值是__________
A)4B)4.5C)4.0D)3.0
23.在以下运算符中,优先级最高的运算符是__________
A)?
:
B)++C)&&D)+=
24.C语言中基本的数据类型不包括__________。
A)整型B)字符串型
C)字符型D)实型
25.若定义intx=7,y=5,z;则表达式:
z=x+5/2*y的值是__________
A)7B)7.5C)17D)19.5
6.以下说法中正确的是()
A、C语言程序总是从第一个定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
(1)设inta=2,b;则执行b=a&&1;语句后,b的结果是()
A.0B.1C.2D.3
N
(2)逗号表达式(a=3*5,a*4),a+15的值是()
A.15B.60C.30D.75
7.若已经定义了一个字符型变量为a,下面哪个表达式的含义跟其余表达式不同:
A)a!
=0B)a!
=’\0’C)aD)!
a
8.在以下运算符中,优先级最高的运算符是__________
A),B)[]C)&&D)+=
9.在C语言中,逻辑值“真”用__________表示。
A)trueB)大于0的数 C)非0的整数 D)非0的数
10.表达式__________是满足:
当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式
A)(c=1)||(c=3)||(c=5)B)(c!
=1)&&(c!
=3)&&(c!
=5)
C)(c==1)&&(c==3)&&(c=5)D)(c==1)||(c==3)||(c==5)
1.C语言中,int类型数据占2个字节,则long类型数据占()
A、1个字节B、2个字节C、3个字节D、4个字节
1.下列字符串是合法的标识符的是()。
A、_HJB、9_studentC、longD、LINE1
2.下列说法中正确的是()。
A、C程序书写时,不区分大小写字母
B、C程序书写时,一行只能写一个语句
C、C程序书写时,一个语句可分成几行书写
D、C程序书写时每行必须有行号
3.在C语言中,要求参加运算的数必须是整数的运算符是()。
A、/B、!
C、%D、==
4.C语言中,逻辑“真“等价于()。
A、大于零的数B、大于零的整数
C、非零的数D、非零的整数
6.假设在程序中a,b,c均被定义为整型,并且已赋大于1的值,则下列能正确表示代数式1/abc的表达式是()。
A、1/a*b*cB、1/(a*b*c)
C、1/a/b/(float)cD、1.0/a/b/c
1.下列合法的字符常量是()。
A、'\084'B、'\x43'C、'ab'D、"\0"
2.在C语言提供的合法的关键字是()
A、switchB、cherC、CaseD、sturct
3.若已定义x和y为double类型,则表达式:
x=1,y=x+3/2的值是
A、2B、1C、2.0D、2.5
三、程序填空题
1以下程序不用第三个变量实现两个数对调的操作。
#includ“stdio.h”
main()
{
inta,b;
scanf("%d,%d",&a,&b);
a=;(三个字符)
b=;(三个字符)
a=a-b;
printf("%d,%d",a,b);
}
2、选择程序的运行结果。
main()
{intx=1,y=2,z,a,b,c,d;
z=++x||++y;
printf("x=%d\n",x);
printf("y=%d\n",y);/*输出结果(三个字符)*/
a=-1;b=-2;c=++a&&b++;
printf("b=%d\n",b);/*输出结果(三个字符)*/}
3以下程序的结果为_______
main()
{
unsignedinta=3,b=10;
printf("%d\n",a<<2|b>>1);/*输出结果<14>*/
printf("%d\n",a<<2&b>>1);/*输出结果<0>*/
}
4若x=3,y=z=4,则下列表达式的值是。
(1) (z>=y>=x)?
1:
0
/*值为<0>*/
(2) z>=y&&y>=x
/*值为<1>*/
5已知floatx=4.3,inty;执行语句y=(int)x后,x为型(填写小写英文字母),且y=<4>(填写阿拉伯数字);
6表达式’c’&&’d’的值为<1>(填写阿拉伯数字),’c’&&’d’||!
(3+4)的值为<1>(填写阿拉伯数字)。
7若x为int类型,则与逻辑表达式“x”等价的表达式是=0>,与逻辑表达式“!
x”等价的表达式是。
8表示“整数x的值大于5”时逻辑值为“真”的表达式是5>,逻辑值为“假”的表达式是
9已知字母A的ASCII码为十进制数65,且设ch为字符型变量,则表达式ch=‘A’-‘4’+‘9’的值为<’F’>(一个字符常量);若定义:
charc=‘\72’;则变量c中包含的字符个数为<1>(数字)。
10、C语言所提供的基本数据类型的整型类型包括:
<短整型>、整型、<长整型>。
(按每种类型所占字节数,从小到大排列)
第二章C语言程序结构
(顺序程序设计、选择结构程序设计、循环控制)
一、判断题(正确的填A,错误的填B)
1.do-while语句中的条件为非0时,就结束该循环。
(B)
2.在switch-case语句中,不是每个case后都要使用break语句。
(A)
3.Break语句只能用于循环结构中。
(B )
48.未给变量赋初值,只是运行结果不正确,不会有其他不良影响。
(B)
5、switch语句中,可以不使用break语句;(A)
6、for语句中,三个表达式都可以省略;(A)
7(7)在for循环中使用break语句的目的是使流程跳出循环体,终止当前循环(A)
8.continue语句只能用于循环语句中。
(A)
9.while语句中的条件为0时,就结束该循环。
(A)
10.在循环体内使用break语句或continue语句的作用相同。
(B)
在C语言中,逻辑值“真”用表示。
11)112)大于0的数 13)非0的整数 14)非0的数
在循环语句的循环体中,continue语句的作用是( )。
15)立即终止整个循环 16)继续执行continue语句之后的循环体
17)结束本次循环 18)结束本次循环并跳出循环
语句while(!
e);中,条件!
e等价于()
19.e==020.e!
=021.e!
=122.e==1
设intc=5和inta;a=2+(c+=c++,c+8,++c),则a=__________
23)1524)1425)1326)16
若要表示if(a不等于0)这一关系式,则能正确表示这一关系的表达式为if()
27)a<>028)!
a29)a=030)a
二、单项选择题
N1、以下不是死循环的语句是_______。
for(;;x+i);
while
(1){x++;}
for(i=10;;i--)sum+=i;
for(;(c=getchar())!
=‘\n’;)printf(“%c”,c);
2.设有程序段
intk=10;
while(k=0)k=k-1;
以下描述正确的是()。
A.循环体语句一次也不执行。
B.循环是无限循环。
C.while循环语句执行十次。
D.循环体语句执行一次。
3.对下述程序,正确的判断是()。
main()
{inta,b;
scanf("%d,%d",&a,&b);
if(a>b)a=b;b=a;
elsea++;b++;
printf("%d,%d",a,b);
}
A.有语法错误不能通过编译B.若输入4,5则输出5,6
C.若输入5,4则输出4,5D.若输入5,4则输出5,5
R4.以下程序
main()
{
inti=010,j=10,k=0x10;
printf("%d,%d,%d\n",i,j,k);
}有语法错误不能通过编译
输出结果是()
A.8,10,16B.8,10,10C.10,10,10D.10,10,16
R5.若变量已正确说明为int类型,要给a,b,c输入数据,以下语句正确的是__________
A)read(a,b,c);B)scanf(“%d%d%d”,a,b,c);
C)scanf(“%D%D%D”,&a,%b,%c);D)scanf(“%d%d%d”,&a,&b,&c);
R6.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为__________。
main()
{
charx,y;
x=’0’;y=’9’;
pirntf(“%d,%d\n”,x,y);
}
A)因输出格式不合法,输出错误信息B)48,57
C)0,9D)48,58
7.语句for(k=0;k<5;++k)
{
if(k==3)continue;
printf(“%d”,k);
}的输出结果为_________。
A)012B)0124C)01234D)没有输出结果
8.为表示关系x>=y>=z,应使用C语言表达式___________。
A)(y<=x)&&(y>=z)B)(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
6.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和___________等价。
A、k=(a>b)?
1:
0;B、k=a>b;
C、k=a<=b;D、a<=b?
0:
1;
9.以下程序的输出结果是__________
voidmain()
{
inta=2,b=5;
printf(“a=%%%d,b=%%%d”,a,b);
}
A)a=%2,b=%5B)a=2,b=5
C)a=%%d,b=%%dD)a=%d,b=%d
N10.以下程序的输出结果是__________
voidmain()
{intx=10,y=10;
printf(“%d%d\n”,x--,--y);
}
A)1010B)99C)910D)109
11.若要表示if(a不等于0)这一关系式,则能正确表示这一关系的表达式为
if(__________)
A)a<>0B)!
aC)a=0D)a
R12对于循环语句while
(1);下面()是正确的
A、死循环B、循环一次
C、不进入循环体D、编译有错
13.下面程序的输出是(假设int数据是2个字节)
voidmain()
{inta=32768;
printf(“a=%d\n”,a);
}
A)a=32768B)a=32767C)a=-32768D)a=-1
14.表达式__________是满足:
当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式
A)(c=1)||(c=3)||(c=5)B)(c!
=1)&&(c!
=3)&&(c!
=5)
C)(c==1)&&(c==3)&&(c=5)D)(c==1)||(c==3)||(c==5)
N15.以下程序段的输出结果是_____
intx=3;
do
{printf("%3d",x-=2;}
while(!
(--x));
A)1B)30
C)1-2D)死循环
16、数字字符0的ASCII值为48,若有以下程序
main()
{
chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是
A3,2B50,2C2,2D2,50
17、有以下程序
main()
{
inta,b,d=25;
a=d/10&(-1);
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A6,1B2,1C6,0D2,0
18.若定义float a;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则选用( )。
A)scanf("%f",&a); B)scanf("%5.2f",a);
C)scanf("%6.2f",&a); D)scanf("%f",a);
19.若定义int i;则以下循环语句的循环执行次数是( )。
for(i=2;i==0;)
printf("%d",i--);
A)无限次 B)0次
C)1次 D)2次
20.下面程序