第08部份 函数Word文档下载推荐.docx
《第08部份 函数Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第08部份 函数Word文档下载推荐.docx(35页珍藏版)》请在冰点文库上搜索。
![第08部份 函数Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/f4825c0a-59ec-4393-b8a3-8881bdf7597e/f4825c0a-59ec-4393-b8a3-8881bdf7597e1.gif)
B.函数的定义不可以嵌套,但函数的调用可嵌套
C.函数的定义和调用均不可以嵌套
D.函数的定义和调用均可以嵌套
9.若使用一位数组名作函数实参,则以下正确的说法是()
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调用函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
10、以下正确的说法是()
如果在一个函数中的复合语句中定义了一个变量,则该变量
A.只在该复合语句中有效
B.在该函数中有效
C.在本程序范围中均有效
D.为非法变量
11、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()
A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参
考生答案:
正确答案:
D
12、在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是
A)地址传递B)单向值传递
C)由实参传形参,再由形参传实参D)传递方式由用户指定
B
13、以下正确的说法是
A)定义函数时,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准
D)如果形参与实参类型不一致,以实参类型为准
C
14、以下正确的说法是
A)用户若需调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C)系统根本不允许用户重新定义标准库函数
D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用
15以下叙述正确的是
A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义
C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义
16、下面对C语言的描述中,正确的是
A)函数一定有返回值,否则无法使用函数
B)C语言函数既可以嵌套定义又可以递归调用
C)在C语言中,调用函数时,只能将实参的值传递给形参
D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
17、下列说法中错误的是
A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽
C)静态全局变量可以被其他的编辑单位所引用
D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语
句)时生成,退出其所在的函数体(或复合语句)时消失
18、以下程序有语法错误,有关错误原因的正确说法是
main()
{intG=5,k;
...
A)语句voidprt_char();
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
19、以下正确的函数头定义形式是
A)doublefun(intx,inty)B)doublefun(intx;
inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
A
20、以下所列的各函数首部中,正确的是
A)voidplay(var:
Integer,varb:
Integer)B)voidplay(inta,b)
C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)
21、不合法的main函数命令行参数表示形式是
A)main(inta,char*c[])B)main(intarc,char**arv)
C)main(intargc,char*argv)D)main(intargv,char*argc[])
22、下面函数调用语句含有实参的个数为
func((exp1,exp2),(exp3,exp4,exp5));
A)1B)2C)4D)5
23、设有如下函数
fun(floatx)
{printf("
\n%d"
x*x);
则函数的类型是
A)与参数x的类型相同B)是void
C)是int型D)无法确定
24、有以下程序
floatfun(intx,inty)
{return(x+y);
{inta=2,b=5,c=8;
printf("
%3.0f\n"
fun((int)fun(a+c,b),a-c));
程序运行后的输出结果是
A)编译出错B)9C)21D)9.0
25、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;
i<
n-1;
i++)
for(j=i+1;
j<
n;
j++)
if(a[i]<
a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&
aa[3],5);
10;
i++)printf("
%d,"
aa[i]);
\n"
);
A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,
26、下列程序执行后的输出结果是
voidfunc1(inti);
voidfunc2(inti);
charst[]="
hello,friend!
"
;
voidfunc1(inti)
%c"
st[i]);
if(i<
3){i+=2;
func2(i);
voidfunc2(inti)
func1(i);
{inti=0;
func1(i);
printf("
A)helloB)helC)hloD)hlm
27、以下函数返回a所指数组中最大值所在的下标值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;
if(a[i]>
a[p])_________;
return(p);
在下划线处应填入的内容是
A)i=pB)a[p]=a[i]C)p=jD)p=I
28、有以下程序
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
{inti,j=0;
for(i=1;
3;
i++)j+=f(i);
%d\n"
j);
A)4B)3C)2D)1
29、有如下程序:
longfib(intn)
{if(n>
2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
fib(3));
}
该程序的输出结果是
A)2B)4C)6D)8
30、下列函数的运行结果是
{inti=2,p;
intj,k;
j=i;
k=++i;
p=f(j,k);
%d"
p);
intf(inta,intb)
{intc;
if(a>
b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
A)-1B)1C)2D)编译出错,无法运行
31、阅读下列程序,当运行函数时,输入asdafaaz67,则输出为
#include<
stdio.h>
ctype.h>
conio.h>
intfun(char*str)
str[i]!
=′\0′;
if(str[i]!
=′′)str[j++]=str[i];
str[j]=′\0′;
{charstr[81];
intn;
clrscr();
Inputastring:
"
gets(str);
puts(str);
fun(str);
%s\n"
str);
A)asdafaaz67B)asdafaaz67C)asdD)z67
32、以下程序的输出结果是
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
%ld\n"
fun(3));
A)1B)2C)3D)4
33、已有变量定义和函数调用语句:
inta=25;
print_value(&
a);
下面函数的正确输出结果是
voidprint_value(int*x)
++*x);
A)23B)24C)25D)26
34、下面程序应能对两个整型变量的值进行交换。
以下正确的说法是
{inta=10,b=20;
(1)a=%d,b=%d\n"
a,b);
swap(&
a,&
b);
(2)a=%d,b=%d\n"
swap(intp,intq)
{intt;
t=p;
p=q;
q=t;
A)该程序完全正确
B)该程序有错,只要将语句swap(&
中的参数改为a,b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D)以上说法都不对
35、以下程序的输出结果是
intf()
{staticinti=0;
ints=1;
s+=i;
i++;
{inti,a=0;
5;
i++)a+=f();
a);
A)20B)24C)25D)15
36、阅读下面程序段,则执行后输出的结果是
#include"
stdio.h"
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);
charfun(chara,intb)
{chark;
k=a+b;
returnk;
A)AB)MC)ND)L
37、编写求两个双精度数之和的函数,选项中正确的是
A)doubleadd(doublea,doubleb)
{doubles;
s=a+b;
returns;
}
B)doubleadd(doublea,b)
return(s);
C)doubleadd(doubleadoubleb)
s=a+b;
returns;
D)doubleadd(a,b)
{doublea,b,s;
return(s);
38、现有如下程序
intfun(intx)
x=%d\n"
++x);
{fun(12+5);
则程序的输出结果是
A)12B)13C)17D)18
39、现有如下程序段
intaa(intx,inty);
{inta=24,b=16,c;
c=aa(a,b);
c);
intaa(intx,inty)
{intw;
while(y)
{w=x%y;
x=y;
y=w;
returnx;
则程序段的输出结果是
A)8B)7C)6D)5
40、下列程序的输出结果是
#defineN3
#defineM3
voidfun(inta[M][N])
*(a[1]+2));
{inta[M][N];
inti,j;
M;
for(j=0;
N;
a[i][j]=i+j-(i-j);
fun(a);
A)3B)4C)5D)6
41、阅读下面程序,则执行后的结果为
{fun3(fun1(),fun2());
fun1()
{intk=20;
returnk;
fun2()
{inta=15;
returna;
fun3(inta,intb)
{intk;
k=(a-b)*(a+b);
k);
A)0B)184C)175D)编译不通过
42、阅读下面程序,则程序执行后的结果为
{inta=4,b=6,c=7;
doubled,fun(int,int,int);
d=fun(a,b,c);
%lf\n"
d);
doublefun(inta,intb,intc)
s=a%b*c;
A)27B)27.000000C)28D)28.000000
43、现有如下程序,则程序的输出结果为
0&
&
a<
10)c=(a+b)/2;
elsec=a*b/2;
returnc;
{inta=8,b=20,c;
c=f(a,b);
A)随机数B)80C)28D)14
44、阅读如下程序段,则程序段的执行后的输出结果为
{charc;
inti;
charcount();
intp(char);
30;
i++)c=count();
p(c);
charcount()
{charstr=′A′;
str+=1;
return(str);
p(charc)
{putchar(c);
putchar(′\n′);
A)AB)BC)aD)b
45、阅读程序,则执行后的结果为
#include"
{inti,m,n;
{m=test1();
n=test2();
%d,%d\n"
m,n);
test1()
{intx=0;
x++;
test2()
{staticintx=0;
A)1,1B)1,3C)3,1D)3,3
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。
1、当调用函数时,实参是一个数组名,则向函数传递的是____________。
A正确答案:
数组的首地址
2、函数fun的功能是:
根据以下公式求p的值,结果由函数值返回。
m与n为两个正数且要求m>
n。
例如:
m=12,n=8时,运行结果应该是495.000000。
请在题目的空白处填写适当的程序语句,将该程序补充完整。
floatfun(intm,intn)
{inti;
doublep=1.0;
=m;
i++)【2】;
=n;
i++)【3】;
=m-n;
i++)p=p/i;
returnp;
main()
{clrscr();
printf("
p=%f\n"
fun(12,8));
A考生答案:
p=p*i正确答案:
p=p/i
3、以下程序的输出结果是【4】。
voidfun()
{staticinta=0;
a+=2;
{intcc;
for(cc=1;
cc<
4;
cc++)fun();
246
4、以下程序运行结果是【5】。
longfib(intg)
{switch(g)
{case0∶return0;
case1∶
case2∶return1;
return(fib(g-1)+fib(g-2));
{longk;
k=fib(5);
k=%(d\n)"
k=5
5、以下程序的输出结果是【6】。
unsignedfun6(unsignednum)
{unsignedk=1;
do
{k*=num%10;
num/=10;
}while(num);
{unsignedn=26;
fun6(n));
12
6、以下函数的功能是【7】。
floatav(a,n)
floata[];
floats;
for(i=0,s=0;
i<
i++)s=s+a[i];
returns/n;
求出数组元素平均值
7、下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。
fun(intx,intb[])
{intk=0,r;
{r=x%【8】;
b[【9】]=r;
x/=【10】;
}while(x);
2正确答案:
k++正确答案:
2
8、下面函数的功能是将一个字符串的内容颠倒过来,请填空。
voidfun(charstr[])
{inti,j,【11】;
for(i=0,j=【12】;
j;
i++,j--)
{k=str[i];
str[i]=str[j];
str[j]=k;
k正确答案:
strlen(str)-1
9、现有如下程序段,则程序