第十一部分 对函数的进一步讨论Word格式.docx
- 文档编号:20496417
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:20
- 大小:22.58KB
第十一部分 对函数的进一步讨论Word格式.docx
《第十一部分 对函数的进一步讨论Word格式.docx》由会员分享,可在线阅读,更多相关《第十一部分 对函数的进一步讨论Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
8
(3)程序中若有如下的说明和定义语句
char
fun(char
*);
{
char
*s="
one"
a[5]={0},(*f1)()=fun,ch;
……
以下选项中对函数fun的正确调用语句是
A)(*f1)(a);
B)*f1(*s);
C)fun(&
a);
D)ch=*f1(s)
(4)在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D)C语言中不允许这样的递归调用
(5)有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i<
j)
{t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
fun(a,i,j);
{intx[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;
i<
4;
i++)printf("
-"
x[i]);
\n"
);
A)1268
B)
8621
C)
8162
D)8612
(6)有以下程序
#include<
main(intargc,char*argv[])
inti,len=0;
for(i=1;
argc;
i+=2)
len+=strlen(argv[i]);
printf(“5d\n”,len);
经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex
abcd
efg
h3
k44
执行后输出结果是
A)14
B)12
C)8
D)6
(7)有以下程序
voidf(inta[],inti,intj)
int
t;
if(i<
{
t=a[i];
a[i]=a[j];
f(a,i+1,j-1);
main()
inti,aa[5]={1,2,3,4,5};
f(aa,0,4);
5;
i++)
printf(“%d,”,aa[i]);
printf(“\n”);
A)5,4,3,2,1,
B)5,2,3,4,1,
C)1,2,3,4,5,
D)1,2,3,4,5,
(8)有以下程序
void
fun(int
*a,int
i,int
int
t;
t=a[i];
fun(a,++i,--j);
a[]={1,2,3,4,5,6},i;
fun(a,0,5)
for(i=0;
6;
i++)
printf("
%d"
a[i]);
执行后的输出结果是
A)654321
B)432156
C)456123
D)123456
(9)有以下程序
intf(int
if
(n==1)
return1;
elsereturnf(n-1)+1;
inti,j=0;
for(i=i;
3;
i++)j+=f(i);
printf(“%d\n”,j);
A)4
B)3
C)2
D)1
(10)有以下程序
main(intargc,char*argv[])
{int
i,len=0;
for(i=1;
i++)len+=strlen(argv[i]);
printf(“%d\n”,len);
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1
10<
回车>
则运行的结果是:
A)22
B)17
C)12
D)9
(11)有以下程序
intfa(intx)
{returnx*x;
intfb(intx)
{returnx*x*x;
intf(int(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);
{inti;
i=f(fa,fb,2);
printf(“%d\n”,i);
A)-4
B)1
C)4
D)8
(12)不合法的main函数命令行参数表示形式是
A)main(int
a,char
*c[])
B)main(int
arc,char
**arv)
C)main(int
argc,char
*argv)
D)main(int
argv,char
*argc[])
(13)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROGABCDEFGHIJKL<
,则输出结果为
A)ABCDEFG
B)IJHL
C)ABCDEFGHIJKL
D)IJKLABCDEFGH
main(int
argc,
*argv[]))
{while(--argc>
0)
printf(“%s”,argv[argc]);
printf(“\n”);
(14)以下程序的输出结果是
A)1
B)2
C)3
D)4
long
fun(int
long
s;
if(n==1||n==2)
s=2;
elses=n-fun(n-1);
printf(“%ld\n”,fun(3));
(15)有如下程序
fib(int
if(n>
2)
return(fib(n-1)+fib(n-2));
else
return
(2);
main0
printf(“%d\n”,fib(3));
该程序的输出结果是
A)2
B)4
C)6
(16)若有以下说明和定义
fun(int*c){
(*a)()=fun,*b(),w[10],c;
┆
在必要的赋值之后,对fun函数的正确调用语句是
A)a=a(w);
B)(*a)(&
c);
C)b=*b(w);
D)fun(b);
(17)下列程序执行后的输出结果是
A)hello
B)hel
C)hlo
D)hlm
voidfunc1(int
i);
voidfunc2(int
charst[]="
hello,friend!
"
;
i)
%c"
st[i]);
3){i+=2;
func2(i);
func1(i);
main()
{inti=0;
func1(i);
(18)假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行:
prghellogood<
后,程序的输出结果是
A)hellogood
B)hg
C)hel
D)hellogood
main()(intargc,char*argv[])
i;
if(argc<
-0)return;
*argv[i]);
(19)以下程序的输出结果是
A)54321
B)012345
C)12345
D)543210
{intw=5;
fun(w);
fun(intk)
{if(k>
0)fun(k-1);
printf(“%d”,k);
(20)若以下程序所生成的可执行文件名为filel.exe;
当打入以下命令执行该程序时;
FILELCHINABEIJINGSHANGHAI
程序的输出结果是
A)CHINABEIJINGSHANGHAI
B)FILELCHINABEIJING
C)CBS
D)FCB
main(intargc,char*argv[])
while(arge-->
0)
++argv;
%s
"
*argv);
(21)C语言规定,程序中各函数之间
A)既允许直接递归调用也允许间接递归调用
B)不允许直接递归调用也不允许间接递归调用
C)允许直接递归调用不允许间接递归调用
D)不允许直接递归调用允许间接递归调用
二、填空题:
(1)以下程序运行后的输出结果是【1】
。
a[],int
{if(n>
=1)returnf(a,n-1)+a[n-1];
else
0;
aa[5]={1,2,3,4,5},s;
s=f(aa,5);
%d\n"
s);
(2)下面程序的运行结果是:
【2】
f(inta[],int
{if(n>
1)
returna[0]+f(&
a[1],n-1);
returna[0];
main()
intaa[3]={1,2,3},s;
s=f(&
aa[0],3);
printf(“%d\n”,s);
(3)以下程序运行后的输出结果是【3】
x)
{if(x/2>
fun(x/2);
x);
{fun(6);
(4)设函数findbig已定义为求3个数中的最大值。
以下程序将利用函数指针调用findbig函数。
请填空。
findbig(int,int,int);
(*f)(),x,yz,z,big;
f=【4】;
scanf("
%d%d%d"
&
x,&
y,&
z);
big=(*f)(x,y,z);
bing=%d\n"
big);
(5)以下程序的输出结果是【5】。
x=0;
sub(&
x,8,1);
sub(int
*a,int
n,int
k)
if(k<
=n)
sub(a,n/2,2*k);
*a+=k;
(6)以下程序的输出结果是【6】。
fun(intn,int*s)
{intf1,f2;
if(n==1||n==2)*s=1;
else{fun(n-1,&
f1);
fun(n-2,&
f2);
*s=f1+f2;
}
{intx;
fun(6,&
x);
(7)下面程序的输出是【7】。
longfun5(intn)
{longs;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
{longx;
x=fun5(4);
%ld\n"
(8)下面h函数的功能是计算如下数学函数H的值。
double
fgh(double(*f)(doublea)<
double(*g)(doubleb),
doublex,doubley)
{return(【8】);
doubleh(doublea,doubleb)
return(fgh(sin,cos,a,b)*fgh(
【9】]
));
}
(9)请读程序:
#include<
stdio.h>
main(intargc,char*argv[])
printf('
argc);
for(i=0;
i<
=argc+1;
i++)printf("
%s"
argv[i]);
若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行
abcfile1file2<
CR>
(<
表示回车)
程序执行后的输出结果是【10】。
(10)下面程序的输出结果是【11】。
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
{printf("
fun(9));
(11)下面程序的输出结果是【12】。
funa(inta,intb)
{returna+b;
funb(inta,intb)
{returna-b;
sub(int(*t)(),intx,inty)
{return((*t)(x,y));
{intx,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
x);
(12)设有如下程序:
main(intargc,char*argv[])
{while(--argc>
0)printf("
%s"
argv[argc]);
假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROGABCDEFGHIJKL<
,则输出结果为【13】。
(13)以下程序调用invert函数按逆序重新放置a数组中元素的值。
a数组中的值在main函数中读入。
#defineN10
invert(int*s,inti,intj)
j){t=*(s+i);
*(s+j)=(s+j);
*(s+j)=t;
invert(s,【14】,j-1);
}}
{inta[N],i;
N;
i++)scanf("
a+【15】);
invert(a,0,N-1);
i++)printf("
答案:
一、选择题:
01)
B
02)
A
03)
04)
05)
C
06)
D
07)
08)
09)
10)
D
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
A
21)
二、填空题:
(1)15
(2)6
(3)136
(4)findbig
(5)7
(6)8
(7)9
(8)f(xy)/g(y-x)或(*f)(x+y)/g(y-x)或f(x+y)/(*g)(y_x)或(*f)或(*f)(x+y)/(*g)(y-x)
(9)cos,sin,a,b
(10)3
abc.exe
file1
file2
(注:
两个答案,每个1分)
(11)7
(12)17
(13)IJKLEFGHABCD
(14)i+1
(15)I
第十二部分:
用户标识符的作用域和存储类
a=2;
{staticint
a=3;
t=0;
if(n%2){staticint
a=4;
t+=a++;
{staticint
a=5;
t+a++;
s=a,i;
for(i=0;
i++)
s+=f(i);
A)26
B)28
C)29
D)24
(2)以下叙述中正确的是
A)局部变量说明为static存储数,其生存期将得到延长
B)全局变量说明为static存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同
(3)有以下程序
inta=2;
intf(int*A)
{return(*A)++;
ints=0;
{inta=5;
s+=f(&
A);
A)10
B)9
C)7
D)8
(4)以下叙述中正确的是
A)全局变量的作用域一定比局部变量的作用域范围大
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间
C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
inta=3;
{inta=5;
s+=a++;
s+=a++;
printf(“%d\n”,s);
A)8
B)10
D)11
(6)以下程序的输出结果是
f()
static
i=0;
s=1;
s+=i;
return
i,a=0;
a+=f();
a);
A)20
B)24
C)25
D)15
(7)在C语言中,形参的缺省存储类是
A)auto
B)register
C)static
D)extern
(8)以下程序的输出的结果是
intx=3;
inti;
for(i=1;
x;
incre();
ncre()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一部分 对函数的进一步讨论 第十一 部分 函数 进一步 讨论