C语言第八章函数测试Word文档下载推荐.docx
《C语言第八章函数测试Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言第八章函数测试Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
{staticintx=0;
returnx+=k;
第3题(4.0分)题号:
823
inta;
intm(inta)
{staticints;
return(++s)+(--a);
{inta=2;
%d"
m(m(a)));
3
第4题(4.0分)题号:
821
以下程序运行时,输出结果为【1】.(2006年春江苏省二级C)
#include<
main()
{printf("
f(21,35));
intf(inta,intb)
{if(a==b)returna;
else
if(a>
b)returnf(a-b,b);
elsereturnf(a,b-a);
7
第5题(4.0分)题号:
819
以下程序运行时输出的结果的第二行是【1】,第四行是【2】,第六行是【3】.
(2005年春江苏省二级C)
#include<
voidchange(ints[3][3],intd)
{inti,j,k;
if(d==0)
{for(i=0;
i<
3;
i++)
for(j=i+1;
j<
3;
j++)
{k=s[i][j];
s[i][j]=s[j][i];
s[j][i]=k;
}
for(i=0;
for(j=0;
3-i;
s[i][j]=s[2-j][2-i];
s[2-j][2-i]=k;
main()
{ints[3][3]=(1,2,3,4,5,6,7,8,9),I,j,k,n;
change(s,0);
{for(j=0;
j++)printf("
%4d"
s[i][j]);
\n"
);
change(s,1);
s[i][j]);
258
=======(答案2)=======
987
=======(答案3)=======
321
第6题(4.0分)题号:
816
在声明局部变量时,不能使用的存储类别标识符是【1】.(2007年春江苏省二级C)
extern
第7题(4.0分)题号:
818
以下程序运行时输出结果是【1】.(2004年秋江苏省二级C)
voidnum()
{externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
intx,y;
{inta=7,b=5;
x=a+b;
y=a-b;
num();
%d,%d\n"
x,y);
5,25
第8题(4.0分)题号:
814
一个用C语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了【1】函数的最后一条语句或该函数中的return语句后,程序才会终止运行.(2005年春江苏省二级C)
main
第9题(4.0分)题号:
174
为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的【1】语句配对.
if
第10题(4.0分)题号:
813
若有函数定义intf(){intx=4,y=3,z=2;
returnx,y,z;
},则调用函数f后的返回值是【1】.(2004年春江苏省二级C)
2
第11题(4.0分)题号:
817
在以下程序的main函数中,语句"
fun(x,10);
"
内的实参x表示数组x的【1】.(2007年春江苏省二级C)
voidfun(inta[10],intn)
{inti;
for(i=0;
n,i++)a[i]++;
{intx[10]={0};
fun(x,10);
第一个元素地址或起始地址或首地址
第12题(4.0分)题号:
822
以下程序运行时,输出结果的第一行是【1】,第二行是【2】.(2006年春江苏省二级C)
voidchange(intx,intm)
{charch[]={'
0'
'
1'
'
2'
3'
4'
5'
6'
7'
8'
9'
},b[80];
inti=0,r;
while(x)
{r=x%m;
x/=m;
b[i++]=ch[r];
for(--i;
i>
=0;
i--)
%c"
b[i]);
{inta,b;
change(10,2);
);
change(10,8);
1010
12
二、单项选择共20题(共计40分)
第1题(2.0分)题号:
2305
以下叙述中不正确的是()(2000年秋江苏省二级C)
A:
一个变量的作用域完全取决于变量说明语句的位置
B:
外部变量可以在函数以外的任何位置定义
C:
内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用
D:
用static说明的一个外部变量是为了限制其他编译单位的引用
C
第2题(2.0分)题号:
2322
已知在函数f中声明了局部变量x,如果希望f函数第一次被调用返回后变量x中存储的数据保持到下次f函数被调用时仍可以使用,则在声明x时必须指定其存储类型为().(2007年秋江苏省二级C)
auto
register
static
第3题(2.0分)题号:
2308
在以下程序中,需要在main函数之后定义一个函数,以下选项中()可以用作该函数的名字.(2003年春江苏省二级C)
#definep3.14
inty;
{inta=1;
函数名(a);
....../*若干执行语句*/
int函数名(intx)
{returnx*x;
y
p
print
D
第4题(2.0分)题号:
2312
以下关于函数形式参数的声明中正确的是().(2004年秋江苏省二级C)
inta[]
inta[][]
inta[]={0}
inta[2][]
A
第5题(2.0分)题号:
2323
以下函数定义中正确的是().(2009年春江苏省二级C)
doublefun(doublex,doubley){}
doublefun(doublex;
doubley){}
doublefun(doublex,doubley);
{}
doublefun(doublex,y){}
第6题(2.0分)题号:
2321
以下关于C语言源程序的叙述中错误的是().(2007年春江苏省二级C)
一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main函数定义
函数定义由函数头部和函数体两部分组成
在一个函数定义的函数体中允许定义另一个函数
在一个函数定义的函数体中允许调用另一个函数或调用函数自身
第7题(2.0分)题号:
2320
若有数组A和B的声明"
staticcharA[]="
ABCDEF"
B[]={'
A'
B'
C'
D'
E'
F'
};
则数组A和数组B的长度分别是().(2006年秋江苏省二级C)
7,6
6,7
6,6
7,7
第8题(2.0分)题号:
2317
设有下列程序段:
staticcharb=2;
voidY()
{staticfloatd=4;
.......}
inta=1;
voidX()
{intc=3;
......}
关于程序段中各变量的属性,以下叙述中错误的是().(2006年春江苏省二级C)
a是全局变量,函数X可以访问,函数Y不能访问
b是全局变量,函数X和函数Y都可以访问
c是动态变量,函数X可访问,函数Y不可访问
d是静态变量,函数X和函数Y都可以访问
第9题(2.0分)题号:
2318
若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是().(2006年春江苏省二级C)
函数调用可以作为独立的语句存在
函数调用可以出现在表达式中
函数调用可以作为一个函数实参
函数调用可以作为一个函数形参
第10题(2.0分)题号:
2316
已知有函数f的定义如下:
intf(inta,intb)
{if(a<
b)return(a,b);
elsereturn(b,a);
在main函数中若调用函数f(2,3),得到的返回值是().(2005年春江苏省二级C)
2和3
3和2
B
第11题(2.0分)题号:
2314
已知函数f的定义如下:
voidf(void)
{printf("
That'
sgreat!
}
则调用f函数的正确形式是().(2004年秋江苏省二级C)
f;
f();
f(void);
f
(1);
第12题(2.0分)题号:
2311
以下程序运行时输出结果为().(2004年秋江苏省二级C)
intx=1;
main()
{printf(″%d″,f(x));
#definex2
intf(inty)
{returnx+y;
1
4
第13题(2.0分)题号:
2310
以下全局变量声明中正确的是().(2004年秋江苏省二级C)
autointi=1;
floata=1,b=0.5,c=a+b;
charfor=1;
staticcharch;
第14题(2.0分)题号:
2304
C语言中函数返回值的类型是由()决定的.(1998年秋江苏省二级C)
return语句中的表达式类型
调用该函数的主函数类型
定义函数时所指定的函数类型
传递给函数的实参类型
第15题(2.0分)题号:
2309
若有函数fun的定义为:
voidfun(...)
{staticinta=1;
......
则下列叙述中不正确的是()(2004年春江苏省二级C)
在每次调用fun函数时,变量a的值是上次调用结束时a的值
在fun函数之外,可以用变量名a直接引用a的值
在其它函数中,可以出现声明doublea=2.5;
fun函数的形式参数不能取名为a
第16题(2.0分)题号:
2313
关于函数返回值,以下叙述中正确的是().(2004年秋江苏省二级C)
函数返回值的类型由函数体内return语句包含的表达式的类型决定
函数返回值的类型由函数头部定义的函数类型决定
若函数体中有多个return语句,则函数的返回值是排列在最后面的retum语句中表达式的值
若函数体内没有retum语句,则函数没有返回值
第17题(2.0分)题号:
2315
以下函数定义中正确的是().(2005年春江苏省二级C)
intfun(inta,b){}
intfun(inta[][]){}
intfun(void){}
intfun(staticinta,intb){}
第18题(2.0分)题号:
2307
以下关于函数的叙述中,正确的是()(2003年春江苏省二级C)
在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
在函数体中必须至少有一个return语句
在函数体中可以定义另一个函数
在函数体中可以调用函数自身
第19题(2.0分)题号:
2306
在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中()不能用作该变量的名字.(2002年秋江苏省二级C)
#include<
fun(a);
intfun(intx)
{;
/*int型变量声明语句位置*/
x
fabs
fun
第20题(2.0分)题号:
2278
若有声明"
inti,k=1;
unsignedj;
则下列语句执行时会出现无限循环的语句是.(2008年春江苏省二级C)
for(j=15;
j>
0;
j-=2)k++;
for(j=0;
j<
15;
j+=2)k++;
i+=2)k++;
for(i=15;
i>
i-=2)k++;
三、程序填空共1题(共计6分)
第1题(6.0分)题号:
54
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
求一个二维数组中每行的最大值和每行的和。
-------------------------------------------------------*/
inta[5][5],b[5],c[5],i,j,k,s=0;
for(i=0;
5;
i++)
for(j=0;
j++)
a[i][j]=random(40)+20;
{
/***********SPACE***********/
k=a[i][0];
【?
】;
{
if(k<
a[i][j])【?
s=s+a[i][j];
b[i]=k;
%5d"
【?
】);
%5d%5d"
b[i],c[i]);
s=0
k=a[i][j]
c[i]=s
=======(答案4)=======
a[i][j]
四、程序改错共1题(共计6分)
55
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
先从键盘上输入一个3行3列矩阵的各个元素的值,然后输
出主对角线上的元素之和sum。
------------------------------------------------------*/
voidfun()
inta[3][3],sum;
inti,j;
/**********FOUND**********/
a=0;
scanf("
a[i][j]);
sum=sum+a[i][j];
sum=%f\n"
sum);
fun();
sum=0;
scanf("
&
a[i][j]);
sum=sum+a[i][i];
=========或=========
sum+=a[i][i];
printf("
sum=%d\n"