C语言复习题
第七章 数组 (8学时)
学习目的与要求:
1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。
重点:
1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用;
第1讲 知识归纳:
1、一维数组的定义:类型说明符 数组名[ 常量表达式 ] ;
(1) (1) 数组名后必须用方括弧 [ ] ,用其他括弧均错误 ; (2) 方括弧中的常量表达式表示数组的元素个数;
(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;
2、一维数组的引用:
数组名[ 下标 ] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围 ; 如 int a[10] ;
//可以引用的数组元素为 a[0]……a[9] , a[10] 不是本数组元素;
3、一维数组的初始化:
(1) (1) 可以在定义数组后,立刻赋值; 如 int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ;
(2) (2) 可以给数组的部分元素赋值 ,不赋值的元素,默认值为int 0, char, ??, float 0.0 ;
如 int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ;
for ( i=0 ; i <10 ;i ++ )
a [ i ] = i ;
基础训练(A)
一、 选择题
1、在c语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A)整型常量 B)整型表达式
C)整型常量或整型表达式 D)任何类型的表达式
2、要说明一个有10个int元素的数组,应当选择语句( )。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3、以下对数组的正确定义是:( )。
A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是( )。 int a[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
1
C语言复习题
B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确 5、已知:int a[10];则对a数组元素的正确引用是( )。 A) a[10] B) a[3.5] C) a(5) D) a[10-10]
6、以下能对一维数组a进行正确初始化的语句是( )。 A) int a[10]=(0,0,0,0,0); B)int a[10]={} C) int a[]={0}; D) int a[10]={10*1};
7、以下能对一维数组a进行正确初始化的语句是( )。
A) A) int a[5]; B)int a[3]; a={0,1,2,3,4}; for(i=0;i<3;i++) scanf(“%d”,a);
C) int a[3]={0,1,2,3}; D) int a[5]; for(i=0;i<5;i++) scanf(“%d”,&a[i]);
1、C 2、A 3、B 4、B 5、D 6、C 7、D
二、 填空题
1、构成数组的各个元素必须具有相同的类型。C语言中数组的下标必须是整正数、0或整型表达式。如果一维数组的长度为n ,则数组下标的最小值为0,最大值为n-1。 2、在C语言中,一维数组的定义方式为:类型说说明符 数组名[常量表达式]。 3、已知数组b定义为int b[ ]={9,6,3};,则b的各元素的值分别是 , 最小下标是 ,最大下标的 。9,6,3 0 , 2 4、在C语言中数组名是一个常量,不能对其进行加、减及赋值操作。
5、已知数组T为一有10个单元的整型数组,正序输出T中的10个元素的值的语句为:
for (j=0;j<10;j++) printf(“%d”,T[j]); 下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句:
for(j=9;j>=0;j- -)printf(“%d”,T[j]); 三、 综合题
1、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(3) 1 main() 2 {
3 int a[3]={3*0}; 4 int i;
5 for(i=0;i<3;i++) scanf(\6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 7 printf(\8 }
2、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(5) 1 1 main() 2 2 {
3 3 int a[3]; 4 4 int i;
5 5 scanf(“%d”,&a);
6 6 for(i=0;i<3;i++) a[0]=a[0]+a[i]; 7 7 printf(“a[0]=%d”,a[0]); 8 8 }
3、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(7) 1 1 main() 2 2 {
3 3 int a[3]; 4 4 int i;
5 5 for (i=0;i<3;i++) scanf(“%d”,&a[i]); 6 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]); 7 7 printf(“%d\\n”,a);
2
C语言复习题
8
8 }
第2讲 知识归纳:
1、二维数组的定义:
类型说明符 数组名[ 常量表达式1 ][常量表达式2] ; (1) 常量表达式1------可以形象理解为 行数;
常量表达式2-----可以形象理解为 列数 ;
(2) 二维数组中元素存放顺序是:先存放第一行的元素,再存放第二行的元素,依次类推;
2、二维数组的引用:
数组名[ 下标 ] [ 下标 ]
//下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围 ;
如 int a[3 ] [4] ;
//可以引用的数组元素为 a[0][0]……a[2][3] , a[3][4]不是本数组元素;
(2) 可以在循环控制下,给二维数组各元素赋值; 如:int a[3] [4];
for ( i=0 ; i <3 ;i ++ ) for ( j=0 ; j<4;j++)
a [ i ] = i * j;
3、二维数组的初始化:
(1)可以在定义数组后,立刻赋值; 如 int a [3][4] = { 1,3, 5,7,9,11} ;
但下面这样是错误的:
int a[3][4] ;
a = { 1,3, 5,7,9,11} ;
(2) (2) 可以给数组的部分元素赋值 ,不赋值的元素,默认值为int 0, char, ??, float 0.0 ; (3) 在对数组全部元素赋初值时,可以省略行数,但不能省略列数;
基础练习(A)
一、选择题
1、在C语言中,二维数组元素在内存中的存放顺序是( )。 A) 按行存放 B)按列存放
C)由用户自己定义 D)由编译器决定 2、以下对二维数组a的正确说明是 ( )。
A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4) 3、已知:int a[3][4];则对数组元素引用正确的是( )。 A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1)
4、已知:int a[3][4]={0};则下面正确的叙述是( )。
A)只有元素a[0][0]可得到初值0 B)此说明语句是错误的
C)数组a中的每个元素都可得到初值,但其值不一定为0 D)数组a中的每个元素均可得到初值0 5、以下正确的语句是( )。
A) int a[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}}; C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[][3]={0}; 6、以下能对二维数组元素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}};
1、A 2、C 3、C 4、D 5、D 6、B 二、填空题
3