作业八:函数程序设计答案
(一)选择题(30分)
1.以下正确的函数定义形式是 A__。
A)double fun(int x,int y) B)double fun(int x;int y) C)double fun(int x,int y); D)double fun(int x,y);
2.以下正确的函数形式是 D__。
A)double fun(int x,int y) { z=x+y; return z; } B)fun(int x,y)
{ int z; return z; } C)fun(x,y)
{ int x,y; double z; z=x+y; return z; } D)double fun(int x,int y)
{ double z; z=x+y; return z; }(重要)
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() { int G=5,k; void Prt_char(); ? ?
k=Prt_char(G); ? ? }
A)语句void prt_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)1 B)2 C)4 D)5(重要)
11.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请
选择填空。
#include
在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)extern B)register C)auto D)static
(二)填空题(50分)
1.若输入的值是-125,以下程序的运行结果是 -5*5*5__。
#include
int n;
scanf(“%d”,&n); printf(“%d=”,n);
if(n<0) printf(“-”); n=fabs(n); fun(n); }
fun(int n) {
int k,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() { int i=2,x=5,j=7; fun(j,6); printf(“i=%d;j=%d;x=%d\\n”,i,j,x); } fun(int i,int j) { int x=7; printf(“i=%d;j=%d;x=%d\\n”,i,j,x); }
3.以下程序的运行结果是 111__。 main() { increment(); increment(); increment(); } increment() { int x=0; x+=1; printf(“%d”,x); }
4.以下程序的运行结果是 max is 2_。 #include
5.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别
显示出“This is YES.”与“This is NO.”。请填空。
#include
6.以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的
数及其个数。请选择填空。
sub(int k,int n) { int a1,a2; a2=【1】__C__; a1=k-【2】__A__; if((k%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(“%d”,k); n++; return n; } else return -1; } main() { int n=0,k,m; for(k=10;k<=99;k++) { m=sub(k,n); if(m!=-1) n=m; }