函数复习.docx
《函数复习.docx》由会员分享,可在线阅读,更多相关《函数复习.docx(17页珍藏版)》请在冰豆网上搜索。
函数复习
函数程序设计复习
(一)选择题
1.以下正确的函数定义形式是 A__。
A)doublefun(intx,inty)
B)doublefun(intx;inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
2.以下正确的函数形式是 D__。
A)doublefun(intx,inty)
{z=x+y;returnz;}
B)fun(intx,y)
{intz;returnz;}
C)fun(x,y)
{intx,y;doublez;z=x+y;returnz;}
D)doublefun(intx,inty)
{doublez;z=x+y;returnz;}
3.以下正确的说法是 A__。
在C语言中A)实参和与其对应的形参各占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
4.若调用一个函数,且此函数中没有return语句,则正确的说法是 D__。
该函数A)没有返回值
B)返回若干个系统默认值
C)能返回一个用户所希望的函数值
D)返回一个不确定的值
5.以下不正确的说法是 B__。
C语言规定A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以为任意类型
D)形参应与其对应的实参类型一致
6.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 B__。
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
7.以下程序有语法性错误,有关错误原因的正确说法是 C__。
main()
{
intG=5,k;
voidPrt_char();
……
k=Prt_char(G);
……
}
A)语句voidprt_char();有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
8.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B__。
A)float型
B)int型
C)long型
D)double型
9.C语言规定,函数返回值的类型是由 D__。
A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
10.下面函数调用语句含有实参的个数为 B__。
func((exp1,exp2),(exp3,exp4,exp5));
A)1B)2C)4D)5
11.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include
#include
main()
{
floatx,y,z,sum;
scanf(“%f%f%f”,&x,&y,&z);
sum=f(【1】__B__)+f(【2】__C__);
printf(“sum=%f\n”,sum);
}
floatf(floata,floatb)
{
floatvalue;
value=a/b;
return(value);
}
【1】A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y
【2】A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y
12.以下正确的描述是 B__。
在C语言程序中A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
13.以下正确的说法是 A__。
如果在一个函数中的复合语句中定义了一个变量,则该变量
A)只在该复合语句中有效
B)在该函数中有效
C)在本程序范围内均有效
D)为非法变量
14.凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 A__。
A)自动(auto)B)静态(static)
C)外部(extern)D)寄存器(register)
15.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 D__。
A)externB)registerC)autoD)static
(二)填空题
1.若输入的值是-125,以下程序的运行结果是 -5*5*5__。
#include
main()
{
intn;
scanf(“%d”,&n);
printf(“%d=”,n);
if(n<0)printf(“-”);
n=fabs(n);
fun(n);
}
fun(intn)
{
intk,r;
for(k=2;k<=sqrt(n);k++)
{
r=n%k;
while(r==0)
{
printf(“%d”,k);
n=n/k;
if(n>1)printf(“*”);
r=n%k;
}
}
if(n!
=1)printf(“%d\n”,n);
}
2.以下程序的运行结果是 i=7;j=6;x=7
i=2;j=7;x=5。
main()
{
inti=2,x=5,j=7;
fun(j,6);
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
fun(inti,intj)
{
intx=7;
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
3.以下程序的运行结果是 111__。
main()
{
increment();
increment();
increment();
}
increment()
{
intx=0;
x+=1;
printf(“%d”,x);
}
4.以下程序的运行结果是 maxis2_。
#include
main()
{
inta=1,b=2,c;
c=max(a,b);
printf(“maxis%d\n”,c);
}
max(intx,inty)
{
intz;
z=(x>y)?
x:
y;
return(z);
}
5.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisisNO.”。
请填空。
#include
voidYesNo(charch)
{
switch(ch)
{
case‘y’:
case‘Y’:
printf(“\nThisisYES.\n”);_break_;
case‘n’:
case‘N’:
printf(“\nThisisNo.\n”);_break_;
}
}
main()
{
charch;
printf(“\nEnterachar‘y’,‘Y’or‘n’,‘N’:
”);
ch=getchar();
printf(“ch:
%c”,ch);
YesNo(ch);
}
6.以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。
请选择填空。
sub(intk,intn)
{
inta1,a2;
a2=【1】__C__;
a1=k-【2】__A__;
if((k%3==0&&a2==5)||(k%3==0&&a1==5))
{
printf(“%d”,k);
n++;
returnn;
}
elsereturn-1;
}
main()
{
intn=0,k,m;
for(k=10;k<=99;k++)
{
m=sub(k,n);
if(m!
=-1)n=m;
}
printf(“\nn=%d”,n);
}
【1】A)k*10B)k%10C)k/10D)k*10%10
【2】A)a2*10B)a2C)a2/10D)a2%10
7.以下程序的功能是用二分法求方程
的根,并要求绝对误差不超过0.001。
请填空。
#include
floatf(floatx)
{
return(2*x*x*x-4*x*x+3*x-6);
}
main()
{
floatm=-100,n=90,r;
r=(m+n)/2;
while(f(r)*f(n)!
=0)
{
if(f(m)*f(r)>0)m=r;
elsen=r;
if(fabs(f(r))<=0.001)break;
r=(m+n)/2;
}
printf(“Theisfangchengjieis%6.3f\n”,r);
}
8.以下程序的运行结果是输出如下图形。
请填空。
*
***
*****
*******
*****
***
*
#include
voida(inti)
{
intj,k;
for(j=0;j<=5-i;j++)printf(“”);
for(k=0;k<2*i-1;k++)printf(“*”);
printf(“\n”);
}
main()
{
inti;
for(i=0;i<3;i++)a(i);
for(i=3;i>=0;i--)a(i);
}
}
#include
intmain()
{
inti,j,k,x,y,z;
for(i=1;i<=4;i++)
{
for(k=4-i;k>0;k--)printf("");
for(j=1;j<=2*i-1;j++)printf("*");
printf("\n");
}
for(x=1;x<=3;x++)
{
for(y=x;y>0;y--)printf("");
for(z=1;z<=7-2*x;z++)printf("*");
printf("\n");
}
return0;
}
(三)编程题
1.用函数编程打印以下图案。
(1)
(2)(3)
Voidf1(intn)
{
inti;
for(i=1;i<=n;i++)printf(““);
}
Voidf2(intn)
{
inti;
for(i=1;i<=n;i++)printf(“*“);
}
(1)main()
(2)main()(3)main()
{{{
inti;inti;inti;
f(i=1;i<=4;i++)f(i=1;i<=4;i++)f(i=1;i<=4;i++)
{{{
f1(4-i);f2(2*i-1);f1(4-i);
f2(6);printf(“\n”);f2(2*i-1);
printf(“\n”);}printf(“\n”);
}}
getch();getch();getch();
}}}
2.以下程序的功能是用牛顿法求解方程f(x)=cosx-x=0。
已有初始值x0=3.1415/4,要求绝对误差不超过0.001,函数f用计算迭代公式中
的值,请编写f函数。
牛顿迭代公式是:
即:
#include
#include
#definePI3.1415
floatf(floatx0)
{}
main()
{
intt=0,k=100,n=0;
floatx0=PI/4,x1;
while(n{
x1=f(x0);
if(fabs(x0-x1)<0.001){t=1;break;}
else{x0=x1;n=n+1;}
}
if(t==1)printf(“\nFangchenggengis%10.5f”,x1);
elseprintf(“\nSorry,notfound!
”);
}
floatf(floatx0)
{
returnx0-(cos(x0)-x0)/(sin(x0)-1);
}
3.编程函数longpower(intk,intn)计算kk…k(n个k),然后在main()函数中由键盘输入n(要求为奇数)和k的值,通过调用power函数的方式求k+kkk+kkkkk…+kkkkk(n个a)的值。
4.程序输出结果
main()
{intm=3;
if(m++>7)printf(“%d\n”,m-9);
elseprintf(“a=%d\n”,m--);
}
5.doublef1,f2;数据输入方式:
333.2,22.22,输入语句如何写?
6.inta,b,c;且a=5,b=-8,c=18,表达式!
(a>b)+(b!
=c)||(a+b)&&(b-c)
7.main()
{inta=14,b=23,m=1;
switch(a%4)
{ case1:
m++;break;
case2:
m++;
switch(b%2)
{ default:
m++;
case1:
m++;break; }
}
printf(“%d\n”,m);
}
8.循环语句执行多少次?
for(x=10,y=20;(y=199)&&(x<40);x++);
9.循环语句执行多少次?
intm=-9,n=10;
while(m=1)n=n/2+m*2;
10.下面程序运行结果
abc(inti,intj)
{
intx=117;
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
main()
{
inti=12,x=15,j=17;
abc(j-3,3);
abc(x-5,j-10);
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
i=14;j=3;x=117
i=10;j=7;x=117
i=12;j=17;x=15
11.程序运行结果
main()
{inti,j,k=10,m=10;
for(i=10;i<12;i+=3)
{
for(j=0;j<5;j+=2)k++;
k-=j;
}
m=100-i/5+j/2;
printf(“%d%d\n”,k,m);
}
7101
12.程序运行结果
main()
{inti;
for(i=10;i<=18;i+=6)
switch(i){
case1:
printf("%d",i+3);
case2:
printf("%d",i-5);
case3:
printf("%d",i+8);break;
default:
printf("*****");
}
}
13.程序运行结果
intmax(intx,inty)
{intk;
k=x-y+100;
returnk-20;
}
main()
{inta=123,b=34,c=32;
c=max(a,b);
printf("result:
%d+%d=%d",a,b,c);
}
14.编写一个C程序,要求定义一个有关时间的结构体数据类型(包括年、月、日、时、分),从键盘输入数据5个日期数据(用数组存储),然后将输入日期在屏幕上以****年—**月—**日:
**时:
**分的形式输出。