第七章 数组
一、选择
1.若有定义:int a[10],则对数组a元素的正确引用是 。 A.a[10] B.a[3.5] C.a(5) D.a[10-10]
2.以下能对一维数组a进行正确初始化的语句是 。 A.int a[10]={0,0,0,0,0}; B.int a[10]={ } ; C.int a[ ] = {0} ; D.int a[10]={10*1} ; 3.若有定义:int a[3][4],则对数组a元素的正确引用是 。 A.a[2][4] B.a(2,2) C.a[1][3] D.a[10-10] 4.以下对二维数组进行正确初始化的是( )。 A.int a[2][3]={{1,2},{3,4},{5,6}}; B.int a[ ][3]={1,2,3,4,5,6}; C.int a[2][ ]={1,2,3,4,5,6}; D.int a[2][ ]={{1,2},{3,4}};
5.以下能对二维数组a进行正确初始化的语句是 。 A.int a[2][ ]={{1,0,1},{5,2,3}} ; B.int a[ ][3]={{1,2,3},{4,5,6}} ; C.int a[2][4]={{1,2,3},{4,5},{6}} ; D.int a[ ][3]={{1,0,1},{},{1,1}} ;
6.以下不能对二维数组a进行正确初始化的语句是 。 A.int a[2][3]={0} ;
B.int a[ ][3]={{1,2},{0}} ;
C.int a[2][3]={{1,2},{3,4},{5,6}} ; D.int a[ ][3]={1,2,3,4,5,6} ;
7.若有说明:int a[3][4]={0};则下面正确的叙述是 。 A.只有元素a[0][0]可得到初值0 B.此说明语句不正确
C.数组a中各元素都可得到初值,但其值不一定为0 D.数组a中每个元素均可得到初值0 8.下面程序段的输出结果是 。 int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 7
二、填空
1.C语言数组的下标总是从 开始,不可以为负数;构成数组各个元素具有相同的 。
2.在C语言中,二维数组的元素在内存中的存放顺序是 。
3.若有定义:double x[3][5],则x数组中行下标的下限为 ,上限为 ;列下标的下限为 ,上限为 ; 数组x中共存放 个数据元素。
4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为 ,a[2][1]得到的值为 。
三、补充程序
1. 数组元素的引用。使a[0]~a[9]的值为2,4,6,8,10,12,14,16,18,20,然后按顺序输出。
#include
int i,a[10];
for (i=0; i<=9;i++) a[i]= ; for(i=0; ; i++) printf(\ printf(\}
2. 从键盘任意输入某班15个学生的成绩,统计不及格学生的人数。 #include
int i; printf(\ for (i=0;i<15;i++)
scanf(\ ); printf(\ for(i=0;i<15;i++) if( )
printf(“%f\\n”,a[i]); printf(\}
四.程序判断题
1.面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。
main ( )
{ int a[3]={3*0} ; int i;
for (i=0; i<4; i++) scanf(“%d”,&a[i]); for (i=0; i<4; i++) printf(“%d”,a[i]); }
2.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 main ( )
{ int a[3]={1,2,3} , i; scanf(“%d%d%d”,&a);
for (i=0; i<3; i++) printf(“%d”,a[i]); }
第八章 函数
一、 选择
1.以下正确的说法是________。
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C.系统不允许用户重新定义标准库函数
D.用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。 2.以下叙述正确的是________。
A.函数的定义和函数的调用均不可以嵌套 B.函数的定义和函数的调用均可以嵌套
C.函数的定义可以嵌套,但函数的调用均不可以嵌套 D.函数的定义不可以嵌套,但函数的调用均可以嵌套 3.以下叙述中正确的是 。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 4.凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是________。 A.静态(static) B.外部(extern) C.自动(auto) D.寄存器(register) 5.以下不正确的描述是________
A.在函数外部定义的变量是全局变量 B.在函数内部定义的变量是局部变量 C.函数的形参是局部变量
D.局部变量不能与全局变量同名 6.以下错误的描述是________。 A.不同的函数中可以使用相同名字的变量,互不干扰 B.形式参数都是局部变量 C.函数定义可以嵌套
D.C语言中的函数参数传递都是单向值传递 7.以下错误的描述是________。 A.不同的函数中可以使用相同的变量名 B.形式参数是局部变量
C.一个函数内部定义的变量只能在本函数范围内有效
D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效 8.C语言中规定函数的返回值的类型是由________。 A.return语句中的表达式类型所决定
B.在定义该函数时所指定的函数类型所决定 C.调用该函数时系统临时决定
D.调用该函数时的主调用函数类型所决定 9.以下正确的函数定义是________。
A.double fun(int x , int y) B.double fun(int x ; int y) C.double fun(int x , int y) ; D.double fun(int x,y) 10.已知一个函数的定义如下: double fun(int x, double y)
{ …… }
则该函数正确的函数原型声明为________:
A.double fun (int x,double y) B.fun (int x,double y) C.double fun (int x ,int y ); D.fun(x,y) ;
二、填空
1.在一个函数内部调用另一个函数的调用方式称为________ 。在一个函数内部直接或间接调用该函数成为函数________ 的调用方式。
2.C语言变量按其作用域分为________和________。按其生存期分为 ________和________。
3.已知函数定义:void dothat(int n,double x) { …… },其函数声明的两种写法为 ________,________。
4.凡在函数中未指定存储类别的局部变量,其默认的存储类别为________。 5.若a函数中调用了b函数,而b函数又调用了a函数,这种调用称为________调用。
三、写出程序运行结果
1.main( ) {
increment( ); increment( ); increment( ); }
increment( ) {
int x=0; x+=1;
printf(\ }
2.#include
int x = 10; fun(x);
printf(\}
3.main( ) {
increment( ); increment( ); increment( ); }
increment( ) {
static int x=0; x+=1;
printf(\ }
4.#include

