习题5文档格式.docx
- 文档编号:8612686
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:21
- 大小:39.74KB
习题5文档格式.docx
《习题5文档格式.docx》由会员分享,可在线阅读,更多相关《习题5文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数的复合语句中定义的变量在本函数范围内有效
【解析】在一个函数内的复合语句中定义的变量只在本复合语句范围内有效。
(8)以下叙述中正确的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态类别变量的生存期贯穿于整个程序的运行期间
C,函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量都将是随机值
【解析】静态类别变量的生存期贯穿于整个程序的运行期间,即使退出对应的函数后,该类型的变量也没有释放存储空间,下次调用该函数时仍有效。
(9)以下说法正确的是()。
A.定义函数时,形参的类型说明可以放在函数体内
B.return之后不能紧跟表达式
C.若函数类型与返回值类型不一致,则以函数类型为准
D.若形参与实参类型不一致,则以实参类型为准
【答案】C
【解析】函数类型决定最终返回值的类型。
(10)以下描述正确的是()。
A.调用函数时的实参只能是有确定值的变量
B.return语句的括号中可以是变量、常量或有确定值的表达式
C.函数调用时实参和形参间的参数传递方式不都是值传递
D.实参和形参若类型不匹配,则编译时将报错
【解析】函数调用时实参与形参间的参数传递方式只有值传递,而且实参可以是变量,也可以是常量或表达式,实参类型和形参不匹配时,编译时不会报错,而是在执行时报错。
(11)凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A.自动(auto)B.静态(static)
C.外部(extern)D.寄存器(register)
【答案】A
【解析】对于未加特殊说明的局部变量,其存储类别为自动型。
(12)递归函数f(n)=f(n-1)+n(n>
1)的递归体是()。
A.f
(1)=0B.f(0)=1
C.f(n)=f(n-1)+nD.f(n)=n
【解析】递归函数的两个要素为递归体和递归出口,这里主要考查递归体。
(13)下列程序的输出结果是()。
#include<
stdio.h>
fun(inta,intb,intc)
{
c=a*b;
}
intmain()
intc;
fun(2,3,c);
printf("
%d\n"
c);
return0;
A.0B.1C.6D.无法确定
【答案】D
【解析】函数之间的参数传递方式为单向值传递,因为变量c在定义时没有初始化,所以函数调用结束后c的值仍无法确定。
(14)下列程序的输出结果是()。
intx=1;
func(intx)
x=3;
func(x);
printf("
x);
return0;
A.3B.1C.0D.无法确定
【解析】局部变量的作用域为其所在的函数,并且当局部变量与全局变量同名时,局部变量将屏蔽全局变量。
(15)下列程序的输出结果是()。
floatfun(intx,inty)
return(x+y);
voidmain()
inta=2,b=5,c=8;
printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));
A.编译出错B.9C.21D.9.0
【解析】该题主要考查函数调用作为函数实参的情况。
2)填空题
(1)下列程序的执行结果是。
voidfunc(inta,intb,intc)
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
inti=2;
func(i,i++,i--);
【答案】a=2,b=1,c=2
(2)下列程序的运行结果是。
invert(int*s,inti,intj)
intt;
if(i<
j)
{
invert(s,i+1,j-1);
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
}
inta[6]={10,6,23,-90,0,3},i;
invert(a,0,5);
for(i=0;
i<
6;
i++)
printf(“%d,”,a[i]);
printf(“\n”);
【答案】3,0,-90,23,6,10
(3)下列程序的输出结果是。
intfac_sum(intn)
staticintf=1,t=1,s=0;
inti;
if(n>
t)
for(i=t+1;
=n;
f=f*i;
else
f=1;
for(i=1;
t=n;
s=s+f;
return(s);
inta[]={3,5,2},i,sum;
3;
sum=fac_sum(a[i]);
printf(“sum=%d\n”,sum);
【答案】sum=128
(4)下列程序的输出结果是。
voidss(char*s,chart)
while(*s)
if(*s==t)
*s=t-‘a’+’A’;
s++;
charstr1[100]=”abcddfefdbd”,c=’d’;
ss(str1,c);
printf(“%s\n”,str1);
【答案】abcDDfefDbD
(5)函数voidfun(float*sn,intn)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回。
要求n通过形参传入,n≥0。
请填空。
S=1-
+
-
+…
voidfun(float*sn,intn)
floats=0.0,w,f=-1.0;
inti=0;
i<
i++)
f=*f;
w=f/(2*i+1);
s+=w;
=s;
【答案】-1*sn
(6)下列程序的运行结果是。
string.h>
char*ss(char*s)
returns+strlen(s)/2;
char*p,*str=”abcdefgh”;
p=ss(str);
printf(“%s\n”,p);
【答案】efgh
(7)下列程序的运行结果是。
intn=1;
func()
staticintx=4;
inty=10;
x=x+2;
n=n+10;
y=y+n;
printf(“FUNC:
x=%2dy=%2dn=%2d\n”,x,y,n);
staticintx=5;
inty;
y=n;
printf(“MAIN:
func();
}
【答案】MAIN:
x=5y=1n=1
FUNC:
x=6y=21n=11
MAIN:
x=5y=1n=11
x=8y=31n=21
(8)函数gongyu()的作用是求整数num1和num2的最大公约数,并返回该值,请填空。
gongyu(intnum1,intnum2)
inttemp,a,b;
if(num1num2)
temp=num1;
num1=num2;
num2=temp;
a=num1;
b=num2;
while()
;
a=b;
b=temp;
return(a);
【答案】<
b!
=0temp=a%b
(9)函数pi()的功能是:
根据以下公式,返回满足精度(0.0005)要求的π值,请填空。
=1+
conio.h>
math.h>
doublepi(doubleeps)
doubles,t;
intn;
for(;
t>
eps;
n++)
s+=t;
t=n*t/(2*n+1);
return();
voidmain()
doublex;
printf(“\nPleaseinputaprecision:
”);
scnaf(“%lf”,&
x);
printf(“\neps=%lf,π=%lf”,x,pi(x));
【答案】n=1,s=0.0,t=1.02.0*s
(10)若输入整数10,则下列程序的运行结果是。
sub(inta)
intc;
c=a%2;
returnc;
inta,e[10],c,i=0;
printf(“输入一个整数\n”);
scanf(“%d”,&
a);
while(a!
=0)
c=sub(a);
a=a/2;
e[i]=c;
i++;
for(;
i>
0;
i--)
printf(“%d”,e[i-1]);
【答案】1010
3)编程题
(1)编写程序,调用函数求一个圆柱体的表面积和体积。
【参考源程序】
voidfun(intr,inth)
floatarea;
area=2*3.14*r*h;
vol=3.14*r*r*h;
printf("
area=%.2f,vol=%.2f"
area,vol);
intmain()
intr,h;
scanf("
%d%d"
&
r,&
h);
fun(r,h);
return0;
(2)编写一个函数,输出一个整数的全部素数因子。
例如,m=120时,因子为2,3,5。
intfun(intn)
intflag=1,i;
for(i=2;
n;
if(n%i==0)
flag=0;
returnflag;
intm,i;
%d"
m);
m;
if(m%i==0)
if(fun(i))
printf("
%d"
i);
(3)编写程序,调用函数使输入的一个字符串反序存放并输出。
voidfun(chars[])
inti=0,n;
chart;
n=strlen(s)-1;
while(i<
=n)
{
t=s[i];
s[i]=s[n];
s[n]=t;
i++;
n--;
}
chars[20];
gets(s);
fun(s);
puts(s);
(4)编写一个函数,输入一个十六进制数,输出相应的十进制数。
intfun(chars[])
inti=0,n,m=0;
if(s[i]>
='
a'
)
n=s[i]-'
+10;
else
0'
;
while(s[++i]!
\0'
if(s[i]>
m=s[i]-'
n=n*16+m;
returnn;
chars[6];
intn;
n=fun(s);
n);
(5)编写程序完成以下功能:
在主函数中通过键盘输入10个互不相同的整数并存入一维数组中,调用函数找出数组中的最大值,并从数组中删除该值,最后在主函数中输出删除后的数组。
voidfun(inta[10])
inti,j=0,max=a[0];
for(i=1;
10;
if(max<
a[i])
max=a[i];
j=i;
for(i=j;
9;
a[i]=a[i+1];
inti,a[10];
for(i=0;
scanf("
a[i]);
fun(a);
printf("
a[i]);
(6)编写程序,调用函数输出如下杨辉三角形。
voidyhui(inta[7][7])
inti,j;
7;
a[i][1]=1;
a[i][i]=1;
for(i=3;
for(j=2;
j<
i;
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(j=1;
=i;
%3d"
a[i][j]);
\n"
);
inta[7][7];
yhui(a);
(7)用递归法计算
的值,n的值由键盘输入。
intsum(intn)
intr;
if(n<
dataerror\n"
if(n==1)
r=1;
r=sum(n-1)+n*n;
returnr;
n);
result=%d\n"
sum(n));
(8)用递归法计算
r=sum(n-1)+n;
sum(%d)=%d\n"
n,sum(n));
(9)已知
可以用下面的公式表示。
编写函数求
,要求最后一项近似到
。
利用该函数求
,
和
floatfun1(intn)
inti;
floatr=1;
r=r*i;
floatfun2(floatx,intn)
r=r*x;
floatfun(floatx)
floatp,s=0;
intn=0;
p=fun2(x,n)/fun1(n);
while(p>
1e-4)
s+=p;
n++;
p=fun2(x,n)/fun1(n);
returns;
%f\n"
fun
(1));
fun
(2));
fun(-0.5));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题