七、函数
主要掌握的内容:函数的定义、函数的分类、函数调用、函数原型、变量的作用域和存储类型 ,这几个内容不仅是概念,同时要会用,并请看本章节知识小结与常见错误。在C语言中,值的传递是从实参向形参单向传递的。 1.C语言中函数返回值的类型是由 决定的.
A)函数定义时指定的类型 B) return语句中的表达式类型 C) 调用该函数时的实参的数据类型 D) 形参的数据类型 2. 在C语言中,函数的数据类型是指( )
A 函数返回值的数据类型 B. 函数形参的数据类型 C 调用该函数时的实参的数据类型 D.任意指定的数据类型 3.下列关于C语言函数的描述中,正确的是( )。 A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用都可以嵌套 D.函数的定义和函数的调用都不可以嵌套
4. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为
( )
A. 由系统选择 B. 单向值传递 C. 由用户指定传递方式 D. 地址传递 5. 在函数调用时,以下说法正确的是( ) A.函数调用后必须带回返回值 B.实际参数和形式参数可以同名
C.函数间的数据传递不可以使用全局变量 D.主调函数和被调函数总是在同一个文件里 6. 在C语言程序中,有关函数的定义正确的是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的均可以嵌套
A.在C语言程序中,调用函数时,如函数参数是简单变量,则只能把实参的B.C语言函数既可以嵌套定义又可递归调用 C.C语言函数必须有返回值,否则不能使用函数
D.在C语言程序中有调用关系的所有函数必须放在同一个源程序文件中
7. 以下对C语言函数的有关描述中,正确的是( )。 值传递给形参,形参的值不能传送给实参
8.C语言中对函数的描述正确的是 .
A)可以嵌套调用,不可以递归调用 B) 可以嵌套定义 C)嵌套调用,递归调用均可 D)不可以嵌套调用 9.以下叙述中正确的是
A) 构成C程序的基本单位是函数 B) 可以在一个函数中定义另一个函数 C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义
10.用数组名作为函数调用时的实参时,传递给形参的是 。
A)数组首地址 B)数组第一个元素的值 C)数组全部元素的值 D)数组元素的个数 13.以下程序段运行后变量n的值为()。 int i=3,n=1; for (;i<3;i++) n ++;
A.4 B.3 C.2 D.1 15. 有如下程序
int func(int a,int b) { return(a+b);} main()
{ int x=2,y=x,z=8,r;
r=func(func(x,y),func(y,z)); printf(“%d\\n”,r); } 该程序的输出的结果是 C
A) 12 B) 13 C) 14 D) 15 16. 以下程序的输出结果是
int a, b;
void fun()
{ a=100; b=200; } main()
{ int a=100, b=100;
fun();
printf(“%d%d \\n”, a,b); }
A) 100200
B) 100100
C) 200100
D) 200200
17. 下列说法中正确的是:( )
A. 局部变量在一定范围内有效,且可与该范围外的变量同名。 B. 如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,
局部变量不起作用。
C. 局部变量缺省情况下都是静态变量。
D. 函数体内的局部静态变量,在函数体外也有效。 18. 在C语言中,表示静态存储类别的关键字是: ( )
A) auto
B) register
C) static
D) extern
19.未指定存储类别的变量,其隐含的存储类别为( )。 A)auto B)static C)extern D)register 23. 以下所列的各函数首部中,正确的是()
A.void play(vat a:Integer,var b:Integer) B.void play(inta,b) C.void play(inta,int b) D.Sub play(a as integer,b as integer) 24.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(int) 25. 局部变量在一定范围内有效,且可与该范围外的变量(同名) 26. C语音总是从 ( main() )开始执行的。
27. 有如下函数调用语句:func(a1,a2+a3,(a4,a5));该函数调用语句中,含有的实参个数是( )个 八 数组
需要掌握的主要内容是:一维数组和二维数组的定义和初始化(注意:二维数组第二维的长度声明是永远不能省略的。二维数组在C编译程序时这其分配的连续存储空间是按行存放的。)向函数传递一维数组(若要把一个数组传递给一个函数,只需要将数组名作为函数实参调用函数即可。数组名代表的是数组第一人元素的地址。用数组名作为函数参数实际上是将数组的首地址传给被调函数。)同时请认真看本章节小节。
1. 以下对一维数组a的正确说明是:
A) char a(10);
B) int a[];
C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’}; 2.以下能对一维数组a进行初始化的语句是: ( ) A. int a[5]=(0,1,2,3,4,) B. int a(5)={} C. int a[3]={0,1,2} D. int a{5}={10*1} 3.在C语言中对一维整型数组的正确定义为 D 。 A)int a(10); B)int n=10,a[n];
C)int n;a[n]; D)#define N 10 int a[N];
4、已知:int a[10]; 则对a数组元素的正确引用是( )。
A、a[10] B、a[3.5] C、a(5) D、a[0]
5. 执行下面的程序段后,变量k中的值为 C
A) 不定值 B) 33 C) 30 D) 10 int k=3, s[2]; s[0]=k; k=s[0]*10; 6. 下列说法中错误的是
A 构成数组的所有元素的数据类型必须是相同的 B 用指针法引用数组元素允许数组元素的下标越界 C 一维数组元素的下标依次是1、2、3…… D 定义数组时的长度可以是整型常量表达式
7. 若有以下数组说明,则数值最大的和最小的元素下标分别是( )。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12 B.0,11 C.1,11 D.0,12 8.若有以下数组说明,则i=10;a[a[i]]元素数值是( )。 int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}; A.10 B.9 C.6 D.5
9. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组
x在内存中所占字节数是 A) 3 main()
{ int n[2]={0},i,j,k=2; for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1; printf(\}
11.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( )
A. 2 B. 3 C. 4 D.无确定值 12.以下定义语句中,错误的是 ( )
B) 6 C) 10 D) 20
10、以下程序的输出结果是(不确定的值)。
A) int a[]={1,2}; B) char *a; D) int n=5,a[n];
C) char s[10]=“test”; int i;
13.下面程序段的输出结果是: ( )
int x[3][3]={1,2,3,4,5,6,7,8,9};
for (i=0;i<3;i++) printf(\
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 14.对二维数组的正确定义是( )
A.int a[ ] [ ]={1,2,3,4,5,6}; B.int a[2] [ ]={1,2,3,4,5,6};
C.int a[ ] [3]={1,2,3,4,5,6}; D.int a[2,3]={1,2,3,4,5,6}; 15.已知int a[3][4];则对数组元素引用正确的是_____ A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1) 16.int a[10];合法的数组元素的最小下标值为(0)。 17. C程序在执行过程中,(不检查 )数组下标是否越界。 18. 在定义int n[5][6]后第10个元素是(n[1][3])。
19. 若用数组名作为函数的实参,传递给形参的是(数组的首地址 )。 20. 有定义语句int a[5],i;输入数组a的所有元素的语句应为(C)。 A.scanf(\,a[5]); B.scanf(\,a); C.for(i=0;i<5; i++) scanf(\,&a[i]); D.for(i=0;i<5; i++) scanf(\,a[i]);
21.若定义:char array[]=”China”; 则数组array所占用的空间为(6B)
22.在23.C
C语言中,数组要(先定义,后使用)。
语言中, (数组名)代表数组第一个元素的地址。
24.编程:1、显示具有n个元素的数组s中的最大元素。 2、编写一个程序,将数组a中的数据按逆序存放
一.单选题
1.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。 A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
2.以下程序的输出结果是()。 main()
{ int n[2]={0},i,j,k=2; for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1; printf(\}
A.不确定的值
B.3