C语言程序设计教程第四章练习题解析最新版Word格式文档下载.docx
《C语言程序设计教程第四章练习题解析最新版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程第四章练习题解析最新版Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
4、在C语言中,内部函数需要添加的关键字是()
A.extern
B.static
C.this
D.auto
在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。
5、当调用时,会调用内部函数
A.当调用时,会调用内部函数
B.当调用时,会调用外部函数
C.当调用时,会调用两次,先调用内部函数再调用外部函数
D.都不调用,会报错
当内部函数与外部函数重名时,会优先调用内部函数
6、在C语言中,声明外部函数需要添加的关键字是()
声明外部函数的方式是在函数的返回值类型前面添加extern关键字
7、关于C语言中的局部变量,下列描述中错误的是()
A.局部变量就是在函数内部声明的变量
B.局部变量只在函数内部有效
C.局部变量只有当它所在的函数被调用时才会被使用
D.局部变量一旦被调用,其生存周期持续到程序结束
D
当函数调用结束时局部变量就会失去作用
8、关于C语言中的全局变量,下列描述中正确的是()
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态类别变量的生存周期贯穿于整个程序的运行期间
C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
选项1不对:
如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用;
选项3不对:
除了C++的引用类型参数,所有函数的形参都是局部变量;
选项4不对:
static变量定义时就存储地全局区,初始化为0;
9、当全局变量与局部变量重名时,那么在调用时()
A.局部变量会被屏蔽
B.全局变量会被屏蔽
C.都不会调用,系统会报错
D.会调用两次,先调用局部变量,再调用全局变量
当局部变量与全局变量重名时,全局变量会被屏蔽。
10、在C语言中,关于变量的作用域,下列描述中错误的是()
A.局部变量只在整个函数的运行周期中有效
B.全局变量的作用域为整个程序的运行周期
C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量
D.全局变量会覆盖掉所有与它重名的局部变量
当全局变量与局部变量重名时,全局变量会被屏蔽掉
11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()
A.只在该复合语句中有效,在该复合语句外无效
B.在该函数中任何位置都有效
C.在本程序的原文件范围内均有效
D.此定义方法错误,其变量为非法变量
1、2与3错:
函数复合语句中定义的变量在该复合语句中引用;
但如果函数含有该变量,则在函数中可以引用该变量
4对:
在C++中在复合语句中定义变量为合法,但在C语言中是非法的
12、C语言程序的基本单位是()。
A.程序行
B.语句
C.函数
D.字符
C
函数是C语言程序的基本单位
13、C语言中决定函数返回值的类型的是()。
A.return语句中的表达式类型
B.调用函数的主调函数类型
C.调用函数时临时
D.定义函数时所指定的函数类型
函数的返回值取决于定义函数时指定的返回值类型
14、若有函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a,b)));
在此函数调用语句中实参的个数是()。
a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b))返回一个值。
15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。
A.inputx,y,z;
B.scanf("
%d%d%d"
&
x,&
y,&
z);
C.scanf("
x,y,z);
D.read("
读取键盘输入的数据要用scanf()函数,scanf()中的参数要传入变量的地址
16、若变量已正确说明为float类型,要通过语句scanf("
%f%f%f"
a,&
b,&
c);
给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是()。
A.102233
B.10.0,22.0,33.0
C.10.022.033.0
D.10;
22;
33
用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开
17、若有定义:
intx,y;
chara,b,c;
并有以下输入数据(此处\u代表空格):
1\u2\uA\uB\uC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。
A.scanf("
x=%dy=%d"
y);
a=getchar();
b=getchar();
c=getchar();
%d%d"
%d%d%c%c%c,&
D.scanf("
%d%d%c%c%c%c%c%c"
c,&
空格也会作为一个字符赋给字符变量。
18、对嵌套子程序调用说法正确的是()。
A.外层子程序可以调用所有的内层子程序
B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用
C.外分程序必须能完全套住内分程序
D.以上说法均不正确
19、C语言中函数能否嵌套调用和递归调用?
()
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
两者调用都可以
20、C语言规定,程序中各函数之间()。
A.既允许直接递归调用也允许间接递归调用
B.不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
各程序间既可以直接调用也可以间接调用。
21、有如下程序:
longfib(intn)
{
if(n>
2)
returnfib(n-1)+fib(n-2);
else
return2;
}
voidmain()
printf("
%d\n"
fib(3));
该程序的输出结果是()。
A.2
C.6
D.8
向fib()函数传入3时,返回fib
(1)+fib
(2)的值;
向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4。
22、以下程序的输出结果是()。
longfun(intn)
longs;
if(n==1||n==2)
s=2;
s=n-fun(n-1);
returns;
%ld\n"
fun(3));
A.1
B.2
C.3
D.4
fun()函数传入3时,返回3-fun
(2);
fun()函数传入2时,返回2。
所以fun(3)返回3-2=1。
23、在C语言中,函数的隐含存储类别是()。
A.auto
C.extern
D.无存储类别
为简化编程,C语言中允许在定义外部函数时省略关键字extern。
24、以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
函数内的复合语句中定义的变量仅仅在该复合语句中有效。
25、以下程序运行后,输出结果是()。
intfunc(inta,intb)
staticintm=0,i=2;
i+=m+1;
m=i+a+b;
returnm;
intk=4,m=1,p;
p=func(k,m);
%d,"
p);
A.8,15
B.8,16
C.8,17
D.8,8
函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。
26、以下程序的输出结果是()。
intd=1;
intfun(intp)
staticintd=5;
d+=p;
%d"
d);
returnd;
inta=3;
%d\n"
fun(a+fun(d)));
A.699
B.669
C.61515
D.6615
首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值是1,d+=p后d的值是6,输出d的值,返回d的值;
然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,d+=p后d赋值15,输出d的值,返回d的值。
27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。
B.register
C.auto
D.static
static修饰全局变量时,表示该变量仅在本文件中可使用。
28、下列程序的输出结果是()。
intb=2;
intfunc(int*a)
b+=*a;
returnb;
inta=2,res=2;
res+=func(&
a);
res);
A.4
B.6
C.8
D.10
func()函数中,对全局变量b自增a的值,func()函数返回4;
res+=4,res赋值为6。
29、请读程序:
inta=1,b=2,c=3;
++a;
c+=++b;
{
intb=4,c;
c=b*3;
a+=c;
pri