C语言期末复习题附答案.docx
《C语言期末复习题附答案.docx》由会员分享,可在线阅读,更多相关《C语言期末复习题附答案.docx(13页珍藏版)》请在冰豆网上搜索。
C语言期末复习题附答案
1、凡是函数中未指定存储类型的局部变量,其隐含的存储类型为(A)。
A、autoB、static
C、externD、register
2、若有定义:
int*ptr[6];则标识符ptr(B)。
A、是一个指向整形变量的指针B、是一个指针数组名
C、是一个指针,它指向一个含有四个整形元素的一维数组
D、说明不合法
3、结构化程序设计的基本结构主要是(D)
A、分支结构、平行结构、循环结构B、分支结构、函数结构、循环结构
C、平行结构、选择结构、函数结构D、顺序结构、选择结构、循环结构
4、一个C程序中,主函数的个数是(B)。
A、2个B、1个
C、任意个D、10个
5、在VisualC++6、0环境下,C源程序文件名的默认后缀是(A)。
A、、cppB、、exe
C、、objD、、dsp
6、根据C语言的语法规则,下列(B)是用户定义的合法标识符
A、elseB、ElseC、user$2D、5_object
7、以下叙述中正确的是(C)。
A、break语句只能用于switch语句体中
B、continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体内
D、在循环体内使用break语句和continue语句的作用相同
8、若定义intx=136,y;,执行语句y=x/10%10;后y的值是(B)
A、1B、3C、6D、0
9、下列关于C语言注释的叙述中错误的是(D)。
A、以"/*"开头并以"*/"结尾的字符串为C语言的注释内容
B、注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义
C、程序编译时,不对注释作任何处理
D、程序编译时,需要对注释进行处理
10、若有定义:
intx,a;则语句x=(a=3,a+1);运行后,x、a的值依次为(C)。
A、3,3 B、4,4 C、4,3 D、3,4
11、以下程序运行结果是(A)
voidmain()
{intx=28;
do
{
printf("%d",x--);
}while(!
x);
}
A、28B、27C、26D、0
12、如果a=1,b=2,c=3,d=4,则条件表达式a
a:
cc:
d的值为(A)。
A、1 B、2 C、3 D、4
13、下列关于C语言注释的叙述中错误的是(D)。
A、以"/*"开头并以"*/"结尾的字符串为C语言的注释内容
B、注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义
C、程序编译时,不对注释作任何处理
D、程序编译时,需要对注释进行处理
14、定义如下变量和数组:
intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是(A)
for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);
A、357B、369C、159D、147
15、C语言对嵌套if语句的规定是:
else总是与(D)配对。
A、其之前最近的if
B、第一个if
C、缩进位置相同的if
D、其之前最近的且没与其他else配对的if
16、有以下程序段
inta,b,c;
a=10;b=50;c=30;
if(a>b)a=b,b=c,c=a;
printf(〞a=%db=%dc=%d\n〞,a,b,c);
程序的输出结果是(B)。
A、a=10b=50c=10B、a=10b=50c=30
C、a=10b=30c=10D、a=50b=30c=50
17、判断字符串a和b是否相等,应当使用(D)
A、if(a==b)B、if(a=b)C、if(strcpy(a,b))D、if(strcmp(a,b))
18、以下结果为整数的表达式(设有inti;charc;floatf;)(B)。
A、i+f B、i*c
C、c+f D、i+c+f
19、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)。
A、INPUTx、y、z;B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);D、read("%d%d%d",&x,&y,&z);
20、下列叙述正确的是(B)
A、函数的定义允许嵌套,但函数的调用不允许嵌套
B、函数的定义不允许嵌套,但函数的调用允许嵌套
C、函数的定义和调用都不允许嵌套
D、函数的定义和调用都允许嵌套
21、当执行以下程序时,(C)。
#include
voidmain()
{inta;
while(a=5)
printf("%d",a--);
}
A、循环体将执行5次B、循环体将执行0次
C、死循环D、循环体将执行4次
22、若已定义:
int*p,a;,以下正确的语句是(D)
A、p=*a;B、a=p;C、a=*p;D、p=&a;
23、如果在一个函数中的复合语句中定义了一个变量,则该变量(A)。
A、只在该复合语句中有效B、在该函数中有效
C、在本程序范围内有效D、为非法变量
24、以下叙述中错误的是(B)。
A、用户自定义的函数中可以没有return语句
B、用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C、用户自定义的函数中若没有return语句,则应当定义函数为void类型
D、函数的return语句中可以没有表达式
25、若有说明:
ints[15];则对a数组元素的正确引用是(D)。
A、s[15]B、s[3、5]C、s(5)D、s[15-15]
26、执行inta[][4]={2,3,5,7,8,9,11,13,15};语句后,a[1][2]的值是(A)
A、11B、3C、5D、9
27、下面是s的初如始化,其中不正确的是(D)。
A、chars[5]={"abc"};B、chars[5]={‘a’,‘b’,‘c’};
C、chars[5]="";D、chars[5]="abcdef";
28、以下程序运行结果是(B)
#defineM(x,y,z)x*y*z
#include
voidmain()
{
inta=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
A、60B、15C、20D、程序错误
29、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(A)。
A、auto和registerB、extern和register
C、auto和staticD、static和register
30、如下表述中,判断字符数组a和b中所存储的字符串是否相等的选项是(D)。
A、a==bB、a=b
C、strcpy(a,b)D、strcmp(a,b)
31、在以下关于带参数宏定义的描述中,正确的说法是(A)。
A、宏名和它的参数都无类型B、宏名有类型,它的参数无类型
C、宏名无类型,它的参数有类型D、宏名和它的参数都有类型
32、在C语言中,二维数组元素在内存中的存放顺序是(A)
A、按行存放B、按列存放
C、由用户自己定义D、由编译器决定
33、以下不正确的叙述是(C)。
A、在C程序中,逗号运算符的优先级最低
B、在C程序中,APH和aph是两个不同的变量
C、在C程序中,无论是整数还是实数,都能被准确无误的表示
D、在C程序中,%是只能用于整数运算的运算符
34、下面正确的函数定义形式是(A)。
A、doublefun(intx,inty){……}
B、doublefun(intx;inty){……}
C、doublefun(intx,inty);{……}
D、doublefun(intx,y;){……}
35、在执行charstr[10]={"key\0word"};语句后,strlen(str)的结果是(A)
A、3B、4C、5D、8
36、下面程序的运行结果是(B)
voidmain()
{
intb[5]={1,3,5,7,9},*p;
p=b;
printf(“%d”,*(p+1));
}
A、1B、3C、5D、7
37、以下if语句错误的是(A)。
A、if(xB、if(x)x+=y;
C、if(xD、if(x!
=y)scanf("%d",&x);elsex++;
38、判断char型变量c是否为小写字母的正确表达式为(D)
A、’a’<=c<=’z’B、(c>=a)&&(c<=z)
C、(‘a’<=c)||(‘z’>=c)D、(c>=’a’)&&(c<=’z’)
39、指向一个变量的指针,其存储的数据是该变量的(B)。
A、值 B、地址 C、名称 D、一个标志
40、若已定义:
inta=3,b=4,c=5 ;,则下面表达式中值为0的是(D)
A、'a'&&'b'B、a<=bC、a||b+c&&b-cD、!
((a
c||1)
41、以下对二维数组s进行初始化的语句错误的是(C)。
A、ints[2][3]={0}; B、ints[][3]={1,2,3,4,5};
C、ints[2][3]={{1,2},{3,4},{5,6}};
D、ints[][3]={{1,2},{0}};
42、若有说明语句int(*ptr)();其含义是(C)。
A、ptr是一个指向一维数组的指针变量
B、ptr是指针变量,指向一个整形变量
C、一个指向函数的指针,该函数的返回值是一个整数
D、以上都不对
43、若x、y均为double型变量,正确的输入函数调用是(B)
A、scanf("%f%f",&x,&y);B、scanf("%d%d",&x,&y);
C、scanf("%lf%lf",&x,&y);D、scanf("%lf%lf",x,y);
44、在C语言中,下面哪个标识符是合法的(B)
A、ifB、dayC、#25D、a[3]
45、x为int型变量,且x=65,不正确的输出函数调用是(D)
A、printf(“%d”,x);B、printf(“%3d”,x);C、printf(“%c”,x);D、printf(“%s”,x);
46、以下能正确定义且赋初值的语句是(B)
A、intn1=n2=10;B、charc=32;C、floatf=f+1、1D、doublex=12、3E2、5
47、下列程序段的执行结果为(C)。
#include
main()
{intx=3;
do
{printf("%3d\n",x-=2);
}while(!
(--x));
}
A、1B、30C、1-2D、死循环
48、C语言对嵌入if语句的规定是:
else总是与(D)配对
A、其之前最近的ifB、第一个if
C、缩进位置相同的ifD、其之前最近且不带else的if
49、调用函数时,基本类型变量作函数实参,它和对应的形参(A)。
A、各自占用独立的存储单元B、共用一个存储单元
C、同名时才能共用在存储单元D、不占用存储单元
50、以下程序:
#include
voidmain()
{
intp,a=5;
if(p=a!
=0)
printf(“%d\n”,p);
else
printf(“%d\n”,p+2);
}程序输出结果是(B)
A、0B、1C、2D、5
51、若有说明:
ints[4][5];则对a数组元素的非法引用是(D)
A、s[0][2*1]B、s[1][3]C、s[4-2][0]D、s[0][5]
52、若有说明语句int(*ptr)();其含义是(C)。
A、ptr是一个指向一维数组的指针变量
B、ptr是指针变量,指向一个整形变量
C、一个指向函数的指针,该函数的返回值是一个整数
D、以上都不对
53、当执行以下程序时,(C)
#include
voidmain()
{
inta;
while(a=5)
printf("%d",a--);
}
A、循环体将执行5次B、循环体将执行0次
C、循环体将执行无限次D、系统会死机
54、以下正确的函数定义形式是(A)
A、intfun(intx,inty)B、intfun(intx;inty)C、intfun(intx,y)D、intfun(intx,y;)
55、在一个源文件中定义的全局变量的作用域为(D)
A、本文件的全部范围B、本程序的全部范围
C、本函数的全部范围D、从定义该变量的位置开始至本文件结束为止
56、以下程序运行的结果是(B)
#include
#defineMIN(x,y)(x)<(y)?
(x):
(y)
voidmain()
{inti=10,j=15,k;
k=10*MIN(i,j);
printf(“%d\n”,k);
}
A、10B、15C、100D、150
57、字符串”Iamastudent、”在存储单元中占(C)字节
A、3B、4C、16D、17
58、若定义一个结构体变量,则系统分配给它的内存是(A)。
A、各成员所需内存量的总和 B、结构中第一个成员所需内存量
C、成员中占内存量最大者所需的容量
D、结构中最后一个成员所需内存量
59、以下对二维数组a的正确说明是(C)。
A、intc[5][];B、floatc(5,4);
C、doublec[1][4];D、floatc(5)(4);
60、设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句(B)
if(x=y)printf("xisequaltoy、");
A、语法错B、不能判断x和y是否相等
C、编译出错D、能判断x和y是否相等
61、以下对C语言中共用体类型数据的叙述正确的是(C)。
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不可能同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员
62、调用函数时,基本类型变量作函数实参,它和对应的形参(A)
A、各自占用独立的存储单元B、共占用一个存储单元
C、同名时才能共用存储单元D、不占用存储单元
63、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。
能正确实现此功能的函数是(A)。
A、funa(int*x,int*y)B、funb(intx,inty)
{intp;{intt;
p=*x;*x=*y;*y=p;}t=x;x=y;y=t;}
C、func(int*x,int*y)D、fund(intx,inty)
{*x=*y;*y=*x;}{*x=*x+*y;*y=*x-*y;*x=*x-*y;}
64、如果在一个函数中的复合语句中定义了一个变量,则该变量(A)
A、只在该复合语句中有效B、在该函数中有效
C、在本程序范围内有效D、为非法变量
65、在一个源文件中定义的全局变量的作用域为(D)。
A、本文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量的位置开始至本文件结束为止
66、在以下关于带参数宏定义的描述中,正确的说法是(A)。
A、宏名和它的参数都无类型B、宏名有类型,它的参数无类型
C、宏名无类型,它的参数有类型D、宏名和它的参数都有类型
67、设有如下程序段
chars[20]="Bejing",*p;
p=s;
则执行p=s;语句后,以下叙述正确的是(A)。
A、可以用*p表示s[0]
B、数组s中元素的个数和p所指字符串长度相等
C、s和p都是指针变量
D、数组s中的内容和指针变量p中的内容相等