第十一部分 对函数的进一步讨论Word格式.docx

上传人:b****5 文档编号:20496417 上传时间:2023-01-23 格式:DOCX 页数:20 大小:22.58KB
下载 相关 举报
第十一部分 对函数的进一步讨论Word格式.docx_第1页
第1页 / 共20页
第十一部分 对函数的进一步讨论Word格式.docx_第2页
第2页 / 共20页
第十一部分 对函数的进一步讨论Word格式.docx_第3页
第3页 / 共20页
第十一部分 对函数的进一步讨论Word格式.docx_第4页
第4页 / 共20页
第十一部分 对函数的进一步讨论Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第十一部分 对函数的进一步讨论Word格式.docx

《第十一部分 对函数的进一步讨论Word格式.docx》由会员分享,可在线阅读,更多相关《第十一部分 对函数的进一步讨论Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

第十一部分 对函数的进一步讨论Word格式.docx

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) 

02) 

03) 

04) 

05) 

06) 

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()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1