第七八章c语言复习试题Word格式文档下载.docx
《第七八章c语言复习试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第七八章c语言复习试题Word格式文档下载.docx(55页珍藏版)》请在冰豆网上搜索。
B.函数的定义不可以嵌套,但函数的调用可嵌套
C.函数的定义和调用均不可以嵌套
D.函数的定义和调用均可以嵌套
9.若使用一维数组名作函数实参,则以下正确的说法是_。
A.须在主调函数中说明此数组的大小
B.参数组类型与形参数组类型可以不匹配
C.在被调用函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
10.以下正确的说法是__。
如果在一个函数中的复合语句中定义了一个变量,则该变量
A.在该复合语句中有效
B.在该函数中有效
C.在本程序范围中均有效
D.为非法变量
11.以下叙述中正确的是___。
A.局部变量说明为static存储数,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
12.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则____。
A.称为函数的直接递归调用B.称为函数的间接递归调用
C.称为函数的循环调用D.C语言中不允许这样的递归调用
13、以下说法中正确的是______。
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
14.不正确的描述是___。
A.不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。
B.在定义函数时,必须指定形参的类型。
C.形参和实参之间可以是值传递。
D.数组名可以作为参数进行传递。
15.函数调用strcat(strcpy(str1,str2),str3)的功能是__。
A.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
B.将字符串str1复制到字符串str2中后再连接到字符串str3之后
C.将字符串str1复制到字符串str2中后再复制到字符串str3之后
D.将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中
16.以下叙述中不正确的是__。
A.在不同的函数中可以使用相同名字的变量。
B.函数中的形式参数是局部变量。
C.在一个函数内的复合语句中定义变量在本函数范围内有效。
D.在一个函数内定义的变量只在本函数范围内有效。
17、C语言中,函数值类型得定义可以缺省,此时函数得隐含类型是____。
A.voidB.intC.floatD.double
18、下列函数调用中,不正确的是____。
A.max(a,b)B.max(3,a+b)C.max(3,5)D.intmax(a,b)
19、如果限制一个变量只能为本文件所用,必须通过___。
A.外部变量说明B.静态内部变量C.静态外部变量D.局部变量说明
20、有以下函数定义:
voidfun(intn,doublex){…….},若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是____。
A.fun(inty,doublem)B.k=fun(10,12.5)C.fun(x,n)D.voidfun(n,x)
21、若已定义的函数有返回值,则以下关于该函数调用的叙述中,错误的是__。
A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的行参
22、下列叙述中,错误的一条是_____。
A.scanf()函数可以用来输入任何类型的多个数据
B.数组名作函数参数时,也采用“值传递”方式
C.如果行参发生改变,不会改变主调函数的实参值
D.函数实参与行参的类型应一致
23、在C语言的函数中,_____。
A.必须有行参B.行参必须是变量名
C.可以有也可以没有行参D.数组名不能作行参
24、关于return语句,正确的说法是____。
A.在主函数和其他函数中均可出现
B.必须在每个函数中出现
C.可以在同一个函数中多次出现
D.只能在除主函数之外的函数中出现一次
25、如果在用户程序中使用C语言库函数中的数学函数时,应该在源文件中使用的#include命令是_____。
A.#include”string.h”B.#include”math.h”
C.#include”stdio.h”D.#include”ctype.h”
26、已定义以下函数:
fun(int*p){return*p}该函数的返回值是____。
A.不确定的值B.行参p中存放的值
C.行参p所指存储单元中的值D.行参p的地址值
27、若输入1.5、2.5,以下程序的输出结果为______。
Main()
{floata,b;
intc;
scanf(“%f,%f”,&
a,&
b);
c=max(a,b);
printf(“%d”,c);
max(floatx,floaty)
{floatz;
z=x>
y?
x:
y;
return(z);
A.1.5B.2.5C.2D.3.0
28、下列程序的输出结果是_____。
#include<
stdio.h>
func(intx,inty)
{intz;
z=x+y;
returnz;
main()
{inta=10,b=20,c=30,s;
s=func((a--,b++,a+b),c--);
printf(“%d\n”,s);
A.30B.40C.60D.50
29、下列叙述中,正确的一条是____。
A.putchar函数可以输出一个字符串
B.在printf(“%c”,c)函数中,2个C是一样
C.语句printf(“%d%%”,1)的输出结果为1%
D.主函数和其他函数可以互相调用
30、有以下程序:
程序运行结果为____。
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
{inti,j=0;
for(i=1;
I<
3;
i++)j+=f(i);
printf(“%d\n”,j);
A.4B.3C.2D.1
31.以下正确的说法是。
A.用户若需调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准库函数
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
32.知函数func的定义为:
voidfunc()
{……}
则函数定义中void的含义是。
A.执行函数func后,函数没有返回值B.执行函数func后,函数不再返回
C.执行函数func后,可以返回任何类型C.以上答案均不正确
33.以下正确的函数首部定义形式是。
A.intabc(intx,inty)
B.intabc(intx;
inty)
C.intabc(intx,inty);
D.intabc(intx,y)
34.在以下对C语言的描述中正确的是。
A.在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参
B.C语言函数既可以嵌套定义,又可以嵌套调用
C.函数必须有返回值,否则不能使用函数
D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
35.以下正确的函数定义形式是。
A.intfun(intx,inty)B.intfun(intx,y)
{z=x+y;
{intz;
z=x+y;
returnz;
}}
C.intfun(x,y)D.intfun(intx,inty)
{intx,y,z;
}}
36.以下正确的说法是。
在C语言中
A.实参和与其对应的形参共占用一个存储单元
B.实参和与其对应的形参各占用独立的存储单元
D.形参是虚拟的,不占用存储单元
37.若调用一个函数,且此函数中没有return语句,则正确的说法是。
该函数
A.没有返回值B.返回一个不确定的值
C.能返回一个用户所希望的函数值D.返回若干个不确定值
38.以下正确的说法是。
A.实参只能是常量或常量表达式B.形参可以是常量、变量或表达式
C.形参只能是常量或常量表达式D.形参应与其对应的实参类型一致
39.C语言中函数返回值的类型是由决定的。
A.调用该函数的主调函数类型B.return后边的表达式类型
C.调用函数时系统临时指定D.定义函数时指定的函数类型
40.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。
A.地址传递B.由用户指定传递方式
C.由实参传给形参,再由形参传回给实参D.值传递
41.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。
A.float型B.1ong型C.int型D.double型
42.下面函数调用语句含有实参的个数为。
fun((expl,exp2),(exp3,exp4));
A.1B.2C.3D.4
43.若用数组名作为函数调用的实参,传递给形参的是。
A.数组第一个元素的地址B.数组第一个元素的值
C.数组中全部元素的值D.数组中全部元素的地址
44.以下正确的说法是。
如果在一个函数中的复合语句中定义了一个变量,则该变量的作用域
A.在该复合语句范围内有效B.在该函数范围内有效
C.在本程序范围内均有效D.在本源程序文件范围内均有效
45.以下叙述中不正确的是。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参的类型只需赋值兼容
C.在C语言中,全局变量的隐含存储类别是自动存储类别
D.在C语言中,局部变量的隐含存储类别是寄存器存储类别
46.说明语句“staticinti=10;
”中,“i=10”的含义是。
A.只说明了一个变量B.与“inti=10”在功能上等价
C.将变量i初始化为10D.将变量i赋值为10
47.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全
局变量,则该变量需要使用的存储类别是。
A.externB.registerC.autoD.static
48.在C语言中,对于存储类别为的变量,只有在使用它们时才占用内存单元
A.static和autoB.register和extern
C.register和staticD.register和auto
49.在一个源文件中定义的外部变量的作用域为。
A.本文件的全部范围B.本程序的全部范围
C.本函数的全部范围D.从定义的位置开始至本文件结束
50.函数swap(intx,inty)可以完成对x值和y值的交换,在运行调用函数中的如下语句后,a和b的值分别是。
a=2;
b=3;
swap(a,b);
A.32B.33C.22D.23
51.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则。
A.称为函数的直接递归调用B.称为函数的间接递归调用
C.称为函数的循环调用D.C语言中不允许这样的递归调用
52.以下叙述中正确的是。
A.局部变量说明为static存储数,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
53.以下程序的正确运行结果是。
main()
{inta=1,i;
for(i=0;
i<
i++)printf("
%4d"
fun(a));
intfun(intx);
{intb=0;
staticintc=3;
b++;
c++;
return(x*b*c);
A.444B.41018
C.4812D.456
54.对于以下递归函数f,调用f(4),其返回值为。
intf(intn)
{returnf(n-1)+n;
}
A.10B.11C.0D.以上均不是
55.以下程序的正确运行结果是。
#include<
intabc(intu,intv);
main()
{inta=24,b=16,c;
c=abc(a,b);
printf(“%d\n”,c);
intabc(intu,intv)
{intw;
while(v)
{w=u%v;
u=v;
v=w;
returnu;
A.4B.6C.5D.8
56.以下程序的正确运行结果是。
voidnum()
{externintX,Y;
inta=15,b=10;
X=a-b;
Y=a+b;
intX,Y;
main()
{inta=7,b=5;
X=a+b;
Y=a-b;
num();
printf("
%d,%d\n"
X,Y);
A.12,2B.不确定C.1,12D.5,25
57.以下程序的正确运行结果是。
#inc1ude<
{intk=4,m=1,n;
n=fun(k,m);
%d,"
n);
n=fun(k,m);
%d\n"
intfun(inta,intb)
{staticintm=0,n=2;
n+=m+1;
m=n+a+b;
return(m);
A.8,16B.8,17C.8,20D.8,8
58.以下程序的正确运行结果是。
#Iinclude<
inttry()
{staticintx=3;
x++;
returnx;
{inta,x;
for(a=0;
a<
=2;
a++)
x=try();
printf(“%d\n”,x);
A.3B.4C.5D.6
59.以下程序的正确运行结果是。
intf(inta)
{intb=0;
staticintc=3;
a=c++,b++;
returna;
{inta=2,i,k;
for(i=0;
i<
2;
i++)
k=f(a++);
printf(“%d\n”,k);
A.3B.0C.5D.4
60.以下程序的正确运行结果是。
intd=1;
intfun(inta)
{intd=5;
d+=a++;
printf(“%d“,d);
{inta=3;
fun(a);
A.84B.96C.94D.85
二、读程序,写运行结果
一般题
1.以下程序运行结果是______
{inta=4,b=5,c;
c=plus(a,b);
printf(“A+B=%d\n”,c);
plus(intx,inty)
{intz;
2.以下程序运行结果是____
intmax(intx,inty)
{intz;
z=x>
x:
return(z);
{inta=3,b=10,c;
c=max(3,10);
3.以下程序运行结果是____
main(){
inta=2,b=3;
change(a,b);
%d,%d"
a,b);
change(inta,intb){
a=10;
b=20;
%d,%d"
4.以下程序的运行结果是_______
inta=3,b=5;
max(a,b)
{intc;
c=a>
b?
a:
b;
return(c);
{inta=8;
printf(“%d”,max(a,b));
5.以下程序的运行结果是__
main()
{
floata=1.5,b=2.5,c;
Maxis%f"
c);
floatz;
z=x>
6.以下程序的运行结果是_____
main(){
inti=2,p;
p=f(i,++i);
printf("
%d"
p);
}
intf(inta,intb){
intc;
if(a>
b)c=1;
elseif(a==b)c=0;
elsec=-1;
7.以下程序的运行结果是__
#include"
stdio.h"
f(){
inta=0;
staticintb=0;
a++;
b++;
a=%d,b=%d,"
f();
8.以下程序的运行结果是____
intf(intx,inty){return(y-x)*x;
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf(“%d\n”,d);
9.以下程序的运行结果是____
voidfun(intx,inty)
{x=x+y;
y=x-y;
x=x-y;
{intx=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
10.执行完下列语句段后,i值为:
__
inti;
intf(intx)
{staticintk=0;
x+=k++;
returnx;
i=f
(2);
i=f(3);
12.执行完下列语句段后,i值为:
____
{return((x>
0)?
x*f(x-1):
3);
i=f(f
(1));
13.以下程序运行后的输出结果是
intf(inta)
{returna%2;
{ints[8]={1,3,5,2,4,6},i,d=0;
for(i=0;
f(s[i]);
i++)d+=s[i];
%d\n"
d);
14.有以下程序运行后的输出结果是____
{if(n==1)return1;
i++)j+=f(i);
j);
15.以下程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1abcdefg10<
回车>
则运行的结果是____
#include<
string.h>
main(intargc,char*argv[])
{inti,len=0;
for(i=1;
argc;
i++)len+=strlen(argv[i]);
len);
16.以下程序的功能是
voidxx(intx,inty,intz)
{intt;
if(x>
y