C 语言基础知识重点和难点一、数组 1. 一维数组的定义与初始化 1) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如: #define FD5 main() { int a[3+2],b[7+FD]; ……} 是合法的。但是下述说明方式是错误的。 main() { int n=5; int a[n]; ……} 2) C语言对数组的初始化赋值还有以下几点规定: (1) 可以只给部分元素赋初值。当{} 中值的个数少于元素个数时,只给前面部分元素赋值。例如: int a[10]={0,1,2,3,4}; 表示只给 a[0] ~ a[4]5 个元素赋值,而后 5 个元素自动赋 0 值。(2) 只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋 1 值,只能写为: int a[10]={1,1,1,1,1,1,1,1,1,1}; 而不能写为: int a[10]=1; (3) 如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。例如: int a[5]={1,2,3,4,5}; 可写为: int a[]={1,2,3,4,5}; 2. 一维数组元素的引用 1) 在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。例如,输出有 10 个元素的数组必须使用循环语句逐个输出各下标变量: for(i=0; i<10; i++) printf("%d",a[i]); 而不能用一个语句输出整个数组。下面的写法是错误的: printf("%d",a); 2) 引用数组元素时一定注意下标不能越界例如, int i=4, n[]={0,0,0,0,0}; , 则可以引用 n[0],n[4],n[!5],n[i++], 但不能引用 n[5], n[++i] 例1:若有定义语句: int m[ ]={5,4,3,2,1},i=4; ,则下面对 m数组元素的引用中错误的是___C___ 。 A、 m[--i] B、 m[2*2] C、 m[m[0]] D、 m[m[i]] 3. 一维数组的典型算法 1) 查找指定的元素,返回其下标。比如,要求查找数值 5 是否数组中 2) 查找数组的最大(最小)值,并返回最大(最小)值及其对应的下标 3) 数组的排序(升序或降序) ,包括冒泡排序和选择排序两种算法 4) 在有序数组中插入一个元素,使得数组仍然有序 5) 数组的逆序 6) 在数组中删除满足某条件的元素 4. 二维数组的初始化二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值, 也可按行连续赋值。例如对数组 a[5][3] : 1) 按行分段赋值可写为: int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} }; 2) 按行连续赋值可写为: int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85}; 对于二维数组初始化赋值还有以下说明: 1) 可以只对部分元素赋初值,未赋初值的元素自动取 0 值。例如: int a[3][3]={{1},{2},{3}}; 是对每一行的第一列元素赋值,未赋值的元素取 0 值。赋值后各元素的值为: 100200300 int a [3][3]={{0,1},{0,0,2},{3}}; 赋值后的元素值为:010002300 2) 如对全部元素赋初值,则第一维的长度可以不给出。例如: 引用错误,主要是下标越界。选项 A和B 的下标分别是 3和4 ,都没越界。选项 C 中, m[m[0]] 实际上是 m[5] ,所以越界了,选项 D实际上是 m[1] int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以写为: int a[][3]={1,2,3,4,5,6,7,8,9}; 例1: 以下不能正确定义二维数组的选项是___ D ___ 。 A、 int a[2][2]={{1},{2}}; B、 int a[][2]={1,2,3,4}; C、 int a[2][2]={{1},2,3} D、 int a[2][]={{1,2},{3,4}} 5. 二维数组元素的引用和一维数组一样,一定要注意下标不越界。例1: 若有定义 int a[2][3]; 以下选项中对 a数组元素正确引用的是___ D ___ A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1] 6. 字符数组的初始化 1) 字符数组也允许在定义时作初始化赋值。例如: char c[10]={ ‘c’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,’m’}; 赋值后各元素的值为: 数组 C c[0] 的值
C语言基础知识重点和难点 来自淘豆网m.daumloan.com转载请标明出处.