的第10个元素。
17. ( )引用数组元素时,其数组下标的数据类型允许
的一维数组时,便构成二维数组
如有定义int a[3][4]={0}; 则数组a的所有的是:整型常量或整型表达式。
18. ( )若有int a[10]={6,7,8,9,10};,则是将5个
初值依次赋给a[0]至a[4]。
19. ( )一个一维数组,它的每一个元素也是类型相同
的一维数组时,便构成二维数组。
20. ( )在C语言中,允许用字符串来直接初始化字符
数组。
21. ( )字符数组的输出不能一次性的整体输出。 22. ( )使用strcat函数可以实现两个字符串的复制。三、多选题
1、 以下关于数组的描述中,正确的有:( )。
在定义数组时,有时可以将该数组的维数省略 数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值
构成数组的各个元素可以有不同的数据类型 有定义:int a[3]; 则定义了a[0]、a[1]、a[2]三个数组元素
在程序中可以对数值数组中的数据进行整体使用
以下关于数组的描述中,错误的有:( )。
引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式
可以通过数组名来整体引用一个数组
在程序中可以对数值数组中的数据进行整体使用
若有说明:int a[10];,则可以a[10]引用数组a的第9个元素
若有说明:int a[10];,则可以a[10]引用数组a的第10个元素
以下关于数组的描述中,错误的有:( )。
可以通过如下语句来完成对一个数组的输入:int a[10]; scanf(\
可以通过如下语句来完成对一个数组的输入:int a[10]; scanf(\ 若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]
数组元素可以像普通变量一样使用 int a[9]; 则数组a的下标范围是1-9
2、 以下关于数组的描述中,正确的有:( )。
数组名实质上是数组的首地址,是一个常量,不能对其赋值
在定义数组时,有时可以将该数组的维数省略 一个一维数组,它的每一个元素也是类型相同元素初值均为0
可以通过数组名来整体引用一个数组
3、 以下关于数组的描述中,错误的有:( )。
如有定义int a[2][3];则数组a的最后一个元素为a[1][2]
一个一维数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组
若有说明:static int a[3][3]; 那么数组a中每个元素初值为0
在定义二维数组时,可以将该数组的两个维数全部省略
如有定义char a[20]; 则可以通过a=\boy\给a赋值 若有说明:int a[][4]={0,0};,则下面正确的叙述有:( )。
数组a的每个元素都可得到初值0 二维数组a的第一维大小为1
因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1
只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值
只有元素a[1][1]和a[1][2]可得到初值0,其余元素均得不到初值
4、 以下关于数组的描述中,正确的有:( )。
若有定义char a[]=\,则数组a的长度为6
有定义char a[3]; 则定义了a[1]、a[2]、a[3]三个数组元素
构成字符数组的各个元素必须是字符类型的数据
可以通过数组名来整体引用一个数组
设有数组定义char array [ ]=\则数组array所占的空间为5个字节 以下关于数组的描述中,正确的有:( )。
在C语言中,允许用字符串来直接初始化字符数组
若有定义char a[20];,则可以通过a=\boy\给a赋值 若有char a[10]={1,2,3};,则是将3个初值依次赋给a[1]至a[3]
构成字符数组的各个元素必须是字符类型的数据
数组名实质上是数组的首地址,是一个常量,
不能对其赋值
5、 以下关于数组的描述中,错误的有:( )。
字符数组的输出不能一次性的整体输出 若有char a[10]={1,2,3};,则是将3个初值依a[10]=2; a[0]=5*2;
a[1]=a[2]*a[0]; a[2]=a[1]+a[0];
次赋给a[0]至a[2]
构成字符数组的各个元素可以是不同数据类型的元素
构成字符数组的各个元素必须是字符类型的数据
若有定义char b[]=\,则数组b的长度为6
下列语句中,正确的有:( )。
char str[5]=\
char str[]={'h','e','l','l','o','\\0'}; char str[5]={\char str[100]=\char str[3]=\函数调用strcat(strcpy(str1,str2),str3)的功能,以下说法错误的有:( )。
将串str1复制到串str2中后在连接到串str3之后
将串str1连接到串str2之后再复制到串str3之后
将串str2复制到串str1中后再将串str3连接到串str1之后
将串str2连接到串str1中后再将串str1复制到串str3中
将串str2连接到串str1中后再将串str3复制到串str1中
以下关于数组的描述中,正确的有:( )。
在定义数组时,有时可以将该数组的维数省略
数组元素可以像普通变量一样使用
若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]
如有定义char a[]=\则数组a的长度为7
若有定义double x[3][5]; 则x数组中行下标的下限为0,列小标的上限为4
定义了一维int型数组a[10]后,下面正确的引用有:( )。
a[0]=1;
第8章 函 数
一、选择题
1. 若调用一个函数,且此函数中没有RERUrn语句,则
关于该函数正确的说法是:( ) A. 没有返回值
B. 返回若干个系统默认值
C. 能返回一个用户所希望的函数值 D. 返回一个不确定的值
2. 在c语言中以下不正确的说法是:( )
A. 实参可以是常量、变量、或表达式 B. 形参可以是常量、变量或表达式 C. 实参可以为任意类型
D. 形参应与其对应的实参类型一致
3. 以下程序有语法性错误,有关错误原因的正确说法
是:( ) main()
{ int G=5,k;
void prt_char(); ??
k=prt_char(G); ??}
A. 语句void prt_char();有错,它是函数调用语
句,不能用void说明 B. 变量名不能使用大写字母
C. 函数说明和函数调用语句之间有矛盾 D. 函数名不能使用下划线 以下正确的说法是:( ) A. 函数的定义可以嵌套,但函数的调用不可以嵌
套
B. 函数的定义不可以嵌套,但函数的调用可嵌套 C. 函数的定义和调用均不可以嵌套 D. 函数的定义和调用均可以嵌套
若使用一个数组名作函数实参,则以下正确的说法是:( )
A. 必须在主调函数中说明此数组的大小 B. 实参数组类型与形参数组类型可以不匹配 C. 在被调用函数中,不需要考虑形参数组的大小 D. 实参数组名与形参数组名必须一致
4. 在一个函数内部定义的变量是:( )
A、 简单变量 B、 局部变量 C、 全局变量 D、 标准变量
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:( )
A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 5. 已定义以下函数
fun(int*p) { return *p; } 该函数的返回值是:( )
A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值D)形参p的地址值 6. 以下所列的各函数首部中,正确的是:( ) A、 void play(var :Integer,var b:Integer) B、 void play(int a,b) C、 void play(int a,int b)
D、 Sub play(a as integer,b as integer)
7. 当调用函数时,实参是一个数组名,则向函数传送
的是:( )
A、 数组的长度 B、 数组的首地址
C、 数组每一个元素的地址D、 数组每个元素中的值 8. 在调用函数时,如果实参是简单变量,它与对应形
参之间的数据传递方式是:( )
A、地址传递 B、 单向值传递C、 由实参传给形参,再由形参传回实参D、 传递方式由用户指定 以下函数值的类型是:( )
fun ( float x ) { float y;
y= 3*x-4; return y; }
A、 int B、 不确定C、 void D、 float 下列函数的功能是:( ) int fun1(chat* x) { char *y=x;
while(*y++); return(y-x-1); }
A)求字符串的长度 B、比较两个字符串的大小
C、将字符串X复制到字符串Y D、将字符串X连接到字符串Y后面
9. 下面程序的输出结果是:( ) void prty(int * x)
{ printf(\main()
{ int a=25; prtv(&a); }
A、23 B、24 C、25 D、26 10. 以下对C语言函数的有关描述中,正确的是:( )
A、只能把实参的值传送给形参,形参的值不能传送给实参
B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数 D、C程序中所有函数都可以嵌套调用 11. 以下叙述中不正确的是:( )
A)在C中,函数体中定义的动态变量可以赋初值,每调用一次,赋一次初值.
B、 在C中,函数体中定义的静态变量可以赋初值,每调用一次,赋一次初值.
C、 在C中,局部变量的隐含类别是自动存储类别. D)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容. 以下叙述中不正确的是:( )
A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有
效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
12. 有以下程序
void fun (int a,int b,int c) { a=456; b=567; c=678;} main()
{ int x=10, y=20,z=30; fun (x,y,z);
printf(\输出结果是:( )
A、30,20,10 B、10,20,30 C、456,567,678 D、678,567,456 13. 有以下程序 ( )
int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main()
{ int a, b, c, d; a=30; b=50; fun(a,b,&c,&d);
printf(\输出结果是:( )
A、50,30 B、30,J50 C、80,-20 D、80,20 下列程序执行后的输出结果是 ( )。
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、 6 B、 7 C、 8 D、 9 14. 一个完整的可运行的C源程序中,( )。
A、 可以有一个或多个函数 B、 必须有且仅有一个主函数 C、 可以没有主函数
D、 必须有主函数和其他函数
下述函数定义形式正确的是( )。 A、 int f(int x; int y) B、 int f(int x,y) C、 int f(int x, int y) D、 int f(x,y: int) 关于函数参数,说法正确的是( )。
A、 实参与其对应的形参各自占用独立的内存单元 B、 实参与其对应的形参共同占用一个内存单元 C、 只有当实参和形参同名时才占用同一个内存单元 D、 形参是虚拟的,不占用内存单元 一个函数的返回值由( )确定。
A、 return语句中的表达式 B、 调用函数的类型 C、 系统默认的类型 D、 被调用函数的类型 15. 以下叙述中正确的是( )。
A、 C语言程序总是从第一个定义的函数开始执行 B、 在C语言程序中,要调用的函数必须在main()函数中定义
C、 C语言程序总是从main()函数开始执行
D、 C语言程序中的main()函数必须放在程序的开始部分 16. 以下函数
fff(float x)
{ printf(“%d\\n”,x*x); } 的类型是( )。
A、 与参数x的类型相同 B、 void类型C、 int类型 D、 无法确定
以下对C语言函数的描述中,正确的是( )。
A、 C程序由一个或一个以上的函数组成 B、 C函数既可以嵌套定义又可以递归调用 C、 函数必须有返回值,否则不能使用函数
D、 C程序中调用关系的所有函数必须放在同一个程序文件中
以下叙述中不正确的是( )。
A、 在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B、 在C的函数中,最好使用全局变量
C、 在C语言中,形式参数只是局限于所在函数 D、 在C语言中,函数名的存储类别为外部
在一个源文件中定义的外部变量的作用域为( )。A、 本文件的全部范围 B、 本程序的全部范围 C、 本函数的全部范围
D、 定义该变量的位置开始至本文件结束 17. 有以下函数调用语句:
func((exp1,exp2),(exp3,exp4,exp5)); 其中含有的实参个数和是( )。 A、 1 B、 2 C、 4 D、 5
18. C语言中形参的默认存储类别是( )。
A、 自动(auto) B、 静态(static)
C、 寄存器(register) D、 外部(extern) 19. 以下正确的函数形式是( )。
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; }
20. 在一个源程序文件中定义的全局变量的有效范围为
( )。
A、 一个C程序的所有源程序文件 B、 该源程序文件的全部范围
C、 从定义处开始到该源程序文件结束 D、 函数内全部范围
21. 下列函数中,能够从键盘上获得一个字符数据的函
数是( )。
A、 puts( ) B、 putchar( ) C、getchar( ) D、 gets( )
22. 以下程序的输出结果是( )。
fun(int a,int b,int c) {c=a+b;} main() { int c; fun(2,3,c);
printf(“%d\\n”,c);} A、 2 B、 3 C、 5 D、 无定值 23. 分析以下程序的运行结果( )。
func(int a,int b) {
int temp=a; a=b; b=temp;} main() { int x,y; x=10; y=20; func(x,y);
printf((“%d,%d\\n”,x,y); }
A、 10,20 B、 10,10 C、 20,10 D、 20,20 24. 下面程序的输出是( )。
fun(int x)
{static int a=3;
a+=x; return(a);} main()
{ int k=2,m=1,n; n=fun(k); 2、 ( )在C语言中,函数体中变量的隐含存储类别是
自动变量auto。 3、 ( )return语句作为函数的出口,在一个函数体内
只能有一个。 4、 ( )在C程序中,函数不能嵌套定义,但可以嵌套
调用。
5、 ( ) C语言的源程序中必须包含库函数。 6、 ( )在C程序中,函数调用不能出现在表达式语句
中。 7、 ( )在C函数中,形参可以是变量、常量或表达式。 n=fun(m);
printf(“%d”,n);} A、 3 B、 4 C、 6 D、 9 以下程序输出的结果是( )。
int func(int a,int b) {return(a+b);} main()
{int x=2,y=5,z=8,r;
r=func(func(x,y),z); printf(“%d\\n”,r);} A、 12 B、 13 C、 14 D、 15 以下程序的输出结果是( )。
int a,b void fun()
{a=100; b=200;} main()
{int a=5,b =7;
fun();
printf(“%d%d \\n”,a,b); A、 100200 B、 57 C、 200100 D、 75
以下程序的输出结果是( )。
int x=3; main() { int i;
for(i=1;i {static int x=1; x*=x+1; printf(“%d”,x);} A、 33 B、 22 C、 26 D、 25 判断题 1、 ( ) 函数定义void max(int a,int b)表示该函 数的返回值不确定。 8、 ( )在主函数main( )中定义的变量都可以在其它 被调函数中直接使用。 9、 ( )在C语言中,一个函数一般由两个部分组成, 它们是函数说明和函数体。 10、 ( )C语言程序中的main( )函数必须放在程序的 开始部分。 11、 ( )若定义的函数没有参数,则函数名后的圆括 号可以省略。 12、 ( )函数的函数体可以是空语句。 13、 ( )函数的实参和形参可以是相同的名字。 14、 ( )函数调用中,形参与实参的类型和个数必须保 持一致。 15、 ( )C语言中函数返回值的类型由return语句中 的表达式的类型决定。 16、 ( )外部类型的变量只能定义一次,但可在不同 地方声明多次。 17、 ( )外部类型的变量作用范围大,编程中应多用 外部变量。 三、多选题 1. 以下叙述中正确的有( )。 一个C语言程序有且仅有一个main函数 C语言程序中,main函数是没有参数的 一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用 main函数是由系统调用的 若要通过函数参数带回多个返回值,则应使用按地址传送的参数结合方式 下面叙述中,正确的有( )。 函数的定义不能嵌套,但函数调用可以嵌套 为了提高可读性,编写程序时应该适当使用注释 变量定义时若省去了存储类型,系统将默认其为静态型变量 函数中定义的局部变量的作用域在函数内部 函数必须有返回值,否则不能使用函数