目录
一、一维数组
二、二维数组
三、字符数组
一、一维数组
1、一维数组定义格式
类型说明符 数组名 [常量表达式]
- 类型说明符:数组的类型
- 数组命名规则和变量名相同,遵循标识符命名规则
- 常量表达式可以包括常量和符号常量,但不能包含变量
- 常量表达式指明数组中元素的个数
- 数组名后用方括号
2、一维数组初始化
在数组定义时为数组元素赋初值称为数组初始化。
- 在定义数组时对数组元素赋以初值(将数组元素的初值一次放在一对花括号内)
- 可以只给一部分元素赋值,其他按0处理
3、一维数组的引用
c语言规定,只能引用单个数组元素,不能一次引用整个数组
数组元素的引用形式
数组名[下标]
- 下标是指在数组中的几个元素
- 下标可以是整型常量、整型变量和整型表达式
- 下标的值是数组元素的序号,从0到n-1
- 注意区分数组定义和数组元素引用(数组定义时有类型说明符)
4、一维数组的输入输出
数组的输入
#include<stdio.h>
int main()
{
int a[n],i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
......
return 0;
}
数组的输出
#include<stdio.h>
int main()
{
int a[n],i;
for(i=0;i<n;i++)
printf("%d",a[i]);
......
return 0;
}
5、程序举例
用数组求斐波那契数列问题(前三十个)
#include<stdio.h>
void main()
{
int i;
int f[30]={1,1}; //对最前面的两个元素f[0]和f[1]赋初值1
for(i=2;i<30;i++)
f[i]=f[i-2]+f[i-1]; //从前两个元素值推出当前元素的值
for(i=0;i,30;i++)
{
if(i%5==0)printf("\n"); //控制每输入五个数后换行
printf("%12d",f[i]); //输出斐波那契数列各项的值
}
printf("\n");
}
二、二维数组
1、二维数组一般格式
类型说明符 数组名 【常量表达式1】 【常量表达式2】;
其中常量表达式1为行数,常量表达式二为列数。
- 一对方括号内不能写两个下标
- 数组元素必须是常量表达式,不能使用变量
- 用于定义数组长度的变量表达式必须为大于0的正整数
2,、二维数组的初始化
- 分行给二维数组赋初值(最直观清楚)
- 可以将所有数据写在同一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值
- 可以对部分元素赋初值
- 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省
3,、二维数组的引用
二维数组与一维数组的引用一样要采用下标法。
引用形式:
数组名【下标1】【下标2】
下标可以是整型常量、整型变量和整形表达式。其编号从0开始。
例如:int a[2*4][3*3],i=10;
数组名a代表的是数组a在内存中的首地址,数组名是常量,不可对它赋值。
4、二维数组的输入输出(采用双重循环方式进行)
二维数组的输入:
#include<stdio.h>
int main()
{
int a[2][3],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
......
return 0;
}
二维数组的输出:
#include<stdio.h>
int main()
{
int a[2][3],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
......
return 0;
}
5、二维数组程序举例
#include<stdio.h>
void main()
{
int a[2][3] = { {1,2,3},{4'5'6} }, b[3][2], i, j;
printf("array a:\n");
for (i = 0; i < 2; i++) //处理a数组中某一行中各元素
{
for (j = 0; j < 3; j++) //处理a数组中某一列中各元素
{
printf("%5d", a[i][j]) ; //输出a数组中i行j列元素
b[j][i] = a[i][j]; //将a数组元素的值赋给b数组相应元素
}
printf("\n");
}
printf("array b:\n"); //输出b数组各元素
for (i = 0; i < 3; i++) //处理b数组中一行中各元素
{
for (j = 0; j < 2; j++) //处理b数组中一列中各元素
printf("%5d", b[i][j] ); //输出b数组元素
printf("\n");
}
}
三、字符数组
用来存放字符数据的数组是字符数组
c语言用字符数组存放字符串,字符数组中的各元素依次存放字符串的各字符。
1、字符数组的定义格式
char 数组名【常量表达式】
- 字符串实际占有单元的数量等于字符串长度+1
- 定义时注意考虑元素总个数应比实际长度多1
2、字符数组初始化
用单个字符对字符数组初始化
- 如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。
- 如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误;
- 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
- 如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即‘\0’)。
用字符串常量对字符数组初始化
3、字符数组的输入输出
单个字符输入输出(用格式符%c或字符输入函数)
#include<stdio.h>
int main()
{
char c[5];
int i;
for(i=0;i<5;i++)
scanf("%c",c[i]);
for(i=0;i<5;i++)
printf("%c",c[i]);
printf("\n");
return 0;
}
字符串整体或部分输入输出(用格式符%s)
char str[6];
scanf("%s",str);
- 输入输出项必须是以字符串的地址形式出现;
- 也可以是字符串常量:printf("%s\n","book");
- 只能输入不包括空格、\t和\n的字符串;
- 若要输入空格,用gets函数;
- 数组名前不加&符号。
5.字符串处理函数
C函数库中提供一些用来处理字符串的函数:
puts 输出字符串
gets输入字符串
(使用时注意程序前边加:#include<stdio.h>)
strcat·字符串连接
strcpy字符串复制
strcmp 字符串比较
strlen 字符串长度
strlwr将字符串中大写字母换成小写字母
strupr将字符串中小写字母换成大写字母
(使用时注意程序前边加:#include<string.h>)