第一章 单元测试
1、单选题:
能将高级语言编写的源程序转换为目标程序的是()。
选项:
A:解释程序
B:链接程序
C:编译程序
D:编辑程序
答案: 【编译程序】
2、单选题:
C语言的注释定界符是()。
选项:
A:{ }
B:
( )
C:/* */
D:[ ]
答案: 【/* */】
3、单选题:
以下标识符中,不能作为合法的C用户定义标识符的是()。
选项:
A:void
B:_123
C:IF
D:a3_b3
答案: 【void】
4、单选题:
C语言源程序的基本单位是()。
选项:
A:子程序
B:标识符
C:过程
B、函数
C、子程序
D、标识符
D:函数
答案: 【函数】
5、单选题:
计算机能直接执行的程序是用( )程序设计语言编写的。
选项:
A:C++
B:C语言
C:汇编语言
D:机器语言
答案: 【机器语言 】
6、单选题:
C程序中main函数的位置是( )。
选项:
A:可以任意位置
B:必须在程序的中间位置
C:必须在程序的最后
D:必须在程序的开始
答案: 【可以任意位置】
7、单选题:
C语言程序上机调试步骤是( )。
选项:
A:编写源程序、编译、组建、执行
B:编写源程序、组建、执行
C:编写源程序、执行
D:编写源程序、编译、执行
答案: 【编写源程序、编译、组建、执行】
8、判断题:
语句的结束标志是冒号“:”。
选项:
A:对
B:错
答案: 【错】
9、判断题:
C程序中1条语句必须写在1行。
选项:
A:错
B:对
答案: 【错】
10、多选题:
属于低级语言的是()。
选项:
A:汇编语言
B:机器语言
C:C语言
D:JAVA语言
答案: 【汇编语言;机器语言】
第二章 单元测试
1、单选题:
C语言中,最基本的数据类型是( )
选项:
A:整型,字符型,逻辑型
B:整型,实型,字符型,逻辑型
C:整型,实型,逻辑型
D:整型,实型,字符型
答案: 【整型,实型,字符型】
2、单选题:
以下不合法的整型常量是( )。
选项:
A:
68
B:
12345
C:
147
D:
0xabc
答案: 【
0xabc
】
3、单选题:
以下浮点数的表示不正确的是( )。
选项:
A:
12.E2
B:
22.3
C:
e23
D:
7.19E21
答案: 【
e23
】
4、判断题:
C程序中变量可以不定义而直接使用。
选项:
A:错
B:对
答案: 【错】
5、判断题:
不能将字符串赋给字符变量。
选项:
A:对
B:错
答案: 【对】
6、单选题:
以下不合法的实型常量是( )。
选项:
A:
.5
B:
5
C:
5.0
D:
0.5
答案: 【
5
】
7、单选题:
以下哪个是字符数据类型关键字( )。
选项:
A:
c
B:
char
C:
string
D:
CHAR
答案: 【
char
】
8、判断题:
在程序运行期间,变量可以多次被赋值。
选项:
A:错
B:对
答案: 【对】
9、单选题:
以下关于符号常量的说法正确的是( )。
选项:
A:
可以将圆周率这个常量值定义为符号常量,定义方法为:#define PI=3.1415926
B:
符号常量名可以不遵循C语言的标识符和命名规则
C:
符号常量是以标识符形式出现的常量,一经定义,它所代表的常量值在其作用域内不能改变
D:
使用符号常量不仅便于程序的调试和维护,还能大大提高程序的运行速度
答案: 【
符号常量是以标识符形式出现的常量,一经定义,它所代表的常量值在其作用域内不能改变
】
10、单选题:
以下定义变量的语句错误的是( )。
选项:
A:
double z1;
B:
Double a1;
C:
int x1;
D:
float y1;
答案: 【
Double a1;
】
11、多选题:
以下能正确定义变量并给变量赋值的是( )。
选项:
A:
int a=5,b=5;
B:
int a,b; a=b=6;
C:
int a=5,b; b=5;
D:
int a=b=5;
答案: 【
int a=5,b=5;
;
int a,b; a=b=6;
;
int a=5,b; b=5;
】
12、多选题:
以下是合法C语言常量的是( )。
选项:
A:
e-2
B:
012
C:
“a”
D:
‘a’
答案: 【
012
;
“a”
;
‘a’
】
13、多选题:
以下合法的C语言整型常量是( )。
选项:
A:
160
B:
011
C:
01a
D:
-0xffff
答案: 【
160
;
011
;
-0xffff
】
14、单选题:
若已定义 int a=11; 执行printf(“a=%d,a=%o,a=%x”,a,a,a) ;语句后的输出结果是( )。
选项:
A:
a=11, a=11, a=b
B:
a=11, a=13, a=c
C:
a=11, a=13, a=b
D:
a=11, a=12, a=13
答案: 【
a=11, a=13, a=b
】
15、单选题:
函数putchar(65) 的功能是向终端输出( )。
选项:
A:
6
B:
有编译错误
C:
65
D:
A
答案: 【
A
】
16、判断题:
使用scanf()函数,在输入数据时,若遇非法输入则认为该数据输入结束。
选项:
A:对
B:错
答案: 【对】
17、判断题:
getchar( )和scanf()均为输入函数,它们之间可通用,没有任何区别。
选项:
A:对
B:错
答案: 【错】
第三章 单元测试
1、单选题:
若变量已正确定义,表达式 (j=3, j++) 的值是____。
选项:
A:3
B:4
C:5
D:6
答案:
2、单选题:
若” int n; float f=13.8; “,则执行”n=(int)f%3″后,n的值是( )。
选项:
A:4.33333
B:4.6
C:1
D:4
答案:
3、单选题:
若有定义“char a; int b; float c; double d;”,则表达式“a*b+d-c”值的类型为____。
选项:
A:int
B:float
C:char
D:double
答案:
4、单选题:
若x为浮点型,则表达式x=10/4为( )。
选项:
A:2.5
B:3
C:2.0
D:2
答案:
5、单选题:
假设字符变量ch中存放有小写英文字母,将其转换为相应的大写英文字母的表达式是 ( ) 。
选项:
A:ch = ch+32
B:tolower(ch)
C:ch = ch-‘a’+’A’
D:ch -= ‘a’+’A’
答案:
6、单选题:
C 语言中,要求运算对象只能为整数的运算符是( )。
选项:
A:
*
B:
%
C:
/
D:
>
答案:
7、判断题:
为了确保表达式n/2的值为float型,可写成float(n/2)。
选项:
A:错
B:对
答案:
8、单选题:
若有定义:int a=8,b=5,c;,执行语句:c=a/b+0.4;后,c的值是( )。
选项:
A:
2.0
B:
1.4
C:
1
D:
2
答案:
9、单选题:
设有i=10,在表达式j=i–,则j的值是( )。
选项:
A:
9
B:
11
C:
8
D:
10
答案:
10、单选题:
在C语言程序中,表达式5%2的结果是( )。
选项:
A:
1
B:
2.5
C:
2
D:
3
答案:
11、单选题:
若x、i、j和k都是int型变量,则计算x=(i=4,j=16,k=32)表达式后,x的值是( )。
选项:
A:
52
B:
16
C:
4
D:
32
答案:
12、判断题:
设x和y都是int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是交换x和y的值。
选项:
A:对
B:错
答案:
13、单选题:
若变量已正确定义,以下合法的赋值表达式是( )。
选项:
A:
a=a/(b=5)
B:
a=1/b=2
C:
++(a+b)
D:
y=int(a)
答案:
14、单选题:
逻辑运算符两侧运算对象的数据类型()。
选项:
A:
只能是0 或非0 正数
B:
只能是0 或1
C:
可以是任何类型的数据
D:
只能是整型或字符型数据
答案:
15、判断题:
在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。
选项:
A:错
B:对
答案:
16、单选题:
若a为int型,且其值为3,则执行完表达式: a+=6后,a的值是( )。
选项:
A:
9
B:
3
C:
6
D:
12
答案:
17、判断题:
单目运算符、赋值运算符和条件运算符均为右结合性。
选项:
A:对
B:错
答案:
18、单选题:
能表示x为偶数的表达式是().
选项:
A:
x%2!=0
B:
x%2
C:
x%2==0
D:
x%2==1
答案:
19、单选题:
已知int i=10;表达式’3<=i<=5’的值是()
选项:
A:
19
B:
20
C:
1
D:
0
答案:
20、单选题:
能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )
选项:
A:(x>=1)||(x<=10)||(x>=200)||(x<=210)
B:
能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )
C:
(x>=1)||(x<=10)&&(x>=200)||(x<=210)
D:
(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
答案:
第四章 单元测试
1、单选题:
以下程序运行时,输入的x值在( )范围时才会有输出结果。
选项:
A:不等于10的整数
B:小于3的整数
C:大于3且不等于10的整数
D:大于3且等于10的整数
答案:
2、单选题:
若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。
选项:
A:scanf(“%d%f”, a, c);
B:scanf(“%d%f”, &a, &c);
C:scanf(“d=%d, c=%f”, &a, &c);
D:scanf(“%d,%f”, &a, &c);
答案:
3、单选题:
main()
{ int a=2,b=-1,c=2;
if(a<b) c=0;
else c++;
printf(“%d”,c);
}
该程序的输出结果是()
选项:
A:
0
B:
1
C:
2
D:
3
答案:
4、单选题:
有以下程序
main()
{int x=1, y=2, z=3;
if(x>y)
if(y<z) printf(“%d”,++z);
else printf(“%d”,++y);
printf(“%d”,x++);
}
程序的运行结果是()
选项:
A:
31
B:
1
C:
3
D:
321
答案:
5、单选题:
若x=0,y=3,z=3,以下表达式值为0的是()。
选项:
A:
y=x||z/3
B:
x<y?1:0
C:
!x
D:
x%2&&y==z
答案:
6、判断题:
在 C 程序中,运算符%仅能用于整型数的运算。
选项:
A:对
B:错
答案:
7、单选题:
有以下程序
void main()
{ int a;
scanf(“%d”,&a);
if(a<9) printf(“%d”,a);
else printf(“%d”,a–);
}程序运行时键盘输入9<回车>,则输出的结果是()
选项:
A:
8
B:
9
C:
10
D:
11
答案:
8、单选题:
为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与()组成配对关系。
选项:
A:
缩排位置相同的if
B:
在其之前未配对的最近的if
C:
同一行上的if
D:
在其之前未配对的if
答案:
9、判断题:
赋值运算符的结合性为左结合。
选项:
A:错
B:对
答案:
10、单选题:
if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()
选项:
A:
必须是整数值
B:
必须是正数
C:
可以是任意合法的数值
D:
必须是逻辑值
答案:
第五章 单元测试
1、单选题:
设有程序段
int m=20;
while (m=0) m=m++;
以下说法正确的是()
选项:
A:while 循环执行 10 次
B:循环是无限循环
C:循环体语句一次也不执行
D:循环体语句执行一次
答案:
2、单选题:
以下叙述正确的是()。
选项:
A:
do-while语句构成的循环不能用其它语句构成的循环来代替.
B:
do-while语句构成的循环只能用break语句退出.
C:
用do-while语句构成的循环,在while后的表达式为非零时结束循环.
D:
用do-while语句构成的循环,在while后的表达式为零时结束循环
答案:
3、单选题:
在以下给出的表达式中,与 do–while(E)语句中的(E)不等价的
表达式是()。
选项:
A:
(E!=0)
B:
(!E==0)
C:
(E==0)
D:
(E>0||E<0)
答案:
4、单选题:
对 for(表达式1; ;表达式3) 可理解为()。
选项:
A:
for(表达式1;0;表达式3)
B:
for(表达式1;1;表达式3)
C:
for(表达式1;表达式3;表达式3)
D:
for(表达式1;表达式1;表达式3)
答案:
5、单选题:
从循环体内某一层跳出,继续执行循环外的语句是()。
选项:
A:
return语句
B:
break语句
C:
空语句
D:
continue语句
答案:
6、单选题:
下列程序的输出为()。
main()
{ int y=10;
while(y–);
printf(“y=%d ”,y);
}
选项:
A:
y=1
B:
y=-1
C:
while构成无限循环
D:
y=0
答案:
7、单选题:
若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;) printf(“%d”,i–);
选项:
A:
无限次
B:
2次
C:
1次
D:
0次
答案:
8、单选题:
C语言中 while 和 do-while 循环的主要区别是()。
选项:
A:
do-while 允许从外部转到循环体内
B:
do-while 的循环体至少无条件执行一次
C:
do-while 的循环体不能是复合语句
D:
while的循环控制条件比 do-while的循环控制条件更严格
答案:
9、单选题:
有以下程序
main()
{int a=1,b=2;
while(a<6) {b+=a;a+=2;}
printf(“%d,%d”,a,b);
}程序运行后的输出结果是( )
选项:
A:
6,1
B:
7,11
C:
7,1
D:
5,11
答案:
10、单选题:
有以下程序段
int n=0,p;
do
{
scanf(“%d”,&p);
n++;
}while(p!=12345&&n<3);
此处do-while循环的结束条件是______。
选项:
A:p的值等于12345或者n的值大于等于3
B:p的值等于12345并且n的值大于等于3
C:p的值不等于12345并且n的值小于3
D:p的值不等于12345或者n的值小于3
答案:
11、单选题:
以下程序段中的变量已正确定义
for(i=0;i<4;i=i+2)
for(k=1;k<3;k++) printf(‘*’);
程序段的输出结果是 ()
选项:
A:
*
B:
**
C:
********
D:
****
答案:
12、单选题:
以下程序的运行结果是()。
main()
{
int i,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b>0) { b–;k++;}}
printf(“k=%d,b=%d”,k,b);}
选项:
A:k=8,b=-1
B:k=8,b=-2
C:k=3,b=0
D:k=3,b=-1
答案:
13、判断题:
循环结构中的continue语句是使整个循环终止执行
选项:
A:错
B:对
答案:
14、判断题:
while和do…while循环不论什么条件下它们的结果都是相同的.
选项:
A:错
B:对
答案:
第六章 单元测试
1、单选题:
在一个被调用函数中,关于 return 语句使用的描述,错误的是( )
选项:
A:被调用函数中可以不用 return 语句
B:被调用函数中可以使用多个 return 语句
C:被调用函数中,一个 return 语句可以返回多个值给调用函数
D:被调用函数中,如果有返回值,就一定要有 return 语句
答案:
2、单选题:
以下( )函数的定义是错误的?
选项:
A:void f(int i) { }
B:void f( ) { }
C:int f( ) { return 0; }
D:void f(int i) { return i+1; }
答案:
3、单选题:
C语言中函数返回值的类型是由( )决定的。
选项:
A:return语句中的表达式类型
B:调用该函数的主调函数的类型
C:定义函数时所指定的函数类型
D:调用函数时临时决定
答案:
4、单选题:
C语言规定,必须用( )作为主函数名。
选项:
A:
main
B:
stdio
C:
Function
D:
include
答案:
5、单选题:
下列说法正确的是( )。
选项:
A:
main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的
B:
main函数必须放在C程序的开头
C:
main函数必须放在C程序的最后
D:
main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的
答案:
6、单选题:
以下程序的输出结果是( )。
void fun(int x, int y, int z)
{ z=x*x+y*y; }
main( )
{ int a=31;
fun(5,2,a);
printf(“%d”,a);
}
选项:
A:
31
B:
无定值
C:
0
D:
29
答案:
7、单选题:
C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:( )。
选项:
A:
地址传递
B:
单向值传递
C:
双向值传递
D:
由用户指定传递方式
答案:
8、单选题:
以下函数头定义正确的是:( )。
选项:
A:
double fun(int x ,y)
B:
double fun(int x, int y) ;
C:
double fun(int x, int y)
D:
double fun(int x;int y)
答案:
9、单选题:
现有如下程序
#include“stdio.h”
int fun(int x)
{ printf(“x=%d”,++x); }
int main( )
{ fun(12+5); return 0; }
则程序的输出结果是( )。
选项:
A:
x=12
B:
x=17
C:
x=18
D:
x=13
答案:
10、单选题:
有以下程序, 执行后输出的结果是( )。
void f(int x,int y)
{ int t;
if(x<y){ t=x; x=y; y=t; }
}
main( )
{ int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf(‘%d,%d,%d’,a,b,c);}
选项:
A:
4,3,5
B:
5,3,4
C:
3,4,5
D:
5,4,3
答案:
11、单选题:
以下关于C语言程序中函数的说法正确的是:( )。
选项:
A:
函数的定义可以嵌套,但函数的调用不可以嵌套
B:
函数的定义和调用均不可以嵌套
C:
函数的定义不可以嵌套,但函数的调用可以嵌套
D:
函数的定义和调用都可以嵌套
答案:
12、判断题:
return语句在一个函数体内只能有一个。
选项:
A:对
B:错
答案:
13、判断题:
在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。
选项:
A:错
B:对
答案:
第七章 单元测试
1、单选题:
凡是函数中未指定存储类别的局部变量,其隐含的存储类别是____。
选项:
A:extern
B:register
C:static
D:auto
答案:
2、单选题:
下列程序的输出结果是( )。
# include <stdio.h>
int f(int n)
{ static int k, s;
n–;
for(k=n; k>0; k–)
s += k;
return s;
}
int main(void)
{ int k;
k=f(3);
printf(“(%d,%d)”, k, f(k));
return 0;
}
选项:
A:(3,6)
B:(3,3)
C:(6,12)
D:(6,6)
答案:
3、单选题:
在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。
选项:
A:
register
B:
extern
C:
auto
D:
static
答案:
4、单选题:
以下程序的输出结果是( )。
#define MAX(x,y) (x)>(y)?(x):(y)
main()
{
int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf(‘%d’,t);
}
选项:
A:
7
B:
6
C:
70
D:
60
答案:
5、单选题:
变量的有效范围与其定义的位置有关,( )的作用域在整个源程序文件中都有效。
选项:
A:
在第一个函数中定义的变量
B:
在函数中定义的静态变量
C:
在主函数中定义的变量
D:
在定义第一个函数之前所定义的变量
答案:
6、单选题:
以下关于编译预处理的叙述中错误的是( )。
选项:
A:
预处理命令不是C语言本身的组成部分
B:
预处理命令行只能位于源程序中的所有语句之前
C:
一条有效的预处理命令必须单独占据一行
D:
预处理命令行必须以#开始
答案:
7、单选题:
如果在一个函数中的复合语句中定义了一个变量,则该变量( )。
选项:
A:
在本程序范围内有效
B:
为非法变量
C:
只在该复合语句中有效
D:
在该函数中有效
答案:
8、判断题:
进行宏定义时,宏名必须使用大写字母表示。
选项:
A:错
B:对
答案:
9、判断题:
在C语言中,在register寄存器中存储变量比在内存中存储变量运算速度快。
选项:
A:对
B:错
答案:
第八章 单元测试
1、单选题:
下面的程序段将输出 ▁▁▁▁▁ 。
double a[] = {1, 2, 3, 4, 5};
printf(“%d”, sizeof(a));
选项:
A:0
B:48
C:40
D:5
答案:
2、单选题:
下面程序的运行结果是( )
#include<stdio.h>
int 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 1:
a[i]–;
}
break;
}
for(i=0; i<4; i++)
printf(“%2d”,a[i]);
printf(“”);
return 0;
}
选项:
A:2 0 5 0
B:0 3 0 4
C:3 3 4 4
D:3 0 4 0
答案:
3、单选题:
以下正确地定义了一维整型数组a的语句组是( )
选项:
A:int a(10) ;
B:int n; scanf(“%d”,&n); int a[n];
C:int a[SIZE];(在程序开始有#define SIZE 10)
D:int n=10,a[n];
答案:
4、单选题:
假定int类型变量占用两个字节,其有定义:int x[10]={0, 2, 4}; 则数组x在内存中所占字节数是()。
选项:
A:6
B:10
C:3
D:20
答案:
5、单选题:
在C语言中,一维数组的定义方式为:类型说明符 数组名( ).
选项:
A:
[整型常量表达式]
B:
[整型表达式]
C:
[整型变量]
D:
[整型常量]或[整型表达式]
答案:
6、单选题:
若有说明:int a[10]; ,则对a数组元素的正确引用是( ).
选项:
A:
a[10]
B:
a[3.5]
C:
a[10-10]
D:
a(5)
答案:
7、单选题:
下面关于数组的描述不正确的是( ).
选项:
A:
数组是基本数据类型
B:
数组是构造数据类型
C:
数组是相同数据类型的集合
D:
同一个数组共用一个数组名
答案:
8、单选题:
以下能对一维数组a进行正确初始化的语句形式是( ).
选项:
A:
int a[ ]={0};
B:
int a[3]=(10,5,8);
C:
int a[10]=(0,0,0,0,0);
D:
int a[10]={ };
答案:
9、单选题:
若有定义:int x[10]={1,2,4}; 则数组元素x[4]的值是( )。
选项:
A:
4
B:
1
C:
2
D:
0
答案:
10、单选题:
若有说明:int a[5]; ,则下面可以输出数组a中所有元素值的是( )。
选项:
A:
printf(“%d”,a);
B:
for(i=0;i<5;i++) printf(“%d”, a[i]);
C:
while(b[i]!=”) printf(“%d”, a[i]);
D:
for(i=1;i<=5;i++) printf(“%d”, a[i]);
答案:
11、单选题:
下列不是给数组的第一个元素赋值的语句是( ).
选项:
A:
int a[4]; scanf(“%d”,a);
B:
a[1]=2;
C:
int a[4]={1};
D:
int a[4]={2*3};
答案:
12、判断题:
若有说明:int a[10]={6,7,8,9,10};则该语句不正确,因为数组长度与初值个数不相同。
选项:
A:对
B:错
答案:
13、判断题:
一般地,一维数组各元素分配在连续地内存单元之中。
选项:
A:对
B:错
答案:
第九章 单元测试
1、单选题:
有两个字符数组s1,s2,则以下正确的输入格式是( )
选项:
A:scanf(“%s%s”,&s1, &s2);
B:scanf(“%s%s”,s1, s2);
C:gets(s1,s2);
D:gets(“s1”), gets(“s2″);
答案:
2、单选题:
以下不能对二维数组a进行正确初始化的语句是( )
选项:
A:int a[ ][3]={{1,2},{0}};
B:int a[2][3]= {{1,2},{3,4},{5,6}};
C:int a[2][3]={0};
D:int a[ ][3]={1,2,3,4,5,6};
答案:
3、单选题:
以下对二维数组a的正确说明是( )
选项:
A:float a(3)(4);
B:float a(3,4);
C:float a[3][4];
D:int a[3][ ];
答案:
4、单选题:
若有说明:int a[ ][3]={1,2,3,4,5,6,7}; ,则a数组第一维的大小是( )
选项:
A:
2
B:
3
C:
4
D:
无确定值
答案:
5、单选题:
有以下程序段:int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(“%d”,a[1][5]); ,执行后输出的结果是( )
选项:
A:
10
B:
编译有错误
C:
4
D:
11
答案:
6、单选题:
若有初始化语句:int a[3][4]={0}; ,则下面正确的叙述是( )。
选项:
A:
数组a中各元素都可得到初值,但其值不一定为0
B:
只有元素a[0][0]可得到初值0
C:
此初始化语句不正确
D:
数组a中每个元素均可得到初值0
答案:
7、单选题:
如有说明:int a[3][4]; ,则对a数组元素的正确引用是( )。
选项:
A:
a[1+1][0]
B:
a[3][4]
C:
a[1,3]
D:
a(2)(1)
答案:
8、单选题:
对两个数组a和b进行初始化:char a[ ]=“ABCDEF”; char b[ ]={‘A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是( )
选项:
A:
a与b长度相同
B:
a与b数组完全相同
C:
a的长度比b长
D:
a与b中都存放字符串
答案:
9、单选题:
下列能正确定义二维实型数组a的选项是( ).
选项:
A:
float a[3][ ]={{1},{0}};
B:
float a[3][4];
C:
float a[3][ ];
D:
float a(3,4);
答案:
10、单选题:
下面描述正确的是( ).
选项:
A:
字符串”That”小于字符串”The”
B:
两个字符串所包含的字符个数相同时,才比较字符串
C:
字符串”STOP□”与“STOP”相等(其中□表示1个空格)
D:
字符个数多的字符串比字符个数少的字符串大
答案:
11、单选题:
若有定义:char a[4]=”abc”, b[20]=”Hello”; ,则执行语句strcat(b,a); 后,数组b中的内容为( ).
选项:
A:
Helloabc
B:
abcHello
C:
Hello
D:
abc
答案:
12、判断题:
字符数组中的数据存储时必须以”结尾。
选项:
A:对
B:错
答案:
13、判断题:
有定义:char a[ ]=”1″; 则a数组的长度是 2。
选项:
A:错
B:对
答案:
14、多选题:
下列字符串赋值语句中,能正确把字符串C program赋给数组的语句是( )
选项:
A:
char a[10]={ “C program”};
B:char a[ ]={‘C’,’ ‘,’p’,’r’,’o’,’g’,’r’,’a’,’m’};
C:
char a[10]; strcpy(a,”C program”);
D:
char a[10]={‘C’,’ ‘,’p’,’r’,’o’,’g’,’r’,’a’,’m’,”};
答案:
15、多选题:
如有说明:int a[3][4]; ,则对a数组元素的合法引用是( )
选项:
A:
a[0][4]
B:
a[1][3]
C:
a[2][0]
D:
a[0][2]
答案:
第十章 单元测试
1、判断题:
for(j=h+1;j<=max-1;j++) printf(“%04d”,a[j]);输出结果中,若数组小于1000则前面显示前导字符0.
选项:
A:错
B:对
答案:
2、判断题:
程序能实现求20的阶乘值。int s=1;n=1;for(n=1;n<=20;n++)s=s*n;
选项:
A:对
B:错
答案:
3、判断题:
对数组下标的访问规律变化,可用数组赋指定值实现。
选项:
A:对
B:错
答案:
4、判断题:
扫雷游戏设计数据结构只能用二维数组。
选项:
A:对
B:错
答案:
5、多选题:
程序设计基本过程包括:
选项:
A:界面设计。
B:确定数据的组织形式即数据结构。
C:总体设计和详细设计
D:理解题意,分析需求。
E:代码的编写、调试、运行。
答案:
6、单选题:
一个递归算法必须包括()。
选项:
A:
递归部分
B:
循环部分
C:
终止条件和递归部分
D:
终止条件和循环部分
答案:
7、单选题:
对于递归函数f,调用f(4),其返回值为() 。
int f(int n)
{
if (n) return f(n – 1) + n;
else return n;
}
选项:
A:
其余选项均不是
B:
0
C:
4
D:
10
答案:
8、单选题:
调用函数f(27)的输出结果是( )。
void f(int n)
{ if(n<5)
printf(“%d”, n);
else{
printf(“%d”, n%5);
f(n/5);
}
}
选项:
A:
102
B:
21
C:
201
D:
20
答案:
9、单选题:
有如下函数调用语句: func(rec1, rec2+rec3, (rec4, rec5)); 则该函数调用语句中,含有的实参个数是( )。
选项:
A:
3
B:
5
C:
4
D:
有语法错
答案:
10、单选题:
在C语言中,下列错误的说法是。
选项:
A:
函数可以递归调用
B:
对于continue语句,可以通过改变程序的结构而不使用它
C:
不允许在函数定义中再定义函数
D:
递归程序不可能用非递归算法实现
答案:
11、单选题:
对于以下递归函数 f ,调用 f(4),其返回值为( )。
int f(int n)
{ return f(n-1)+n; }
选项:
A:
其余选项均不是
B:
0
C:
10
D:
11
答案:
12、单选题:
有两个字符数组a,b,则以下正确的输入语句是().
选项:
A:
scanf(“%s%s”,a,b);
B:
gets(“a”),gets(“b”);
C:
scanf(“%s%s”,&a,&b);
D:
gets(a,b);
答案:
13、单选题:
若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。
选项:
A:
数组元素的个数
B:
数组中全部元素的值
C:
数组的第一个元素值
D:
数组首地址
答案:
14、判断题:
对字符串进行输入输出操作时,只能对字符串整体进行输入输出。
选项:
A:对
B:错
答案:
15、判断题:
若有说明:int a[ ][4]={0,0}; 则表示二维数组a的第一维大小为1。
选项:
A:对
B:错
答案:
第十一章 单元测试
1、单选题:
使用指针变量访问目标变量,也称为对目标变量的()访问。
选项:
A:
一般性
B:
间接
C:
直接
D:
一次性
答案:
2、单选题:
若有说明:int i, j = 7, *p = &i ; 则与i = j;等价的语句是( ).
选项:
A:
i=&j;
B:
i=**p;
C:
i=p;
D:
*p=*&j;
答案:
3、单选题:
int a=2,*p=&a,*q=p,则以下非法赋值语句是()。
选项:
A:
*p=*q;
B:
q=a;
C:
p=q;
D:
a=*q;
答案:
4、单选题:
若有定义“int *p,m=5,n;”,则下列选项中正确的是().
选项:
A:
p=&n;
scanf(“%d”,&p);
B:
p=&n;
*p=m;
C:
scanf(“%d”,&n);
*p=n;
D:
p=&n;
scanf(“%d”,*p);
答案:
5、单选题:
若定义:int a=5,*b=&a;则printf(“%d”,*b);的输出结果是()。
选项:
A:
无确定值
B:
a的地址
C:
6
D:
5
答案:
6、单选题:
下列关于指针概念的描述,错误的是().
选项:
A:
指针的类型是他所存放的数值的类型
B:
指针中存放的是某变量或对象的地址值
C:
指针是变量,它也具有一个内存地址值
D:
指针的值是可以改变的
答案:
7、单选题:
如果x是整型变量,则合法形式为()。
选项:
A:
&*x
B:
&(x+5)
C:
*x
D:
*&x
答案:
8、单选题:
变量的指针,其含义是指该变量的()。
选项:
A:
名
B:
一个标志
C:
值
D:
地址
答案:
9、判断题:
系统对变量的直接访问是将变量的地址放在另一个内存单元中。
选项:
A:错
B:对
答案:
10、判断题:
“int i,k, *p=&i;”中定义的“*p=&i;”等价于“int *p;p=&i;”。
选项:
A:错
B:对
答案:
第十二章 单元测试
1、单选题:
假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是__。
选项:
A:char *s; scanf(“%s”, s); puts(s);
B:char s[5]={“ABCDE”}; puts(s);
C:char *s; s=”ABCDE”; puts(s);
D:char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; puts(s);
答案:
2、单选题:
下面程序的运行结果是()。
#include<stdio.h>
int main(void)
{
int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;
p = x;
pp = &p;
printf(“%d ”, *(p++));
printf(”%d”, **pp);
return 0;
}
选项:
A:2 4
B:4 6
C:2 2
D:4 4
答案:
3、单选题:
根据声明int a[10], *p=a; ,下列表达式错误的是( )。
选项:
A:a[9]
B:p[5]
C:*p++
D:a++
答案:
4、单选题:
若有定义“int a[10]={1,2,3,4,5,6,7,8,9,10},*p;”,则下列语句正确的是()。
选项:
A:
for(p=a;p<(a+10);++a)
B:
for(p=a;a<(p+10);a++)
C:
for(p=a;p<(a+10);p++)
D:
for(p=a,a=a+10;p<a;p++)
答案:
5、单选题:
若有定义“int a[10],*p=a;”,则p+5表示()。
选项:
A:
a[5]的值
B:
a[6]的值
C:
a[4]的地址
D:
a[5]的地址
答案:
6、单选题:
若有定义char a[]=”I am a boy”,*b=”I am a boy”;,则下列叙述错误的是()。
选项:
A:
b中存放的地址值可以改变
B:
a+3表示的是字符m的地址
C:
b指向其他字符串时,字符串的长度不受限制
D:
b中存放的地址就是数组a的首地址
答案:
7、单选题:
若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,则()不是对a数组元素的正确引用(0<=i<=10)。
选项:
A:
p[i]
B:
a[p-a]
C:
*(*(a+i))
D:
*(&a[i])
答案:
8、单选题:
若有定义“int a[5],*p=a;”,能正确引用a数组元素的是()。
选项:
A:
a+2
B:
*(a+2)
C:
*(p+5)
D:
&a[5]
答案:
9、单选题:
设有定义语句“float s[10],*p1=s,*p2=s+5;”,下列表达式错误的是()。
选项:
A:
p1-p2
B:
p1<=p2
C:
p2–
D:
p1=0xffff
答案:
10、单选题:
以下程序段的输出结果是()。
char *p[ ]={“ABC”,”DEF”,”GHI”};
int j;
puts(p[1]);
选项:
A:
ABC
B:
DEF
C:
B
D:
C
答案:
11、判断题:
用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。
选项:
A:对
B:错
答案:
12、判断题:
数组名代表数组的起始地址。
选项:
A:对
B:错
答案:
13、判断题:
有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8)。
选项:
A:错
B:对
答案:
第十三章 单元测试
1、单选题:
以下程序运行后的输出结果是____。
#include<stdio.h>
struct s
{
int x;
int y;
} data[2] = {10, 100, 20, 200};
int main()
{
struct s *p = data + 1;
printf(“%d”, p->x);
return 0;
}
选项:
A:21
B:11
C:20
D:10
答案:
2、单选题:
有如下定义:
struct Student{
char name[10];
int age;
char gender;
}std[3], *p=std;
则以下各输入语句中错误的是:
选项:
A:scanf(“%s”,&std.name);
B:scanf(“%c”,&(p->gender));
C:scanf(“%d”,&(*p).age);
D:scanf(“%c”,&std[0].gender);
答案:
3、单选题:
有如下定义:struct date { int year; int month; int day; };struct { char name[20]; char sex; struct date birthday; }person;下面正确的赋值语句是()。
选项:
A:
person.year=1980;
B:
year=1980 ;
C:
person.birthday.year=1980;
D:
birthday.year=1980 ;
答案:
4、单选题:
共用体变量在程序执行期间()。
选项:
A:
部分成员一直驻留在内存中
B:
所有成员一直驻留在内存中
C:
只有一个成员一直驻留在内存中
D:
没有成员一直驻留在内存中
答案:
5、单选题:
设有以下定义:struct sk{int a;float b;}data;int *p;若要使p指向data中的a域,正确的赋值语句是()。
选项:
A:
p=&a;
B:
p=data.a;
C:
p=&data.a;
D:
*p=data.a;
答案:
6、单选题:
对于结构体变量的引用,下列叙述正确的是()。
选项:
A:
对结构体成员可以进行各种运算,其中“.”优先级最低。
B:
只能引用结构体变量成员的地址,不能引用结构体变量的地址。
C:
如果成员本身就是一个结构体,只能对最低级的成员进行赋值等引用和运算。
D:
两个同一类型的结构体变量之间不能整体赋值。
答案:
7、单选题:
以下叙述错误的是()。
选项:
A:
可以用typedef将已存在的类型用一个新的名字代表
B:
可以通过typedef增加新的类型
C:
用typedef定义新类型后,原有类型名仍有效
D:
用typedef可以为各种类型起别名,但不能为变量起别名
答案:
8、单选题:
在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。
选项:
A:
p->next=q->next; p->next=q;
B:
q->next=p->next; p->next=q;
C:
q->next=p->next; p=q;
D:
p->next=q->next; q->next=p;
答案:
9、单选题:
链表不具有的特点是()。
选项:
A:
所需空间与线性长度成正比
B:
不必事先估计存储空间
C:
可随机访问任一元素
D:
插入、删除不需要移动元素
答案:
10、判断题:
“结构体名”和“结构体成员名”都是用户定义的标识符。
选项:
A:错
B:对
答案:
11、判断题:
每个“结构体成员列表”项中都可以含有多个同类型的成员名,它们之间以分号分隔。
选项:
A:对
B:错
答案:
12、判断题:
共用体变量所占内存长度是各成员所占内存长度之和。
选项:
A:错
B:对
答案:
13、多选题:
若有以下说明和语句:struct student { int no; char *name; }stu, *p=&stu; 则以下引用方式正确的是()。
选项:
A:
stu->no
B:
(*p).no
C:
stu.no
D:
p->no
答案:
14、多选题:
设有说明语句:struct s { int a; float b; }type;则下面正确的叙述是()。
选项:
A:
struct s是用户定义的结构体类型
B:
a和b都是结构体成员名
C:
type是用户定义的结构体类型名
D:
struct是结构体类型的关键字
答案:
第十四章 单元测试
1、单选题:
以下语句将输出 ()。
#include <stdio.h>
printf(“%d %d %d”, NULL, ”, EOF);
选项:
A:NULL EOF
B:0 0 1
C:1 0 EOF
D:0 0 -1
答案:
2、单选题:
下列关于C语言数据文件的叙述中正确的是____。
选项:
A:文件由二进制数据序列组成,C语言只能读写二进制文件
B:文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
C:文件由ASCII码字符序列组成,C语言只能读写文本文件
D:文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
答案:
3、单选题:
若要打开A盘上的user子目录下的名为abc.txt的文本文件进行读写操作,下列符合此要求的函数调用是()。
选项:
A:fopen(“A:userabc.txt”,”rb”);
B:
fopen("A:userabc.txt","w");
C:fopen(“A:userabc.txt”,”r”);
D:
fopen("A:userabc.txt","r+");
答案:
4、单选题:
C语言中,对文件的存取以()为单位。
选项:
A:
记录
B:
簇
C:
元素
D:
字节
答案:
5、单选题:
关闭文件函数的正确调用形式是()。
选项:
A:
fclose(文件指针);
B:
fclose(*文件指针);
C:
fclose. *文件指针;
D:
fclose. 文件指针;
答案:
6、单选题:
若以”a+”方式打开一个已存在的文件,则叙述正确的是()。
选项:
A:
文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。
B:
文件打开时,原有文件内容被删除,位置指针移到文件开头,可作重新写和读操作。
C:
其余选项说法皆不正确。
D:
文件打开时,原有文件内容被删除,只可作写操作。
答案:
7、单选题:
若要用fopen函数打开一个新的二进制文件,该文件既要能读也要能写,则文件打开方式字符串应是()。
选项:
A:
“ab+”
B:
“wb+”
C:
“rb+”
D:
“ab”
答案:
8、单选题:
直接使文件指针重新定位到文件读写的首地址的函数是() 。
选项:
A:
rewind()函数
B:
ferror()函数
C:
fseek()函数
D:
ftell()函数
答案:
9、判断题:
文本文件每个字节存放一个ASCII码,代表一个字符。
选项:
A:对
B:错
答案:
10、判断题:
定义文件指针的一般形式:FILE 指针变量名;
选项:
A:错
B:对
答案:
11、判断题:
C语言中文件缓冲区是硬盘上一块区域。
选项:
A:错
B:对
答案:
12、多选题:
下列文件使用方式及含义描述正确的是()。
选项:
A:
”r”(只读)为输入打开一个文本文件
B:
”r+”(读写)为读/写打开一个文本文件
C:
”a”(追加)向二进制文件尾增加数据
D:
”w”(只写)为输出打开一个文本文件
答案:
请先
!