1以下正确的函数定义是Word下载.docx
- 文档编号:17166802
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:25.99KB
1以下正确的函数定义是Word下载.docx
《1以下正确的函数定义是Word下载.docx》由会员分享,可在线阅读,更多相关《1以下正确的函数定义是Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
D.fun(x,y);
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))
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
二、填空题
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
{floatc,a=4.5;
c=B(a);
%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'
)
{intx=2;
PRINT(F(3)*x);
14.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。
{intx=2,y=3;
pow(x,y));
【答案】#include<
math.h>
15.下面程序的运行结果是。
{inta=10,b=20,c;
c=a/b;
#ifdefDEBUG
printf("
a=%d,b=%d"
a,b);
#endif
c=%d\n"
c);
【答案】c=0
16.下面程序的运行结果是。
#defineDEBUG
{inta=14,b=15,c;
a=%d,b=%d,"
【答案】a=14,b=15,c=0
三、程序阅读题
1.写出下面程序的运行结果。
func(inta,intB.
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
{intk=4,m=1,p1,p2;
p1=func(k,m);
p2=func(k,m);
%d,%d\n"
p1,p2);
【答案】8,17
2.写出下面程序的运行结果。
#defineMAX10
inta[MAX],i;
sub1()
{for(i=0;
i<
MAX;
i++)a[i]=i+i;
sub2()
{inta[MAX],i,max;
max=5;
for(i=0;
i++)a[i]=i;
sub3(inta[])
{inti;
i++)printf("
a[i]);
\n"
);
{sub1();
sub3(A.;
sub2();
【答案】
024*********
3.若输入的值是-125,写出下面程序的运行结果。
#include<
fun(intn)
{intk,r;
for(k=2;
k<
=sqrt(n);
k++)
{r=n%k;
while(!
r)
{printf("
k);
n=n/k;
if(n>
1)printf("
*"
r=n%k;
}
if(n!
=1)printf("
n);
{intn;
scanf("
&
n);
%d="
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;
i=%d\n"
i);
return(i);
fun2(inti)
{i=i<
=2?
5:
0;
{inti=5;
fun2(i/2);
fun2(i=i/2);
fun1(i/2);
i=5
i=2
i=4
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;
for(n=100;
n<
1000;
n++)
if(n==func(n))printf("
【答案】输出100~1000之间的水仙花数
四、程序判断题
1.下面add函数是求两个参数的和;
判断下面程序的正误,如果错误请改正过来。
voidadd(inta,intb)
{intc;
c=a+b;
return(c);
【答案】错误
add(inta,intb)
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);
while(s<
{d=s/10;
{*t=d*sl+*t;
3.下面函数fun的功能是:
统计字符串s中各元音字母(即A,E,I,O,U)的个数,(字母不分大,小写)判断下面程序的正误,如果错误请改正过来。
fun(chars[],intnum[5])
{intk;
i=5;
for(k=0;
I;
num[i]=0;
s[k];
k++)
{i=-1;
switch(s)
{case'
a'
:
case'
A'
i=0;
case'
e'
E'
i=1;
i'
I'
i=2;
o'
O'
i=3;
u'
U'
i=4;
if(i>
=0)
num[i]++;
for(k=1;
=i;
num[k]=0;
s[k]='
\0'
;
switch(s)
i=5;
0)
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);
{doubley=1.0,d;
inti;
for(i=2,i<
=m,i+=1)
{d=(double)i*(double)i;
y-=1.0/d;
5.下面函数fun的功能是:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;
voidfun(chars[])
{inti,j;
for(i=0,j=0;
s[i]!
='
i++)
if(s[i]>
0'
&
s[i]<
9'
s[j]=s[i];
s[j]="
\0"
for(i=0,j=1;
&
s[i]<
{s[j]=s[i];
j++;
五、程序填空题
1.经典算法提示:
折半查找法的思路是先确定待查元素的范围,将其分成两半,然后比较位于中间点元素的值。
如果该待查元素的值大于中间点元素的值,则将范围重新定义为大于中间点元素的范围,反之亦然。
intsearch(inta[10],intm)
{intx1=0,x2=9,mid;
while(x1<
=x2)
{mid=(x1+x2)/2;
if(m<
a[mid])①;
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<
n)①;
for(i=p-1;
n;
i++)②;
return(n-1);
①a[p]='
②a[i]=a[i+1]
3.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请填空使程序完整。
stdio.h>
①;
{floatx,y,z,f;
%f,%f,%f"
x,&
y,&
z);
f=fun(②);
f+=fun(③);
f=%d"
f);
floatfun(floata,floatb)
{return(a/b);
【答案】①#include<
②x+y,x-y③z+y,z-y
4.avg函数的作用是计算数组array的平均值返回,请填空使程序完整。
floatavg(floatarray[10])
floatavgr,sum=0;
for(i=1;
①;
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;
n<
0,inputerror"
elseif(n==0||n==1)f=1;
elsef=ff(n-1)*n;
return(f);
longy;
\ninputainteagernumber:
y=ff(n);
%d!
=%ld"
n,y);
2.写两个整数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
{intu,v,h,l;
pleaseinputtwonumbers:
%d,%d"
u,&
v);
h=hcf(u,v);
hcf=%d\n"
h);
l=lcd(u,v,h);
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)!
{b=a;
a=r;
return(a);
lcd(u,v,h)
intu,v,h;
{return(u*v/h);
3.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
{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"
math.h"
intx;
intff(charshu[])
{inti=strlen(shu)-1,n;
intsum=0.0;
x=0;
n=i;
for(;
i>
i--)
{if(shu[n-i]>
=48&
shu[n-i]<
=57)sum=sum+(shu[n-i]-48)*pow(16,i);
elseif(shu[n-i]>
=65&
=90)sum=sum+(shu[n-i]-55)*pow(16,i);
=97&
=102)sum=sum+(shu[n-i]-87)*pow(16,i);
x=1;
returnsum;
{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++)
i<
=9-j;
i++)
if(x[i]>
x[i+1]){t=x[i+1];
x[i+1]=x[i];
x[i]=t;
{inty[10];
inti;
y[i]);
paixu(y);
%5d"
y[i]);
6.写一函数,使给定的一个二维数组(3×
3)转置,即行列互换。
intzhuangzhi(intb[3][3])
3;
for(j=0;
=i&
3-i;
{t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
{inta[3][3];
inti,j;
a[i][j]);
{for(j=0;
%d"
a[i][j]);
zhuangzhi(a);
7.利用递归函数调用方式,将所输入的5个字符,以相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 以下 正确 函数 定义