第5章作业题
一、单项选择题
1.以下叙述不正确的是( B )。
A. 一个C源程序可由一个或多个文件组成
B. C程序中,注释说明只能位于语句的后面
C. 在对一个C程序进行编译时,编译系统不能发现注释中的拼写错误
D. 一个C源程序必须包含一个main函数
2.定义为void类型的函数,其含义是(C  )。
A. 调用函数后,被调用的函数的返回值为任意的类型
printf函数返回值
B. 调用函数后,被调用的函数不返回
C. 调用函数后,被调用的函数没有返回值
D. 以上三种说法都是错误的
3.在说明语句:int *f();中,标识符f代表的是( C )。
A. 一个用于指向整型数据的指针变量
B. 一个用于指向一维数组的行指针
C. 一个返回值为指针型的函数名
D. 一个用于指向函数的指针变量
4.下列说法中错误的是( B )。
A. 静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
B. 静态全局变量可以被其他的编辑单位所引用
C. 若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽
D. 所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失
5.下面对C语言的描述中,正确的是(A  )。
A. 在C语言中,调用函数时,只能将实参的值传递给形参
B. C语言函数既可以嵌套定义又可以递归调用
C. 函数一定有返回值,否则无法使用函数
D. C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
6.以下说法中不正确的是( B )。
A. 不同的函数中可以使用相同名字的变量
B. 主函数main()中定义的变量在整个文件或程序中有效
C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
7.以下说法中不正确的是( C )。
A. 主函数中定义的变量只在主函数内部有效
B. 形式参数是局部变量
C. 当全局变量与局部变量同名时,局部变量不起作用
D. 在函数内部定义的变量只在本函数范围内有效
8.下面关于全局变量的描述中,错误的是( B )。
A. 所有在函数体外定义的变量都是全局变量
B. 全局变量第一次被引用时,系统为其分配内存
C. 全局变量可以和局部变量的名称相同
D. 全局变量直到程序结束时才被释放
9.下面关于局部变量的描述中,错误的是( B )。
A. 函数的形式参数是局部变量
B. static型局部变量的作用域是当前文件
C. 在复合语句中定义的变量在本复合语句中有效
D. 不同函数中可以定义相同名称的局部变量
10.以下叙述中正确的是( D )。
A. 形参可以使用的存储类说明符与局部变量完全相同
B. 全局变量说明为static存储类,其作用域将被扩大
C. 任何存储类的变量在未赋初值时,其值都是不确定的
D. 局部变量说明为static存储类,其生存期将得到延长
11.下列对静态局部变量的叙述哪一个是不正确的( C )。
A. 静态局部变量在整个程序运行期间都不释放
B. 静态局部变量是在编译时赋初值的,故它只能被初始化一次
C. 在一个函数中定义的静态局部变量可以被另一个函数使用
D. 数值型静态局部变量的初值默认为0
13.下面函数的返回值类型是( C )。
fun(float x)
{ printf(“\n%d”,x*x); }
A. 与参数x的类型相同
B. void
C. int
D. 无法确定
14.下列程序运行后的输出结果是( C )。
sub(int x,int y,int *z)
{ *z=y-x; }
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
A. -5,-12,-7
B. 5,-2,-7
C. -5,-12,-17
D. 5,2,3
15.下面函数的功能是(D  )。
fun(char *p2, char *p1)
{ while((*p2=*p1)!=’\0’)
{ p1++; p2++; }
}
A. 检查p1和p2两个指针所指字符串中是否有’\0’
B. 将p1所指字符串的地址赋给指针p2
C. 对p1和p2两个指针所指字符串进行比较
D. 将p1所指字符串复制到p2所指内存空间
16.有以下程序:
int a=2;
int f(int n)
{ static int a=3;
int t=0;
if(n%2){ static int a=4; t+=a++;}
else { static int a=5; t+=a++;}
return t+a++;
}
main()
{ int s=a,i;
for(i=0;i<3;i++) s+=f(i);
printf("%d\n",s);
}
程序运行后的输出结果是(C  )。
A. 26
B. 28
C. 29
D.24
17.下列程序执行后的输出结果是( D )。
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0;
b[0]=3;
func(&a,b);
printf("%d\n",b[0]);
}
A. 9
B. 8
C. 7
D. 6
18.下面程序的输出结果是( B )。
fun3(int x)
{ static int a=3;
a+=x;
return a;
}
main()
{ int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
A. 9
B. 6
C. 4
D. 3
19.下列程序运行后的输出结果是( C )。
void swap1(int c0[],int c1[])
{ int t;t=c0[0];c0[0]=c1[0];c1[0]=t;}
void swap2(int *c0,int *c1)
{ int t;t=*c0; *c0=*c1; *c1=t;}
main()
{ int a[2]={3,5},b[2]={3,5};
swap1(a,a+1);
swap2(&b[0],&b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
A. 3 5 5 3
B. 3 5 3 5
C. 5 3 5 3
D. 5 3 3 5
20.有以下程序:
#include  <stdio.h>
void fun(char *c,int d)
{ *c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
main()
{ char b='a',a='A';
fun(&b,a);
printf("%c,%c\n",b,a);
}
程序运行后的输出结果是( C )。
A. a,B,B,a
B. b,B,B,A
C. b,B,b,A
D. a,B,a,B
21.下列程序运行后的输出结果是( C )。
#include <stdio.h>
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
A. 0
B. 10
C. 64
D. 30
22.有以下函数:
char *fun(char *p)
{ return p;}
该函数的返回值是( D )。
A. 无确定的值
B. 形参p自身的地址值
C. 一个临时存储单元的地址
D. 形参p中存放的地址值
24.设有如下函数定义:
int fun(int k)
{  if(k<1) return 0;
else if(k==1) return 1;
else return  fun(k-1)+1;
}
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( D )。A.2        B. 5      C. 4        D. 3
25.有以下程序:
#include  <stdio.h>
int f(int n);
main()
{ int s;
s=f(4); printf("%d\n",s);
}
int f(int n)
{ int s;
if(n>0) s=n+f(n-1);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。