C语言函数练习题及答案Word文件下载.docx
《C语言函数练习题及答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言函数练习题及答案Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
函数未被调用时,系统将不为形参分配内存单元;
B、?
实参与形参的个数必须相等,且实参与形参的类型必须对应一致;
当形参是变量时,实参可以是常量、变量或表达式;
如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;
2.5分B得分:
我的答案:
5
【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是?
实参与其对应的形参共享内存存储单元;
、B?
只有当实参与其对应的形参同名时才共享内存存储单元;
C、?
实参与对应的形参分别占用不同的内存存储单元;
实参将数据传递给形参后,立即释放原先占用的内存存储单元;
C得分:
6
【单选题】实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?
函数调用时,、A?
实参将地址传递给形参,并释放原先占用的存储单元;
实参将地址传递给形参,调用结束时形参再将此地址回传给实参;
实参将值传递给形参,调用结束时形参再将其值回传给实参;
实参将值传递给形参,调用结束时形参并不将其值回传给实参;
D得分:
7
若用数组名作为函数调用的实参,则传递给形参的是?
A、?
数组第一个元素的地址;
数组的第一个元素的值;
数组中所有元素的值;
数组元素的个数;
分2.58
语言规定了程序中各函数之间调用关系,以下说法正确的是?
【单选题】CA、?
既允许直接递归调用也允许间接递归调用;
不允许直接递归调用也不允许间接递归调用;
允许直接递归调用不允许间接递归调用;
不允许直接递归调用允许间接递归调用;
A我的答案:
分得分:
2.59
【单选题】的递归体是?
f(n)=f(n-1)+n(n>
1)递归函数A、?
f
(1)=0
B、?
f(0)=1?
f(n)=f(n-1)+n?
f(n)=n?
分2.5我的答案:
10
【单选题】若函数的形参为一维数组,则下列说法中正确的是()。
使用函数时的对应实参必为数组名。
形参数组可以不指定大小。
形参数组的元素个数必须等于实参数组的元素个数。
形参数组的元素个数必须多于实参数组的元素个数。
B得分:
11
,则funAfunB又调用了函数funB,在函数调用过程中,如果函数funA调用了函数函数()。
为函数的直接递归调用
称为函数的间接递归调用?
为函数的循环调用
语言中不允许这样的递归调用C?
分得分:
2.5我的答案:
B12
【单选题】有以下函数定义:
{……}voidfun(intn,doublex)
的正确调用语句是()。
下选项中的变量都已正确定义并赋值,则对函数fun
y,doublem);
fun(int
k=fun(10,12.5);
fun(x,n);
fun(n,x);
void
2.5C我的答案:
13
【单选题】的正确定义farrayf已有以下数组定义和函数的说明中,对形参数组函数调用语句,则在。
方式为______inta[3][4];
f(a);
array[][6])f(int
array[3][])f(int
array[][4])f(int
D、?
array[2][5])f(int
2.5得分:
C我的答案:
分14
【单选题】若程序中定义函数floatfadd(floata,floatb){returna+b;
}以下说明中错误并将其放在调用语句之后,则在调用之前应对该函数进行说明。
的是?
a,b);
fadd(floatfloat
a);
floatfadd(floatb,float
float);
fadd(float,float
b)float;
floatfadd(floata,
15
【单选题】下面程序段运行后的输出结果是?
(假设程序运行时输入5回车),3inta,b;
voidswap(){
intt;
t=a;
a=b;
b=t;
}voidmain(){
inta,b;
scanf(%d,%d,&
a,&
b);
swap();
printf(a=%d,b=%d\n,a,b);
}
a=5,b=3?
a=3,b=5?
5,3?
3,5?
2.5分16
【单选题】?
以下程序运行后的输出结果是intfun(intx,inty){if(x>
y)
returnx;
else
returny;
intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf(%d\n,r);
}
3
6?
8?
12?
D我的答案:
2.5得分:
分17
【单选题】下列程序的输出结果是()。
椣据畬敤尠瑳楤?
屨voidfun(inta,intb,intc){c=a*b;
}main()int
{intc;
fun(2,3,c);
printf(%d\n,c);
return0;
0?
无法确定?
分18
【单选题】)。
有以下程序,运行后的输出结果是(#include<
stdio.h>
floatfun(intx,inty){return(x+y);
}voidmain(){inta=2,b=5,c=8;
-c));
n”,fun((int)fun(a+c,b),a\printf(“%3.0f};
编译出错?
9?
21?
9.0?
分0.0得分:
19
【单选题】以下描述正确的是?
调用函数时的实参只能是有确定值的变量;
语句的括号中,可以是变量、常量或有确定值的表达式;
return()?
语言中,函数调用时实参和形参间的参数传递方式不都是值传递;
C?
实参和形参若类型不匹配,编译时将报错;
2.5B我的答案:
20
【单选题】已有以下代码#include<
inta=6,b=3;
intmain()
{inta=8;
printf(%d\n,(a>
b?
a:
b));
}则程序的输出结果是()?
3?
、C?
36;
21
f()
{
staticintx=1;
x-=1;
printf(%d,,x);
inti;
for(i=0;
i<
4;
i++)
f();
}则程序的输出是:
()?
2,3,41,
0,1,2,3,?
0,-1,-2,-3,?
-1,-2,-3,-4,?
分2.5我的答案:
C22
【单选题】语言程序的基本单位是?
函数?
过程?
子程序?
源程序文件?
得分:
2.5分A我的答案:
23
【单选题】以下说法中正确的是?
;
语言程序总是从第一个定义的函数开始执行C
函数中定义;
C语言程序中,要调用的函数必须在main()、C?
函数开始执行;
总是从main()D、?
函数必须放在程序的开始部分;
main()2.5分C我的答案:
24
【单选题】在函数调用时,以下说法正确的是?
函数调用后必须带回返回值;
实际参数和形式参数可以同名;
函数间的数据传递不可以使用全局变量;
主调函数和被调函数总是在同一个文件里;
2.5分得分:
B25
【填空题】
下面程序段运行后的输出结果是:
_______
(假设程序运行时输入5,3回车)
voidswap(inta,intb){
intt;
t=a;
a=b;
b=t;
inta,b;
scanf(%d,%d,&
swap(a,b);
printf(a=%d,b=%d\n,a,b);
我的答案:
分0.0第一空:
a=3,b=5
批语26
【填空题】元,其余员工3100以下程序的功能是用递归方法计算工资,已知第一位员工工资最少,为位员工的工资。
请填空。
500元,求第5工资一个比一个多salary(intn){;
ints)n==1if(;
s=3100else;
;
s=salary(n-1)+500;
returns}()voidmain{;
intn=5);
“sararyprintf(:
%d\n”,______}
分2.5第一空:
salary(5)
批语27
【填空题】_______分析以下程序的运行结果是#include“stdio.h”func(inta,intb){intc;
c=a+b;
returnc;
}intmain(){intx=6,y,r;
y=x+2;
r=func(x++,y);
printf(%d%d%d\n,x,y,r);
分我的答案:
2.5第一空:
7814
批语28
【填空题】有如下程序longfib(intn){if(n>
2);
return(fib(n-1)+fib(n-2))else;
return2}intmain(){;
牰湩晴尨搥屜屮,fib(3))}该程序的输出结果是_______。
第一空:
批语
29
【填空题】。
以下程序的输出结果是________intn),f(intb[],intm{;
,intis=0i=i+2);
for(i=m;
i<
n;
s=s+b[i];
returns}intmain(){;
,89}753a[]={1intx,,2,,4,,6,,;
,7)x=f(a,3;
,牰湩晴尨搥屜屮x)}
第一空:
批语30
以下程序的输出结果是_____#include<
intfac_sum(intn){;
staticintf=1,t=1,s=0;
inti;
if(n>
t)for(i=t+1;
=n;
i++)f=f*i;
else{f=1;
for(i=1;
}t=n;
s=s+f;
return(s);
}voidmain(){inta[]={3,5,2},i,sum;
for(i=0;
3;
i++)sum=fac_sum(a[i]);
n”,sum);
printf(“sum=%d\
sum=128
31
以下程序的运行结果是________#include<
intn=1;
voidmain()
staticintx=5;
voidfunc();
y=n;
inty;
printf(MAIN:
x=-y=-n=-\n,x,y,n);
func();
voidfunc()
staticintx=4;
inty=10;
x=x+2;
n=n+10;
y=y+n;
printf(FUNC:
}我的答案:
MAIN:
x=5y=1n=1FUNC:
x=6y=21n=11MAIN:
x=5y=1n=11FUNC:
x=8y=31
n=21
32
_______10输入一个整数,以下程序的运行结果是#include<
intsub(int);
inta,e[10],c,i=0;
\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]);
intsub(inta)
intc;
c=a%2;
returnc;
};
1010
批语33
以下程序的运行结果是______#include<
voidfun();
for(i=0;
i++)
fun();
voidfun()
staticintx=0;
x+=1;
printf(=,x);
第一空:
123
批语34
________以下程序的运行结果是#include<
intworkover(inti);
intreset(inti);
inti=0;
inti=5;
reset(i/2);
printf(i=%d\n,i);
reset(i=i/2);
workover(i);
intworkover(inti)
i=(i%i)*((i*i)/(2*i)+4);
returni;
intreset(inti)
i=i<
=2?
5:
i=5i=2i=2i=0i=2
批语35
【判断题】函数调用时值传递方式特点:
形参与实参占用相同的内存单元,单向传递。
×
2.536
【判断题】函数定义与函数说明不是同一个概念。
√我的答案:
2.537
【判断题】语言中,函数的定义不能嵌套,而调用是可以嵌套的。
c√分2.5我的答案:
38
【判断题】函数调用时值传递特点:
无论是值传递还是地址传递,都是单向的。
√2.5我的答案:
分;
39
【判断题】
函数调用时,当数组名作函数参数时,实参数组值与形参数组值不同。
分40
函数。
main一个C程序可以由一个或多个函数组成,其中必须有且只有一个√分我的答案:
2.5