以下正确的函数定义是.docx

上传人:b****7 文档编号:25621548 上传时间:2023-06-10 格式:DOCX 页数:24 大小:26.05KB
下载 相关 举报
以下正确的函数定义是.docx_第1页
第1页 / 共24页
以下正确的函数定义是.docx_第2页
第2页 / 共24页
以下正确的函数定义是.docx_第3页
第3页 / 共24页
以下正确的函数定义是.docx_第4页
第4页 / 共24页
以下正确的函数定义是.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

以下正确的函数定义是.docx

《以下正确的函数定义是.docx》由会员分享,可在线阅读,更多相关《以下正确的函数定义是.docx(24页珍藏版)》请在冰豆网上搜索。

以下正确的函数定义是.docx

以下正确的函数定义是

一、选择题

1.以下正确的函数定义是()。

A.doublefun(intx,inty)B.doublefun(intx,y)

{z=x+y;returnz;}{intz;returnz;}

C.fun(x,y)D.doublefun(intx,inty)

{intx,y;doublez;{doublez;

z=x+y;returnz;}returnz;}

【答案】D

【说明】其返回值与函数类型相符。

2.若调用一个函数,且此函数中没有return语句,则正确的说法是()。

A.该函数没有返回值B.该函数返回若干个系统默认值

C.能返回一个用户所希望的函数值D.返回一个不确定的值

【答案】A

3.以下不正确的说法是()。

A.实参可以是常量,变量或表达式

B.形参可以是常量,变量或表达式

C.实参可以为任意类型

D.如果形参和实参的类型不一致,则以形参类型为准

【答案】B

【说明】形参只能是变量或数组。

4.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是()。

A.地址传递B.值传递

C.有实参传给形参,再由形参传给实参D.由用户指定传递方式

【答案】B

【说明】地址传递是在实参和形参是数组的情况下进行的。

5.C语言规定,函数返回值的类型是决定于()。

A.return语句中的表达式类型B.调用该函数时的主调函数类型

C.调用该函数时由系统临时D.在定义函数时所指定的函数类型

【答案】D

6.若用数组名作为函数调用的实参,传递给形参的是()。

A.数组的首地址B.数组中第一个元素的值

C.数组中的全部元素的值D.数组元素的个数

【答案】A

7.如果在一个函数中的复合语句中定义了一个变量,则该变量()。

A.只在该复合语句中有定义B.在该函数中有定义

C.在本程序范围内有定义D.为非法变量

【答案】C

【说明】因为该变量为局部变量。

8.下面程序的输出是()。

inti=2;

printf("%d%d%d",i*=2,++i,i++);

A.8,4,2B.8,4,3C.4,4,5D.4,5,6

【答案】A

9.已知一个函数的定义如下:

doublefun(intx,doubley)

{}

则该函数正确的函数原型声明为()。

A.doublefun(intx,doubley)B.fun(intx,doubley)

C.doublefun(int,double);D.fun(x,y);

【答案】A

10.以下不正确的说法是()。

A.全局变量,静态变量的初值是在编译时指定的

B.静态变量如果没有指定初值,则其初值为0

C.局部变量如果没有指定初值,则其初值不确定

D.函数中的静态变量在函数每次调用时,都会重新设置初值

【答案】D

【说明】静态局部变量在其函数调用结束后仍然可以保留变量值。

11.以下任何情况下计算平方数时都不会引起二义性的宏定义是()。

A.#definePOWER(x)x*xB.#definePOWER(x)(x)*(x)

C.#definePOWER(x)(x*x)D.#definePOWER(x)((x)*(x))

【答案】D

12.以下正确的叙述是()。

A.C语言的预处理功能是指完成宏替换和包含文件的调用。

B.C语言的预处理指令只能位于C源程序文件的首部。

C.凡是C源程序中行首以“#”标识的控制行都是预处理指令。

D.C语言的编译预处理就是对源程序进行初步的语法检查。

【答案】B

13.C语言提供的预处理功能包括条件编译,其基本形式是:

#XXX标识符

程序段1

#else

程序段2

#endif

这里XXX可以是()。

A.define或includeB.ifdef或include

C.ifdef或ifndef或defineD.ifdef或ifndef

【答案】D

二、填空题

1.C语言函数返回类型的默认定义类型是。

【答案】整型

2.函数调用语句:

fun((a,B.,(c,d,e))实参个数为。

【答案】2

3.函数的实参传递到形参有两种方式:

和。

【答案】传值、传址

4.在一个函数内部调用另一个函数的调用方式称为。

在一个函数内部直接或间接调用该函数成为函数的调用方式。

【答案】嵌套调用递归

5.C语言变量按其作用域分为和;按其生存期分为和。

【答案】全局变量局部变量动态变量静态变量

6.已知函数定义:

voiddothat(intn,doublex){…},其函数声明的两种写法为

和。

【答案】dothat(intn,doublex){…}dothat(int,double){…}

7.C语言变量的存储类别有,,和。

【答案】自动变量和寄存器变量静态外部变量静态局部变量外部变量

8.凡在函数中未指定存储类别的局部变量,其默认的存储类别为。

【答案】自动

9.在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为。

【答案】静态全局变量

10.变量被赋初值可以分为两个阶段:

即和。

【答案】定义时赋值运行中赋值

11.下面程序的运行结果是。

#defineMAX(a,b)(a>b?

a:

b)+1

main()

{intj=6,k=8,f;

printf("%d\n",MAX(j,k));}

【答案】9

12.下面程序的运行结果是。

#defineA4

#defineB(x)A*x/2

main()

{floatc,a=4.5;

c=B(a);

printf("%5.1f\n",c);}

【答案】9.0

13.以下程序的输出结果是。

#include"stdio.h"

#defineF(y)3.84+y

#definePR(A.printf("%d",(int)(A.)

#definePRINT(A.PR(A.;putchar('\n')

main()

{intx=2;

PRINT(F(3)*x);}

【答案】9

14.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。

main()

{intx=2,y=3;

printf("%d\n",pow(x,y));}

【答案】#include

15.下面程序的运行结果是。

main()

{inta=10,b=20,c;

c=a/b;

#ifdefDEBUG

printf("a=%d,b=%d",a,b);

#endif

printf("c=%d\n",c);}

【答案】c=0

16.下面程序的运行结果是。

#defineDEBUG

main()

{inta=14,b=15,c;

c=a/b;

#ifdefDEBUG

printf("a=%d,b=%d,",a,b);

#endif

printf("c=%d\n",c);}

【答案】a=14,b=15,c=0

三、程序阅读题

1.写出下面程序的运行结果。

func(inta,intB.

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{intk=4,m=1,p1,p2;

p1=func(k,m);p2=func(k,m);

printf("%d,%d\n",p1,p2);

}

【答案】8,17

2.写出下面程序的运行结果。

#defineMAX10

inta[MAX],i;

sub1()

{for(i=0;i

}

sub2()

{inta[MAX],i,max;

max=5;

for(i=0;i

}

sub3(inta[])

{inti;

for(i=0;i

printf("\n");

}

main()

{sub1();sub3(A.;sub2();sub3(A.;

}

【答案】

024*********

024*********

3.若输入的值是-125,写出下面程序的运行结果。

#include

fun(intn)

{intk,r;

for(k=2;k<=sqrt(n);k++)

{r=n%k;

while(!

r)

{printf("%d",k);n=n/k;

if(n>1)printf("*");

r=n%k;

}

}

if(n!

=1)printf("%d\n",n);

}

main()

{intn;

scanf("%d",&n);

printf("%d=",n);

if(n<0)printf("-");

n=fabs(n);fun(n);

}

【答案】

-5*5*5

4.写出下面程序的运行结果。

inti=0;

fun1(inti)

{i=(i%i)*(i*i)/(2*i)+4;

printf("i=%d\n",i);

return(i);

}

fun2(inti)

{i=i<=2?

5:

0;

return(i);

}

main()

{inti=5;

fun2(i/2);printf("i=%d\n",i);

fun2(i=i/2);printf("i=%d\n",i);

fun2(i/2);printf("i=%d\n",i);

fun1(i/2);printf("i=%d\n",i);

}

【答案】

i=5

i=2

i=2

i=4

i=2

5.写出下面程序的功能。

func(intn)

{inti,j,k;

i=n/100;j=n/10-i*10;k=n%10;

if((i*100+j*10+k)==(i*i*i+j*j*j+k*k*k))

returnn;

return0;

}

main()

{intn;

for(n=100;n<1000;n++)

if(n==func(n))printf("%d",n);

}

【答案】输出100~1000之间的水仙花数

四、程序判断题

1.下面add函数是求两个参数的和;判断下面程序的正误,如果错误请改正过来。

voidadd(inta,intb)

{intc;

c=a+b;

return(c);

}

【答案】错误

add(inta,intb)

{intc;

c=a+b;

return(c);}

2.下面函数fun的功能是:

将长整型数中偶数位置上的数依次取出,构成一个新数返回,例如,当s中的数为87653142时,则返回的数为8642;判断下面程序的正误,如果错误请改正过来。

longfun(longs)

{longt,sl=1;

intd;

t=0;

while(s>0)

{d=s%10;

if(d%2=0)

{t=d*sl+t;

sl*=10;

}

s/=10;

}

return(t);

}

【答案】错误

longfun(longs)

{longt,sl=1;

intd;

t=0;

while(s<0)

{d=s/10;

if(d%2=0)

{*t=d*sl+*t;

sl*=10;

}

s/=10;

}

return(t);

}

3.下面函数fun的功能是:

统计字符串s中各元音字母(即A,E,I,O,U)的个数,(字母不分大,小写)判断下面程序的正误,如果错误请改正过来。

fun(chars[],intnum[5])

{intk;i=5;

for(k=0;k

num[i]=0;

for(k=0;s[k];k++)

{i=-1;

switch(s)

{case'a':

case'A':

i=0;

case'e':

case'E':

i=1;

case'i':

case'I':

i=2;

case'o':

case'O':

i=3;

case'u':

case'U':

i=4;

}

if(i>=0)

num[i]++;

}

}

【答案】错误

fun(chars[],intnum[5])

{intk;i=5;

for(k=1;k<=i;k++)

num[k]=0;

for(k=1;s[k]='\0';k++)

{i=-1;

switch(s)

{case'a':

case'A':

i=1;

case'e':

case'E':

i=2;

case'i':

case'I':

i=3;

case'o':

case'O':

i=4;

case'u':

case'U':

i=5;

}

if(i>0)

num[i]++;

}

}

4.函数fun的功能是:

根据整型形参m,计算如下公式的值:

y=1-1/2×2-1/3×3-…-1/m×m

判断下面程序的正误,如果错误请改正过来。

fun(intm)

{doubley=0,d;

intI;

for(i=100,i<=m,i+=100)

{d=(double)i*(double)i;

y+=1.0/d;

}

return(y);

}

【答案】错误

fun(intm)

{doubley=1.0,d;

inti;

for(i=2,i<=m,i+=1)

{d=(double)i*(double)i;

y-=1.0/d;

}

return(y);

}

5.下面函数fun的功能是:

依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;判断下面程序的正误,如果错误请改正过来。

voidfun(chars[])

{inti,j;

for(i=0,j=0;s[i]!

='\0';i++)

if(s[i]>='0'&&s[i]<='9')

s[j]=s[i];

s[j]="\0";

}

【答案】错误

voidfun(chars[])

{inti,j;

for(i=0,j=1;s[i]!

='\0';i++)

if(s[i]>='0'&&s[i]<='9')

{s[j]=s[i];

j++;}

s[j]="\0";

}

五、程序填空题

1.经典算法提示:

折半查找法的思路是先确定待查元素的范围,将其分成两半,然后比较位于中间点元素的值。

如果该待查元素的值大于中间点元素的值,则将范围重新定义为大于中间点元素的范围,反之亦然。

intsearch(inta[10],intm)

{intx1=0,x2=9,mid;

while(x1<=x2)

{mid=(x1+x2)/2;

if(m

elseif(m>a[mid])②;

elsereturn(mid);

}

return(-1);

}

【答案】

①x2=mid-1②x1=mid+1

2.del函数的作用是删除有序数组a中的指定元素x,n为数组a的元素个数,函数返回删除后的数组a元素个数,请填空使程序完整。

intdel(inta[10],intn,intx)

{intp=0,i;

while(x>=a[p]&&p

for(i=p-1;i

return(n-1);}

【答案】

①a[p]='\0'②a[i]=a[i+1]

3.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请填空使程序完整。

#include

①;

main()

{floatx,y,z,f;

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

f=fun(②);

f+=fun(③);

printf("f=%d",f);

}

floatfun(floata,floatb)

{return(a/b);

}

【答案】①#include②x+y,x-y③z+y,z-y

4.avg函数的作用是计算数组array的平均值返回,请填空使程序完整。

floatavg(floatarray[10])

{inti;

floatavgr,sum=0;

for(i=1;①;i++)

sum+=②;

avgr=sum/10;

③;}

【答案】

①i<=10②array[i]③return(avgr)

六、编程题

1.用递归法计算n!

可用下述公式表示:

①②③④。

n!

=1(n=0,1)

n×(n-1)!

(n>1)

【参考程序】

longff(intn)

{longf;

if(n<0)printf("n<0,inputerror");

elseif(n==0||n==1)f=1;

elsef=ff(n-1)*n;

return(f);

}

main()

{intn;

longy;

printf("\ninputainteagernumber:

\n");

scanf("%d",&n);

y=ff(n);

printf("%d!

=%ld",n,y);

}

2.写两个整数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。

【参考程序】

#include"stdio.h"

main()

{intu,v,h,l;

printf("pleaseinputtwonumbers:

\n");

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("hcf=%d\n",h);

l=lcd(u,v,h);

printf("lcd=%d\n",l);

}

hcf(u,v)

intu,v;

{inta,b,t,r;

if(u>v)

{t=u;u=v;v=t;

}

a=u;b=v;

while((r=b%a)!

=0)

{b=a;a=r;

}

return(a);

}

lcd(u,v,h)

intu,v,h;

{return(u*v/h);

}

3.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

【参考程序】

main()

{charstr0[100];

gets(str0);

fanxu(str0);

puts(str0);

}

fanxu(str1)

charstr1[100];

{inti,t,j;

charstr2[100];strcpy(str2,str1);

t=strlen(str1);

for(i=0,j=t-1;j>-1;i++,j--)

str1[i]=str2[j];

}

4.写一函数,输入一个十六进制数,输出相应的十进制数。

【参考程序】

#include

#include"math.h"

intx;

intff(charshu[])

{inti=strlen(shu)-1,n;

intsum=0.0;

x=0;

n=i;

for(;i>-1;i--)

{if(shu[n-i]>=48&&shu[n-i]<=57)sum=sum+(shu[n-i]-48)*pow(16,i);

elseif(shu[n-i]>=65&&shu[n-i]<=90)sum=sum+(shu[n-i]-55)*pow(16,i);

elseif(shu[n-i]>=97&&shu[n-i]<=102)sum=sum+(shu[n-i]-87)*pow(16,i);

x=1;

}

returnsum;

}

main()

{charshufu[100];

ints;

gets(shufu);

s=ff(shufu);

if(x)printf("\ns(d)=%d\n",s);

elseprintf("Thenumberisnotox\n");

}

5.写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排列。

【参考程序】

intpaixu(x)

intx[];

{inti,j,t;

for(j=1;j<10;j++)

for(i=0;i<=9-j;i++)

if(x[i]>x[i+1]){t=x[i+1];x[i+1]=x[i];x[i]=t;}

}

main()

{inty[10];inti;

for(i=0;i<10;i++)

scanf("%d",&y[i]);

paixu(y);

for(i=0;i<10;i++)

printf("%5d",y[i]);

printf("\n");

}

6.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。

【参考程序】

intzhuangzhi(intb[3][3])

{inti,j,t;

for(i=0;i<3;i++)

for(j=0;j>=i&&j<3-i;j++)

{t=b[i][j];b[i][j]=b[j][i];b[j][i]=t;}

}

main()

{inta[3][3];inti,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

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

printf("\n");}

zhuangzhi(a);

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

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

printf("\n");}

}

7.利用递归函数调用方式,将所输入的5个字符,以相反

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

当前位置:首页 > 医药卫生 > 中医中药

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

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