C语言考试复习题资料
1.以下不属于C语言特点的是(D )
A.简洁紧凑,灵活方便
B.数据结构类型丰富
C.可移植性好
D.能够直接被计算机识别和执行
2.#include命令是一种(C )
A.函数
B.宏定义
C.预处理命令
D.条件编译命令
3.C语言中最简单的数据类型包括( B)
A.整型,实型,逻辑型
B.整型,实型,字符型
C.整型,字符型,逻辑型
D.字符型,实型,逻辑型
4.以下整型常量正确的是(D)注:整型常量一般用十进制表示
A.078
B.20.0
C.2e10
D.Oxabc
5.字符常量只能用( B)括起来
A.圆括号
B.单引号
C.双引号
D.分号
6.以下不正确的叙述是( D)
A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.运算优先级不同的运算符也要先看结合方向
7.设有int a=2,b=4,c=6,y=3;则执行语句y=((b=a+b),(b+c));后,y的值是(C )
A.6
B.10
C.12
D.3
8.C语言中用于结构化程序设计的三种基本结构是( D)
A.if,switch,break
B.If,while,for
C.While,do-while,for
D.顺序结构,选择结构,循环结构
9.下列叙述中正确的是( B)
A.调用printf()函数时,必须要有输出项
B.使用printf()函数时,必须在之前包含头文件stdio.h
C.在C语言中,实数可以以十进制,八进制或十六进制的形式输出
D.调用getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码
10.程序段:
int x=12;( )
A.123.141593
B.12
3.141593
C.12,3.141593
D.12 3.141593
11.( D)不是算法的表达方式。
A.流程图
B.N-S流程图
C.伪代码
D.数据结构
12.有如下程序( )
#include“stdio.h”
A.0
B.-1
C.1
D.2
13.下列叙述中正确的是( D)
A.break语句只能用于switch语句中
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,不一定使用break语句
14.语句while(!E)中表达式!E等价于(D )
A.E==0
B.E!=1
C.E!=0
D.E==1
15.若变量已正确定义,有下列程序段:
i=0;
A.0,0
B.0,1
C.1,1
D.程序进入无限循环
16.有以下程序
#include<stdio.h>
A.2 3 4
3 4 5
B.4 3 2
5 4 3
C.2 3
3 4
4 5
D.4 5
3 4
2 3
17.在循环中使用break语句的功能是( A)
A使程序的执行跳出break所在的那一重循环
B.是程序执行结束
C.跳出包含此break语句的所以循环
D.终止本次循环,继续下次循环
18.下列程序的输出结果( )
main()
A.1 B.2 C.3 D.4
19.若说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(B)
A.2 B.3 C.4 D.无确定值
20.下列能正确定义字符串的语句是(D)
A.char str[]={`\064`};
B.char str=“kx43”;
C.char str=”;
D.char str[]=“\0”
21.表达式strlen(“hello”)的值是(B )
A.4 B.5 C.6 D.7
22.已有定义:char a[]=“xyz”,b[]={‘x’,‘y’,‘z’};下列叙述中正确的是( B)
A.数组a和b的长度相同
B.a数组长度大于b数组长度
C.a数组长度小于b的数组长度
D.上述说法都不对
23.有下列程序:
Main()
A.1,6,5,7 B.8,7,3,1 C.4,7,5,2 D.1,6,,2,1
24.以下所列的各函数首部中,正确的是(C )
A.void play(var:Integer,var b:Integer)
B.void play(int a,b)
C.void play(int a,int b)
D.Sub play(a as integer,b as integer)
25.以下正确的描述是(B )
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
26.有以下程序
Int f1(int x,int y)
A.3,4,5 B.5,3,4 C.5,4,3 D.3,5,4
27.以下叙述不正确的是(D )
A.在不同的函数中可以使用同名的变量
B.函数中的形式参数是局部变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内复合语句中定义的变量也可在本函数范围内有效
28.有以下程序
Void f(int b[])
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,6,8,10,12,7,8,9,10,
C.1,2,3,4,10,12,14,16,9,10,
D.1,2,6,8,10,12,14,16,9,10,
29.若有以下程序
#include<stdio.h>
A.6 B.8 C.4 D.2
30.有定义:int:*p,m=5,n;以下正确的程序段是( A)
A.p=n;scanf(“%d”,p); 注:此题答案显示不正确
A.p=n;scanf(“%d”,*p);
B.scanf(“%d”,n);*p=n;
C.p=n,*p=m;
31.C语言特点不包括( D)
A.生成的目标代码质量高
B.程序执行效率高
C.兼备高级语言、低级语言的双重特点
D.依赖计算机的硬件系统
32.以下说法错误的是( C)
A.高级语言都是接近人们习惯的自然语言和数字语言作为语言的表达形式
B.计算机智能处理由0和1的代码构成的二进制指令或数据
C.C语言源程序经过C语言编译程序之后生成一个后缀为.EXE的二进制文件
D.每一种高级语言都有它对应的编译程序
33.语句unsiguned short a;将a定义为( C)变量
A.短整型 B.无符号整型 C.无符号短整型 D.有符号短整型
34.以下为十进制无符号长整数的是(A )
A.23Lu B.23L C.23u D.23
35.设有int x=66;则语句printf(“%c\n”,x);的运行结果是( B)
A.A B.B C.66 D.编译出错
36.设有int x=11;则表达式(x++*1/3)的值是(A )
A.3 B.4 C.11 D.12
37.如有如下定义:float=2.5;则表达式(int)a+5的值为( A)
A.7 B.7.5 C.8 D.8.5
38.下列不是赋值语句的是(B)
A.a-- B.a==0 C.a=100 D.a*=10
39.putchar函数可以向终端输出一个( D)
A.整型变量表达式值 B.实型变量值
C.字符串 D.字符或字符型变量值
40.下列几种说法中,正确的是(C )
A.else语句需与他前面的if语句配对使用
B.else语句需与前面最接近它的if语句配对使用
C.else语句需与前面最接近它的,且没有和其他else语句配对的if语句配对
D.以上都正确
41.程序段:int a=1,b=2,c=3;if(a<b){c=a;a=b;b=c;}执行后a,b,c的值分别为多少(D)
A.a=1,b=2,c=3 B.a=2,b=3,c=1
C.a=2,b=3,c=3 D.a=2,b=1,c=1
42.以下不构成无限循环的语句或语句组是(C)
A.n=0;do{++n;}
B.n=0;while(n<=0);while(1){n++;}
C.n=10;while(n);{n--;}
D.for(n=0;i=1;;i++)n+=1
43.设变量已正确定义,则以下能正确计算f=n!的程序段是(D)
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
44.在循环中使用break语句的功能是(A )
A.使程序的执行跳出break所在的那一重循环
B.使程序执行结束
C.跳出包含此break语句的所有循环
D.终止本次循环,继续下次循环
45.有两个字符数组a、b,则以下正确的输入格式是( B)
A.gets(a,b);
B.scanf(“%s%s”,a,b);
C.scanf(“%s%s”,a,b);
D.gets(“a”),gets(“b”);
46.以下正确的说法是( B)
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义
C.系统不允许用户重新定义标准库函数
D.用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用
47.用一维数组名作函数的实际参数,则传递给形式参数的是( A)
A.数组首元素的地址 B.数组中第一个元素的值
C.数组中元素的个数 D.数组中全部元素的值
48.c语言程序的执行顺序是(C)
A、从第一个函数开始执行
B、从任意函数开始执行
C、从mian函数开始执行
D、从第一条语句开始执行
49.定义无符号长整型变量的类型说明符是(D)
A、Unsinged
B、Unsinged int
C、Long
D、Unsinged long
50.以下对实型数据说法错误的是(C) C
A、c语言的实型数据是以指数形式存在的
B、C语言的实型数据包括:float,double,long,double
C、一个实数只能有一种指数形式
D、一个实数可以有多种指数形式
51.下列不合法的字符常量是(B)
A、‘\xff”
B、‘\65’
C、‘\028’
D、‘\t’
52.设整型常量n的值为2,执行语句n+=n后,n的值是(B)
A.2 B.4 C.-4 D.0
53.如有如下定义:int a=5; 则表达式(a++)=5的值为( B)
A.0 B.1 C.-5 D.不确定
54.复合语句是由( A)把多个语句括起来组成的一个语句
A、花括号{}
B、圆括号()
C、双引号“”
D、单引号‘’
55.若有定义和语句:int a=21,b=021;printf(“%x,%d\n”,a,b)(D)
A、17,15
B、16,18
C、17,19
D、15,17
56.下列关于算法的描述中,错误的是(D) D
A.算法是对操作的描述
B.算法就是操作步骤
C.算法是解决”做什么“和”怎么做’的问题
D.算法是对数据的描述
57.下列语句中不能实现循环结构的语句是(A)
A.if语句 B.while C.do.....while语句 D.for语句
58.在c语言中,引用数组元素时,其数组下标的数据类型允许是(C)
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
59.以下正确的定义语句是( D) D
A.int a[1] [4]={1,2,3,4,5};
B.Float x[3][]={{1},{2},{3}};
C.Long b[2][3]={{1},{1,2},{1,2,3}};
D.Double y[][3]={0};
60.下列正确定义字符串的语句是( D) D
A.char str[]={‘\064’};
B.Char str=”kx43”;
C.Char str=’’
D.Char str[]=”\0”;
61.若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是(D ) 此题答案显示不全,答案中的符号&未显示出来
A、 p=n;scanf(“%d”,p);
B、 p=n;scanf(“%d”,*p);
C、 scanf(“%d”,n);
D、 p=n;scanf(“%d”,p);
62.以下哪个是C语言不具备的特性( D) D
A、 结构化
B、 可移植性
C、 具有低级语言的许多功能
D、 面向对象
63.以下叙述正确的是(C) C
A、 C语言程序可以直接执行
B、 C语言程序需要编译后才能执行
C、 C语言程序需要编译并连接后才能执行
D、 C语言程序不能执行
64.以下叙述正确的是( C) C
A、 C语言只提供一种整型数据
B、 C语言的整型数据在内存中是以源码形式存放的
C、 C语言提供的整型数据占两个字节
D、 C语言提供无符号和有符号两大类整型数据
65.不能进行++和—运算的数据类型为(D) D
A、 指针
B、 整型
C、 长整型
D、 常量
66.语句printf(“%f%%”,1.0/3);的输出结果为( D)
A、0%
B、0.333333%%
C、0.3%%
D、0.333333%
67.程序段:int a=1,b=2,c=3;if(a<b){c=a;a=b;b=c;}执行后a,b,c的值分别为(D )
A、a=1,b=2,c=3
B、a=2,b=3,c=1
C、a=2,b=3,c=3
D、a=2,b=1,c=1
68.若有int n=0;以下不能统计一行输入字符个数(不含回车符)的程序段是( A )
A、while((ch=getchar()!='\n')n++;
B、while(getchar()!='\n')n++;
C、for(;getchar()!='\n';n++);
D、for(ch=getchar();ch!='\n';n++);
69.关于break语句,以下说法不正确的是( C )
A、它可以用于循环语句中
B、它可以用于switch语句中
C、可以从最内层循环结构中直接跳出最外层循环结构
D、可以从当前switch结构中跳出
70.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为( B)
A、i*m+j
B、j*m+i
C、i*m+j-1
D、i*m+j+1
71.如果在一个函数中的复合语句中定义了一个变量,则该变量(A)
A、只在该复合语句中使用
B、可以在该函数中使用
C、可以在本程序范围内使用
D、为非法变量
72.C语言的作者是( C)
A、Martin Richards
B、Ken Thompson
C、Dennis M.Ritchie
D、Brian W.Kernighan
73.以下说法错误的是( A) A
A、符号常量可以被重新定义
B、符号常量必须先定义后使用
C、习惯上符号常量名采用大写字母
D、使用符号常量可以提高程序的可读性,方便程序的更改
74.列数据中,不合法的C语言实型数据的是(B)
A、0.1
B、e20
C、10.0
D、200f
75.'\n'属于(A)
A、转义字符
B、字符变量
C、字符串
D、字符串变量
76.若已定义x和y为double类型,则表达式x=2,y=x+3/2的值是(B)
A、3
B、3.0
C、3.5
D、4
77.如有如下定义:int a=5;则表达式(a++)-5的值为(A)
A、0
B、1
C、-5
D、不确定
78.下列表达式中,与a%=b+2等价的是( B)
A、a=a%b+2
B、a=a%(b+2)
C、a=(b+2)*a
D、a%b=2
79.有定义语句:int b;char c[10];则正确的输入语句是( B)
A、scanf("%d%s",b,c);
B、scanf("%d%s",&b,c);
C、scanf("%d%s",b,c);
D、scanf("%d%s",b,&c);
80.C语言程序的基本单位是(D )
A.子程序 B.程序 C.过程 D.函数
81.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)
A.‘a’<=c<=‘z’
B.(c>=‘a’)||(c<=‘z’)
C.(c>=‘a’)and(c<=‘z’)
D.(c>=‘a’)&&(c<=‘z’)
82.若int x=0;则while(x==0);的循环次数是(D) D
A.0次 B.1次 C.2次 D.无限次
83.有字符数组a[80]和b[80],则正确的输出形式是(D)
A.puts(a,b);
B.printf(“%s,%s”,a[],b[]);
C.putchar(a,b);
D.puts(a),puts(b);
84.判断字符串a和b是否相等,应当使用(D) D
A.if(a==b)
B.if(a=b)
C.if(strcpy(a,b))
D.if(strcmp(a,b))
85.以下正确的函数定义是(A)
A.double fun(int x,int y){ }
B.double fun(int x;int y){ }
C.float fun(int x;y){ }
D.float fun(int x,y){ }
86.C语言中,函数返回值的类型是由(D)决定
A.主调函数的类型
B.return语句中表达式的类型
C.由系统临时决定
D.定义该函数时所指定的函数类型
87.如果在一个函数中的复合语句中定义了一个变量,则该变量(A)
A.只在该复合语句中使用
B.可以在该函数中使用
C.可以在本程序范围内使用
D.为非法变量
88.getchar函数的作用是从计算机终端输入(A)
A.一个字符 B.多个字符
C.一个整数 D.一个实数
89.若有定义语句:char s[10]=“1234567\0\0”;,则strlen(s)的值是(A)
A.7 B.8 C.9 D.10
90.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因(A) 没看到程序
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值。而不是变量a的地址
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
92.以下说法错误的是(D)
A.使用符号常量可以在程序中做到“一改全改”
B.符号常量的值在其作用域内不能改变
C.符号常量可用#define命令来定义
D.符号常量名必须采用大写字母
93.若已定义x和y为double类型,则表达式x=2,y=x+3/2的值是( B)
A.3 B.3.0 C.3.5 D.4.0
94.如有定义:int a=2,b=5,c=10;则表达式a=b,a*c,c-a的值是(A)
A.5 B.20 C.8 D.15
95.若有说明语句:int a=5,b=6;b*=a+1;则b的值为(D)
A.5 B.6 C.31 D.36
96.已知int x=6,y=2,z;则执行表达式“z=x=x>y”后,变量z的值为(B)
A.0 B.1 C.4 D.5
97.若已定义的函数有返回值,则有关该函数调用的叙述中错误的是(B) B
A.调用可以作为独立的语句存在
B.调用可以作为一个函数的形参
C.调用可以作为一个函数的实参
D.调用可以出现在表达式中
98.以下叙述中错误的是(D) D
A.程序必须由一个或一个以上的函数组成
B.函数调用可以作为一个独立的语句存在
C.若函数有返回值,必须通过return语句返回
D.函数形参的值也可以传回给对应的实参
99.若有定义语句:double x,y,*px,*py,执行了px=&x,py=&y;之后,正确的输入语句是(C)
A.scanf(“%f%f”,x,y);
B.scanf(“%f%f”,*px,*py);
C.scanf(“%lf%lf”,px,py);
D.scanf(“%lf%lf”,x,y);
100.有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是(D)
A.gets(&s[0]); B.scanf(“%s”,s+1);
C.gets(s); D.scanf(“%s”,s[1]);
判断题
1.#include命令不能包含用户自己建立的头文件。 错
2.用标识符来表示的常量称为符号常量。 对
3.(int)x+y的作用是把x+y的结果转换成整型。 错
4.如果赋值运算符两边的数据类型不一致,在赋值时要进行类型转换。 对
5.要使用printf函数输出字符“%”,需要在格式控制字符串中用连续两个%来表示。 对
6.只有在a为真(非0)时,表达式a&b才需要判断b的值。 对
7.switch语句中,case语句后如没有break,则顺序向下执行。 对
8.do-while循环中,根据情况可以省略while。 错
9.如果形参与实参的类型不一致,以实参类型为准。 错
10.“一个单精度指针变量只能赋单精度变量的地址,单精度数组名,另外单精度指针变量的值”这种说法正确否? 错
11.后缀为f或F的数为浮点数。 对
12.‘5’于5是一样的。 错
13.在赋值运算中,类型转换是由系统自动进行的。 对
14.条件运算符?和:是一对运算符,不能分开单独使用。 对
15.在switch语句中,每一个的case常量表达式的值可以相同。 错
16.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成。 对
17.全局变量的作用域一定比局部变量的作用域范围大。 错
18.C程序一行只能写一个语句。 错
19.C语言的数据类型只有int型、float型、char型。 错
20.表达式1\4*3的值是0.75。 错
21.关系运算符的优先级高于逻辑运算符(不包括!)。 对
22.若有int i=10,j=0;则执行完语句if(j=0)i++;else i--;i的值为11。 错
23.Continue语句的作用是结束整个循环的执行。 错
24.若有定义语句:double a,*p=&a;定义语句中的*号是一个间址运算符,这种说法是否正确? 错
25.注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 对
26.变量可以先使用后定义。 错
27.在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。 对
28.a=b+c=1是正确的赋值表达式。 错
29.用putchar函数可以输出能在屏幕上显示的字符,也可以输出屏幕控制字符及其他转义字符。 对
30.表达式‘c’&&‘d’的值为0。 错
31.If(a=5)是合法的。 对
32.静态(static)类别变量的生存期贯穿于整个程序的运行期间。 对
33.源文件经过编译可得到目标文件。 对
34.在C语言中,常数045跟45等值。 错
35.在所有运算符中,逗号运算符的优先级最低。 对
36.空语句可以用来作流程的转向点,即流程从程序其他地方转到此语句处。 对
37.若a为整型变量,则语句scanf(“%d”,a);是合法的。 错
38.关系运算符“<=”和“==”的优先级相同。 错
39.If语句的嵌套是指在if语句中又包含一个或多个if语句。对
40.For、while、do-while循环中的循环体均可以由空语句构成。错
41.未在定义语句中赋初值的auto变量和static变量的初值都是随机值。 错
42.有定义:float x,*p=&x;是否正确? 对
43.自增,自减运算符既可以用于变量,又可用于常量和表达式。 错
44.字符变量可以不定义直接使用。 错
45.在逻辑表达式的求解中,并不是所有的逻辑运算都被执行。对