一、一维数组和二维数组。
1、一维数组定义方式:类型说明符 数组名[ 常量表达式 ];
(1)在定义数组时,要定义数组中元素的个数。引用时,下标从 数组名[0] 开始。
(2)不允许对数组的大小动态定义,即数组的大小不依赖于程序运行过程中的变量的值。
(3)数组必须先定义,然后使用。只能逐个引用数组元素而不能一次引用整个数组。
(4)一维数组初始化:例如 int a[10]={0,1,2,3,4,5,6,7,8,9};当{}内个数确定,可以不用指定数组大小。
2、二维数组定义方式:类型说明符 数组名[ 常量表达式 ][ 常量表达式 ];
(1)二维数组可以看成是一个特殊的一维数组,,他的元素又是一个一维数组。
例如:float a[3][4] 可以把a看作一个一维数组,它有3个元素:a[0]/a[1]/a[2],每个元素又包含4个元素的一维数组。
(2)二维数组初始化:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
或 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
如果对全部元素都赋初值(即提供全部初始数据),则定义数组时可以对第一维的长度不指定,但第二维的长度不能省略。
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
二、字符数组。
1、定义:char c[字符个数]={每个字符};
(1)如果花括号中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理;如果初值个数小于数组长度,则只将这些字符赋值给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。
(2)字符串结束标志:一个“字符串结束标志”,以字符'\0'作为标志。在程序中往往依靠检测'\0'的位置来判断字符串是否结束,而不是根据数组的长度来决定字符串长度。
'\0'代表ASCII码为0的字符,是一个“空操作符”,即它什么也不做。
(3)用字符串常量来使字符数组初始化:
char c[]={"I am happy"}; <===>char c[]="I am happy";
因为字符串常量的最后系统加上了'\0'。因此,上面等价于:
char c[]={'I',' ','a','m',' ' ,'h','a','p','p','y','\0'}, 长度为11。
(4)字符数组并不要求它的最后一个字符为'\0',甚至可以不包括'\0'。
(5)在字符数组中人为 的加入一个'\0',这样做,便于引用字符数组中的字符串。
2、字符数组的输入输出。
(1)逐个字符输入输出。用格式符“%c”输入输出一个字符。
(2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出。
注意:①输出字符不包括结束符'\0'。
②用“%s”’格式符时,printf函数输出项是字符数组名,而不是数组元素名。
③如果数组长度大于字符串的实际长度,也只输出遇到'\0'结束。
④利用scanf函数输入多个字符串,则在输入时以空格分开。数组中未被赋值的元素的值自动补'\0'。
⑤scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为数组名代表该数组的起始地址。
3、字符串处理函数。
(1)puts函数。puts(字符数组)
作用:将一个字符串(以'\0'结束的字符数列)输出到终端。输出的字符串可以包含转义字符。
(2)gets函数。gets(字符数组)
作用:从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
puts函数和gets函数只能输出或输入一个字符串。
(3)strcat函数。strcat(字符数组1,字符数组2)
作用:(string catenate)连接两个字符数组中的字符串。把字符串2接到字符串1的后面,结果放在字符数组1中。函数调用后得到一个函数值一一字符数组1的地址。
(4)strcpy函数和strncpy函数。strcpy(字符数组1,字符数组2)
作用:(string copy)字符串复制函数。将字符串2复制到字符串1中去。
注意:①“字符数组1”必须写成数组名形式,“字符数组2”可以是字符数组名,也可以是一个字符串常量。
②最好将字符数组1赋空值。
③不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
④strncpy函数将字符串2中前n个字符复制到字符数组1中去。strncpy(字符数组1,字符数组2,n)
(5)strcmp函数。strcmp(字符串1,字符串2)
作用:(string compare)比较字符串1和字符串2。自左向右逐个字符比较(按照ASCII码大小),直到出现不同的字符或遇到'\0'。如果字符全部相同,则认为相等;若出现不同的字符,则以第一个不相同的字符的比较结果为准。
比较结果由函数值带回:①字符串1=字符串2:函数值为0;
②字符串1>字符串2:函数值为一个正整数;
③字符串1<字符串2:函数值为一个负整数。
(6)strlen函数。strlen(字符数组)
作用:(string length)测试字符串长度的函数。函数的值为字符串的实际长度(不包括'\0')。
(7)strlwr函数。strlwr(字符串)
作用:(string lowercase)将字符串中大写字母换成小写字母。
(8)strupr函数。strupr(字符串)
作用:(string uppercase)将字符串中小写字母换成大写字母。
三、程序案例(起泡法很重要)
1、P133 例题7.2 数组求Fibonacci(斐波那契数列)。
7.2代码 7.2结果2、P134 例题7.3 起泡法对10个数有小到大排列。
7.3题目和分析(来源课本) 7.3代码3、P150 例题7.8 输入一行字符,统计有多少个单词,单词之间用空格隔开。
7.8代码
网友评论