当前位置:文档之家› 第7章 函数

第7章 函数

必须有所知,否则不如死。——罗曼·罗兰
第7章 函数
一、单项选择题
1.一个C程序总是从[ ]开始执行。
A)主过程
B)第一个函数
C)主函数
D)子函数
2. C语言程序中,若对函数类型没有说明,则函数默认类型是[ ]。
A)void B)int C)char D)double
3. 已知函数abc的定义为:
void abc()
{......}
则函数中void的含义是[ ]。
A) 执行函数abc后,函数没有返回值
B) 执行函数abc后,函数不再返回
C) 执行函数abc后,函数可以返回任意类型
D) 以上答案全不对
4. C语言程序中,以数组名作函数参数,当函数调用时,[ ]。
A) 实参和形参各占一个独立的存储单元
B) 实参和形参共占一个存储单元
C) 可以由用户指定实参和形参是否共用存储单元
D) 由系统自动确定实参和形参是否共用存储单元
5.C语言中,[ ]。
A) 函数的定义可以嵌套,函数的调用不可以嵌套
B) 函数的定义不可以嵌套,函数的调用可以嵌套
C) 函数的定义和函数的调用都不可以嵌套
D) 函数的定义和函数的调用都可以嵌套
6.C语言中,决定函数返回值类型的是[ ]。
A) return语句中的表达式类型
B) 调用该函数的主调函数的类型
C) 调用函数时临时决定
D) 定义函数时所指定的函数类型
7.C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是[ ]。
A) 地址传递
B) 值传递
C) 由实参传给形参,再由形参传给实参
D) 由用户指定传递方式
8.凡在函数中未指定存储类别的变量,其隐含的存储类别为[ ]。
A) 自动(auto)
B) 静态(static)
C) 外部(extern)
D) 寄存器(register)
9.下列程序的输出结果是[ ]。
int fun(int x[],int n)
{int i,rt=1;
for(i=0;i<=n;i++)
rt*=x[i];
return rt;
}
#include
void main()
{int a[]={2,3,4,5,6,7,8,9};
int x=fun(a,3);
printf("%d",x);
}
A)120 B)720 C)24 D)6
10.下述程序的结果是[ ]。
fun(int n)
{if(n==1)
return (1);
else
return(n*fun(n-1));
}
#include
void main()
{int i=5;
printf("%d",fun(i);
}
A)5 B)24 C)120 D)720
二、 阅读程序,写出程序运行结果。
1.
#include
void main() 运行结果:
{int n;
n=2;
printf("%d\n",sq(n));
}
int sq(int i)
{int a;
a=i*i;
return(a);
}
2.
#include
int fun(int x,int y,int cp,int dp)
{cp=x*x+y*y; 运行结果:
 dp=x*x-y*y;
}
void main()
{int a=4,b=3,c=5,d=6;
fun(a,b,c,d);
printf("%d,%d\n",c,d);
}
3.
#include
void main()
{int i;

运行结果:
for(i=0;i<3;i++)
add();
}

必须有所知,否则不如死。——罗曼·罗兰
add()
{static int x=0;
x=x+10;
printf("%d\n",x);
}
4.
#include
int x,y;
num()
{int a=15,b=10;
/* int x,y;*/
x=a-b;y=a+b;
printf("%d,%d\n",x,y); 运行结果:
return;
}
void main() 如果去掉注释标志/*......*/,运行结果为:
{int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
5.
#include
void main() 运行结果:
{fun();
fun();
}
fun()
{static int a[3]={0,1,2};
int i;
for(i=0;i<3;i++)
a[i]+=a[i];
 for(i=0;i<3;i++)
printf("%d,",a[i]);
 printf("\n");
 }
6.
#include
long func(int x) 运行结果:
{long p;
if(x==0||x=1)return(1);
p=x*func(x-1);
return(p);
}
void main()
{printf("%d\n",fun(4));
}
7.
#include
int x=1;
void fun(int y)
{int x=5;
x+=y++;
printf("%d",x);
}
void main()
{int a=3;
fun(a);
x+=a++;
printf("%d",x);
}
三、 程序填空
1. 用函数求(a-b)/2+(a+b)/2
#include
void main()
{float a,b;
;
scanf("%f%f",&a,&b);
printf("sum=%f\n", );
}
float sum(float x, float y)
{float z;
z= ;
;}
2. 求1!+2!+3!+4!+5!
#include
void main()
{int i,s;
s=0;
for(i=1;i<=5;i++)
s=s+ ;
printf("sum=%d\n",s);
}
fac(n)
int n;
{int i,b=1;
for(i=1;i<= ;i++)
b=b* ;
return(b);
}
3. 任意输入三个整数找最大值。
#include
void main()
{ a,b,c;
scanf("%d%d%d",&a,&b, );/*输入a,b,c*/
printf("max=%d\n",max( ));
}
int max(int x, int y)
{return( );

必须有所知,否则不如死。——罗曼·罗兰
}
四、 程序设计题
1. 设计两个函数分别计算两个double型数据的和与差,并将计算结果传回主函数。







2. 在主函数中输入10个整数,存放在一个一维数组中,调用另一个函数将10个整数按逆序重新放置,然后在main函数中输出结果。











3. 编写求字符串长度的函数length(p),形参p为存放字符串的字符数组的数组名。











五、 程序改错题
1. fun函数的功能是:从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处

填上适当的内容,使它能得出正确的结果。
#include
int fun()
{ int a[3][3],sum;
int i,j;

for(i=0;i<3;i++)
{for(j=0;j<3;j++)
scanf("%d",a[i][j]);
}
for(i=0;i<3;i++)
sum*=a[i][i];
printf("sum=%d\n",sum);
}
void main()
{fun();
}
2. 函数fun的功能是:求出以下分数数列的前n项之和。

例如,n=6, 则应输出10.007051。请改正fun函数中的两处错误,使它能计算出正确结果。
注意:不要改动main主函数,不能增行或删行,也不得更改程序的结构!
#include
fun(n)
{ int a,b,c,k;
double s;
s=0.0;
a=2;
b=1;
for(k=1;k<=n;k++)
{
s=s+a/b;
c=a;
a=a+b;
b=c;
}
return(s);
}
void main()
{
int n=6;
printf("\nThe value of fun is:%f\n",fun(n));
}



27



必须有所知,否则不如死。——罗曼·罗兰

相关主题
文本预览
相关文档 最新文档