计算机二级C语言教程章节测试 函数.docx

上传人:b****3 文档编号:4867690 上传时间:2022-12-11 格式:DOCX 页数:15 大小:18.45KB
下载 相关 举报
计算机二级C语言教程章节测试 函数.docx_第1页
第1页 / 共15页
计算机二级C语言教程章节测试 函数.docx_第2页
第2页 / 共15页
计算机二级C语言教程章节测试 函数.docx_第3页
第3页 / 共15页
计算机二级C语言教程章节测试 函数.docx_第4页
第4页 / 共15页
计算机二级C语言教程章节测试 函数.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机二级C语言教程章节测试 函数.docx

《计算机二级C语言教程章节测试 函数.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言教程章节测试 函数.docx(15页珍藏版)》请在冰豆网上搜索。

计算机二级C语言教程章节测试 函数.docx

计算机二级C语言教程章节测试函数

计算机二级C语言教程章节测试函数

(1)

一、选择题

(1)有以下程序

#include

voidf(char*s,char*t)

{chark;

k=*s;*s=*t;*t=k;

s;t--;

if(*s)f(s,t);

}

main()

{charstr[10]="abcdefg",*p;

p=strstrlen(str)/21;

f(p,p-2);

printf("%s\n",str);

}

程序运行后的输出结果是

  A)abcdefg

  B)gfedcba

  C)gbcdefa

  D)abedcfg

(2)有以下程序

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=p1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

程序运行后的输出结果是

  A)8,16

  B)8,8

  C)16,16

  D)4,8

(3)程序中若有如下的说明和定义语句

charfun(char*);

main()

{

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

{t=a[i];a[i]=a[j];a[j]=t;

i;j--;

fun(a,i,j);

}

}

main()

{intx[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<4;i)printf("-",x[i]);

printf("\n");

}

程序运行后的输出结果是

  A)1268

  B)8621

  C)8162

  D)8612

 

(6)有以下程序

#include

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i

printf(“5d\n”,len);

}

经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行

exabcdefgh3k44

执行后输出结果是

  A)14

  B)12

  C)8

  D)6

(7)有以下程序

voidf(inta[],inti,intj)

{intt;

if(i

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<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)有以下程序

voidfun(int*a,inti,intj)

{intt;

if(i

{t=a[i];a[i]=a[j];a[j]=t;

fun(a,i,--j);

}

}

main()

{inta[]={1,2,3,4,5,6},i;

fun(a,0,5)

for(i=0;i<6;i)

printf("%d",a[i]);

}

执行后的输出结果是

  A)654321

  B)432156

  C)456123

  D)123456

(9)有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)1;

}

main()

{inti,j=0;

for(i=i;i<3;i)j=f(i);

printf(“%d\n”,j);

}

程序运行后的输出结果是

  A)4

  B)3

  C)2

  D)1

(10)有以下程序

#include

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i

printf(“%d\n”,len);

}

程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:

ex1abcdefg10<回车>

则运行的结果是:

  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);}

main()

{inti;

i=f(fa,fb,2);printf(“%d\n”,i);

}

程序运行后的输出结果是

  A)-4

  B)1

  C)4

  D)8

(12)不合法的main函数命令行参数表示形式是

  A)main(inta,char*c[])

  B)main(intarc,char**arv)

  C)main(intargc,char*argv)

  D)main(intargv,char*argc[])

(13)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:

PROGABCDEFGHIJKL<回车>,则输出结果为

  A)ABCDEFG

  B)IJHL

  C)ABCDEFGHIJKL

  D)IJKLABCDEFGH

main(intargc,char*argv[]))

{while(--argc>0)printf(“%s”,argv[argc]);

printf(“\n”);

}

(14)以下程序的输出结果是

  A)1

  B)2

  C)3

  D)4

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;

}

main()

{printf(“%ld\n”,fun(3));}

(15)有如下程序

longfib(intn)

{if(n>2)return(fib(n-1)fib(n-2));

elsereturn

(2);

}

main0

{printf(“%d\n”,fib(3));

该程序的输出结果是

  A)2

  B)4

  C)6

  D)8

(16)若有以下说明和定义

fun(int*c){}

main()

{int(*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(inti);

voidfunc2(inti);

charst[]="hello,friend!

";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i=2;func2(i);}

}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i=2;func1(i);}

}

main()

{inti=0;func1(i);printf("\n");}

(18)假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行:

prghellogood<回车>后,程序的输出结果是

  A)hellogood

  B)hg

  C)hel

  D)hellogood

main()(intargc,char*argv[])

{inti;

if(argc<-0)return;

for(i=1;i

}

(19)以下程序的输出结果是

  A)54321

  B)012345

  C)12345

  D)543210

main()

{intw=5;fun(w);printf(“\n”);}

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;printf("%s",*argv);}

}

(21)C语言规定,程序中各函数之间

  A)既允许直接递归调用也允许间接递归调用

  B)不允许直接递归调用也不允许间接递归调用

  C)允许直接递归调用不允许间接递归调用

  D)不允许直接递归调用允许间接递归调用

二、填空题:

(1)以下程序运行后的输出结果是【1】。

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)a[n-1];

elsereturn0;

}

main()

{intaa[5]={1,2,3,4,5},s;

s=f(aa,5);printf("%d\n",s);

}

(2)下面程序的运行结果是:

【2】

intf(inta[],intn)

{if(n>1)returna[0]f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf(“%d\n”,s);

}

(3)以下程序运行后的输出结果是【3】

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

(4)设函数findbig已定义为求3个数中的最大值。

以下程序将利用函数指针调用findbig函数。

请填空。

main()

{intfindbig(int,int,int);

int(*f)(),x,yz,z,big;

f=【4】;

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("bing=%d\n",big);

}

(5)以下程序的输出结果是【5】。

main()

{intx=0;

sub(&x,8,1);

printf("%d\n",x);

}

sub(int*a,intn,intk)

{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=f1f2;}}

main()

{intx;

fun(6,&x);printf("%d\n",x);}

(7)下面程序的输出是【7】。

longfun5(intn)

{longs;

if((n==1)||(n==2))

s=2;

else

s=nfun5(n-1);

return(s);}

main()

{longx;

x=fun5(4);

printf("%ld\n",x);}

(8)下面h函数的功能是计算如下数学函数H的值。

请填空。

doublefgh(double(*f)(doublea)

doublex,doubley)

{return(【8】);}

doubleh(doublea,doubleb)

return(fgh(sin,cos,a,b)*fgh(【9】]));}

(9)请读程序:

#include

main(intargc,char*argv[])

{inti;

printf('%d\n",argc);

for(i=0;i<=argc1;i)printf("%s",argv[i]);

printf("\n");

}

若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行

abcfile1file2表示回车)

程序执行后的输出结果是【10】。

(10)下面程序的输出结果是【11】。

#include

fun(intx)

{intp;

if(x==0||x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(9));}

(11)下面程序的输出结果是【12】。

#include

funa(inta,intb)

{returnab;}

funb(inta,intb)

{returna-b;}

sub(int(*t)(),intx,inty)

{return((*t)(x,y));}

main()

{intx,(*p)();

p=funa;

x=sub(p,9,3);

x=sub(funb,8,3);

printf("%d\n",x);

}

(12)设有如下程序:

#include

main(intargc,char*argv[])

{while(--argc>0)printf("%s",argv[argc]);

printf("\n");

}

假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROGABCDEFGHIJKL,则输出结果为【13】。

(13)以下程序调用invert函数按逆序重新放置a数组中元素的值。

a数组中的值在main函数中读入。

#include

#defineN10

invert(int*s,inti,intj)

{intt;if(i

main()

{inta[N],i;

for(i=0;i

invert(a,0,N-1);

for(i=0;i

printf("\n");}

参考答案

一、选择题:

01)B02)A03)A04)B05)C

06)D07)A08)A09)B10)D

11)C12)C13)D14)A15)B

16)B17)C18)B19)B20)A

21)A

二、填空题:

(1)15

(2)6

(3)136

(4)findbig

(5)7

(6)8

(7)9

(8)f(xy)/g(y-x)或(*f)(xy)/g(y-x)或f(xy)/(*g)(y_x)或(*f)或(*f)(xy)/(*g)(y-x)

(9)cos,sin,a,b

(10)3abc.exefile1file2(注:

两个答案,每个1分)

(11)7

(12)17

(13)IJKLEFGHABCD

(14)i1

(15)I

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

当前位置:首页 > 高中教育 > 语文

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

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