c语言学习笔记2

数组

一、数组定义

一维数组:类型说明符 数组名[常量表达式];例如:int a[10]

二维数组:类型说明符 数组名[常量表达式][常量表达式];例如:float[3][4]

多维数组:例如:float a[2][3][4]

字符数组:与一维数组类似

说明

1.不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值;

2.二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素;

3.多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快;

4.字符串作为字符数组来处理,以‘\0’作为字符串结束标志;系统依靠检测‘\0’的位置来判断字符串是否结束;

5.数组名代表该数组的起始地址

二、数组引用

一维数组:数组名[下标]。例如:a[0] = a[5]+a[7]-a[2*3];

二维数组:数组名[下标][下标]。例如:b[1][2] = a[2][3]/2;

字符数组:利用循环来获取。

三、数组的初始化

一维数组

在定义数组时对数组元素赋予初值或部分赋初值

int a[10] = {0,1,2,4,5}

经典例子:Fibonacci数列问题(黄金分割数列或斐波那契数列)

斐波那契数列:从第三项开始,每一项等于前两项的和

二维数组

分行给二维数组赋初值

int a[3][4] = {{1,2,3,4},{5,6,7,8}.{9,10,11,12}}

字符数组初始化

逐个字符赋给数组中各元素

char c[10] = {'I',' ','A','m','','h','a','p','p','y','\0'};或char c[] = "I am happy";(长度为11)

四、字符数组的输入输出

4.1 逐个字符输入输出。(%c)

4.2 将整个字符串一次输入或输出。(%s)

说明

1.输出字符不包括结束字符'\0';

2.用”%s“输出时,printf函数中输出项时字符数组名。例如:char c[] = {"China"}; printf("%s",c);

3.如果一个字符数组中包含多个'\0',则遇第一个'\0'时输出就结束;

4.用scanf函数输入一个字符串。例如:scanf("%s",c);输入多个字符串(char str1[5],str2[2],str3[5];scanf("%s,%s,%s",str1,str2,str3);)

5.如果scanf输入项时字符串数组名,则不用再加地址符&

五、字符串处理函数

5.1 puts函数(可以用printf函数替代,实际使用不多

puts(字符数组):将一个字符串(以‘\0’结束的字符序列)输出到终端。

5.2 gets函数

gets(字符数组):从终端输入一个字符串到字符数组,并且得到一个函数值(字符数组的起始地址)。

5.3 strcat函数*

strcat(字符数组1,字符数组2):连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的起始地址;

5.4 strcpy和strncpy函数

strcpy(字符数组1,字符数组2):字符串复制函数,将字符数组2 复制到字符数组1中。

strncpy(字符数组1,字符数组2,2):将字符串2中前面n个字符复制到字符数组1中(n=2,但n不能多于字符数组1中的字符个数);

5.5 strcmp函数

strcmp(字符串1,字符串2):比较字符串1和字符串2。对两个字符串自左至右逐个字符相比(按ASCII码值大小比较,直到遇到不同的字符或遇到'\0'为止)。结果如相等,则为0;如大于则为正整数;如小于则为负整数;

5.6 strlen函数

strlen(字符数组):测试字符串长度的函数。函数的值为字符串中的实际长度。

5.7 strlwr和strupr函数:

strlwr(字符串):将字符串中大写字母换成小写字母;

strupr(字符串):将字符串中小写字母换成大写字母;



你可能感兴趣的:(c/c++)