文档库 最新最全的文档下载
当前位置:文档库 › c语言习题哟7

c语言习题哟7

第七章

TYPE=02 AND KENID=33000007
<<<
4,3
C

关于函数的定义,以下正确的描述是________。
(A) 如果函数不返回值,可以省略类型说明符
(B) 可以在同一程序中定义同名的函数,只要保证它们的返回值类型或形参列表不相同即可
(C) 同一函数中的形参名必须唯一,但可以与其他函数中的变量同名
(D) 如果函数体为空,则函数最外层的一对花括号可以省略
>>>
<<<
4,3
A

若有函数定义:int fun(){double x=23.5; return x;},则函数的返回结果是________。
(A) 23 (B) 23.0 (C) 23.5 (D) 24
>>>
<<<
4,3
A

在函数调用过程中,如果函数A调用函数B,函数B又调用函数A,则这种函数调用被称为________。
(A) 间接递归调用 (B) 直接递归调用 (C) 间接循环调用 (D) 直接循环调用
>>>
<<<
4,3
D

以下程序的输出结果是________。
#include
int fun(int x){return ++x;}
void main(){
int i=0;
while(fun(i)<10) i++;
printf("%d\n",i);
}
(A) 11 (B) 10 (C) 8 (D) 9
>>>
<<<
4,3
B

关于函数调用时的参数传递,以下错误的描述是________。
(A) 实参可以是常量、变量或表达式
(B) 形参可以是常量、变量或表达式
(C) 实参与形参的个数相等、类型一致
(D) 实参必须有确定的赋值
>>>
<<<
4,3
D

若有以下程序,则下划线所在位置应填入的语句是________。
#include
void main(){
double res;
__________
res=fun(3.7f,4.5f);
printf("%f\n",res);
}
double fun(float x,float y) {return x*y;}
(A) double fun(float); (B) double fun();
(C) float fun(float,float); (D) double fun(float,float);
>>>
<<<
4,3
D

用一维数组名作为函数的实参时,传递给对应形参的是________。
(A) 整个数组 (B) 第一个数组元素的地址
(C) 数组的首地址 (D) (B)和(C)都是正确的
>>>
<<<
4,3
C

以下程序的输出结果是________。
#include
void fun(int b[5],int n){
int i,t;
for(i=0;i}
void main(){
int a[5]={9,7,5,3,1},i;
fun(a,5);
for(i=0;i<5;i++) printf("%d ",a[i]);
}
(A) 1 3 5 7 9 (B) 3 1 9 7 5 (C) 9 7 5 3 1 (D) 编译时报错
>>>
<<<
4,3
B

在C语言程序中定义全局变量,如果该变量使用关键字static作为存储类别说明符,则它的作用域是________。
(A) 整个程序范围 (B) 定义该变量的源文件范围
(C) main函数内部 (D) 从定义该变量的位置开始直至程序结束
>>>
<<<
4,3
A

若有数组定义语句int a[6];和函数调用语句fun(a); 则在fun函数的定义中,对形参数组array的错误定义方式是________。
(A) void fun(int array[int N=6])
(B) void fun(int array[10])
(C) void fun(int array[])
(D) void fun(int

array[3])
>>>
<<<
4,3
C

以下程序执行完毕后,变量res的值是________。
#include
int X=35;
int fun(int n){
int X=15;
return X%n?++X:--X;
}
void main(){
double res;
res=X/fun(3);
}
(A) 1.0 (B) 2.1875 (C) 2.0 (D) 2.5
>>>
<<<
4,3
D

以下说法正确的是________。
(A) 在函数中可以使用多条return语句来返回多个处理结果
(B) 在函数中最多只能有一条return语句
(C) 一个函数不可能既是被调用函数,又是主调函数
(D) 如果函数值的类型与返回值的类型不一致,以函数值类型为准
>>>
<<<
4,3
B

以下程序执行完毕后,变量s的值是________。
#include
int fun(int n){
static int k=1;
k*=n;
return k;
}
void main(){
int i,s=0;
for(i=1;i<5;i++) s+=fun(i);
}
(A) 10 (B) 33 (C) 15 (D) 153
>>>
<<<
4,3
D

以下程序的输出结果是________。
#include
int fun(int n){
if(n==2) return n;
else return n*fun(n-2);
}
void main(){printf("%d\n",fun(7));}
(A) 105 (B) 2 (C) 35 (D) 递归无法正常结束
>>>
<<<
4,3
C

以下说法错误的是________。
(A) 局部变量使用static作为存储类别说明符,其生存期将得到延长
(B) 自动变量一定是局部变量
(C) 全局变量使用static作为存储类别说明符,其作用域将被扩大
(D) 寄存器变量的分配方式采用动态分配
>>>
<<<
4,3
A

下列程序在运行时,若通过键盘输入的数据为“24”,则输出结果是________。
#include
int isprime(int n){
int i;
for(i=2;i<=n/2;i++) if(n%i==0) return 0;
return 1;
}
int fun(int n){
int i;
for(i=3;i<=n/2;i++) if(isprime(i)&&isprime(n-i)) return i;
return 0;
}
void main(){
int x; scanf("%d",&x);
if(x%2==0&&x>=6) printf("%d,%d\n",fun(x),x-fun(x));
}
(A) 5,19 (B) 7,17 (C) 0,0 (D) 11,13
>>>
<<<
4,3
B

以下说法正确的是________。
(A) 在函数定义时,如果不明确指定函数的返回值类型,则默认返回值类型为“void”
(B) 所有的函数都是平行的,一个函数并不从属于另一个函数
(C) 属于一个C语言程序的不同文件中不允许定义同名的全局变量
(D) 函数被调用时形参才分配存储单元,函数调用结束后形参不释放占据的存储单元
>>>
TYPE=04 AND KENID=33000007
<<<
2,3
B

在C语言中定义无参函数时,函数名后的一对圆括号可以保留,也可以省略。
>>>
<<<
2,3
A

被调用函数执行过程中形参值的变化不会影响主调函数中的实参值。
>>>
<<<
2,3
B

以下函数的功能是计算1+1/2+1/3+...+1/n。
double fun(int n){
int i; double s=0.0;
for(i=1;i<=n;i++) s+=1/i;
return s;
}
>>>
<<<
2,3
B

如果被调用函数的定义出现在主调函数之前,必须使用函数原型对其进行声明。
>>>
<<<


2,3
A

以下程序的输出结果是:2 3 4 5 6 7。
#include
void fun(int b[3]){
int i;
for(i=0;i<6;i++) b[i]++;
}
void main(){
int a[6],i;
for(i=0;i<6;i++) a[i]=i+1;
fun(a);
for(i=0;i<6;i++) printf("%d ",a[i]);
}
>>>
<<<
2,3
A

在函数中使用全局变量,可以得到一个以上的处理结果。
>>>
<<<
2,3
B

C语言不允许嵌套定义函数,因此在main函数内部不可能出现“double fun(int a,float b);”这样的语句。
>>>
<<<
2,3
A

在定义静态局部变量时如果不对其进行初始化,则系统会自动为该变量赋默认初值。
>>>
<<<
2,3
B

以下程序的功能是输出二维数组中每行元素的平均值,则在下划线所在位置应填入的代码是“avg(x)”。
#include
double avg(int a[5]){
int i; double s=0;
for(i=0;i<5;i++) s+=a[i];
return s/5;
}
void main(){
int x[3][5]={{8,12,1,7,5},{4,14,6},{2,9,3,3}},i;
for(i=0;i<3;i++) printf("%f\n",__________);
}
>>>
<<<
2,3
A

以下函数的功能是输出m和n(m>n)两个正整数的最大公约数,则在下划线所在位置应填入的代码是“gcd(n,m%n)”。
int gcd(int m,int n){
if(n==0) return m;
else return __________;
}
>>>
<<<
2,3
A

若有函数定义:static int fun(){......},表明fun函数只能被所在文件内的函数调用,而不能被其他文件内的函数所调用。
>>>
TYPE=01 AND KENID=33000007
<<<
1,3
嵌套调用

在一个函数调用过程中又调用另一个函数称为函数的【 】。
>>>
<<<
1,3
s+=t*i

以下程序的功能是输出1-3+5-7+...+45-47+49的运算结果,请填空。
#include
int fun(int n){
int s=0,t=1,i;
for(i=1;i<=n;i+=2) {【 】; t=-t;}
return s;
}
void main(){printf("%d\n",fun(50));}
>>>
<<<
1,3
fun(a[i])

以下程序的功能是将二维数组中每行的最大值与该行的第一个元素进行互换,请填空。
#include
void fun(int x[4]){
int m,i;
for(m=0,i=1;i<4;i++) if(x[m]if(m!=0) {i=x[m];x[m]=x[0];x[0]=i;}
}
void main(){
int a[3][4]={{6,9,15,10},{24,17,8,16},{33,29,7,40}},i;
for(i=0;i<3;i++) 【 】;
}
>>>
<<<
1,3
8

以下程序执行完毕后,变量x的值是【 】。
#include
int fun(int n){return n>2?fun(n-1)+fun(n-2):1;}
void main(){int x=fun(6);}
>>>
<<<
1,3
4 5 6 1 2 3

以下程序在运行时,如果通过键盘输入“1 2 3 4 5 6”,则输出结果是【 】。
#include
#define N 6
int cnt=0;
void fun(int n){while(cntvoid main(){
int a[N],i,t;
for(i=0;ifun(N-1);
for(i=cnt;i>=0;i--) {t=a[i]; a[i]=a[i+N/2]; a[i+N/2]=t;}
for(i=0;i}
>>>
<<<
1,3
s+=fun1(i)

以下程序的功能是输出1+(1+2)+(1+2+3)+(1+2+3+4)的运算结果,请填空。
#include
int fun1(int i){
static int s=0;
s+=i;
return s;
}
int fu

n2(int i){
static int s=0;
【 】;
return s;
}
void main(){
int i,s;
for(i=1;i<5;i++) s=fun2(i);
printf("%d\n",s);
}
>>>
<<<
1,3
9 4 5 8 7

以下程序的输出结果是【 】。
#include
int t=0;
void fun(int x){
int a[5],i,j;
a[t++]=x;
if(t==5)
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i]>a[j]) {t=a[i]; a[i]=a[j]; a[j]=t;}
}
void main(){
int a[5]={9,4,5,8,7},i;
for(i=0;i<5;i++) fun(a[i]);
for(i=0;i<5;i++) printf("%d ",a[i]);
}
>>>

相关文档