目录
一、数组概念:相同数据类型的集合
数据类型相同即可:整型,浮点型,数组
定义格式:
存储类型 数据类型 变量名【整数常量】;
int num【10】;
定义一个整型的数据,包含10个整型成员,
1.存储类型
auto,static,extern,register ----- 详见C语言基础1-数据类型
2.数据类型
基本数据类型
char--short-int-long--long long--float--double
构造数据类型
数组 联合体 构造体
特殊数据类型
指针
3.变量名
1.遵循C语言命名习惯
2.行业习惯
3.公司规范
4.整数常量
1.必须是正整数,不能是0
2.必须是常量,不能是变量,表达式,范围,字符串
数组成员的访问(引用)----
Num[5]-表示数组的第6个成员
5.注意事项
1.在定义变量时,【】中的数字表示为成员个数,
2.数组的个数为定义的整数,数组在访问时,【】中的数字为下标,值从0开始 0---n-1,下标可以用变量i表示
3.数组中的成员存储地址默认按照单位连续(数据类型的字节大小)
eg: char str【128】;--按照1字节连续
Int num【10】;--按照4字节连续
4.初始化,aotu类型的变量初始值为垃圾值,必须初始化
static类型的变量初始值是0,可以初始化,可以不初始化
二、数组的初始化
不初始化
Int num【10】;
只有static类型的数组可以不初始化,其他都需要
默认初始化
Int num【10】={0};
部分初始化-----------------------------部分初始化未定义项是0
Int num【10】;
Int num【10】={1,2,3,,5}错
全部初始化
Int num【10】={1,2,3,4,5,6,7,8,9,10};
不定长初始化
Int num[]={1,2,3,4,5};
不定长数组必须初始化,因此C语言中没有不定长数组,int num【】;是错误,会报错
Int num[]={0};
Int num[1]={0}; 可以但是不推荐
数组不允许赋值,数组名是个常量,也叫左值
三、数组的输入输出
计算数组中成员个数:sizeof(num)/size(num[0]): 数组大小除以第一个成员的大小
C语言没有用于数组输入输出的关键字
一般采用遍历输入输出,使用循环挨个输入与输出
四、数组的应用
双色球
选择手段:冒泡,选择排序
4.1随机数获取方式
rand()%
头文件 <stdlib.h>
srand(time(NULL));
a=rand()%10
4.2冒泡排序:将大数向后挪
i是已经排好的个数,j是交换的次数,1层循环最差交换n-1次
4.3选择排序:分别将第一个值和后面每个比较,找到小值标记,小数向前靠,一层循环最差交换1次
五、二维数组
数组的数组,也称为多维数组,一维数组打印一行,二维打印一页,三维表示多面
存储类型 数据类型【整型常量1】【整型常量2】;
Int num【3】【4】;定义一个二维数组num,3行4列
默认初始化 num【3】【4】={0};
部分初始化 num【3】【4】={1,2,3,4,5,6,7,8,9,10};
部分初始化 num【3】【4】={{1,2,3,4},{5,6,7},{8,9,10}};
不定长初始化num[][]
二维数组单个成员大小,num【0】---16字节大小
二维数组的数据类型是构造数据类型,本身不存在
5.1输入输出:
采用双层for循环输入输出,i表示行,在前面
六、字符数组及字符串
C语言中没有字符串的关键字,所以采用字符型数组代替字符串
字符串和字符数组的区别:
字符串结尾带‘\0’,而字符型数组中没有
字符型数组
定义格式:
存储类型 char 数组名【整型常量】;
char str[128];
字符数组初始化:
1.不初始化
2.默认初始化
3.部分初始化
str[10]={"nihao"};-------初始化
str[10]="nihao";---------赋值 这两个字符串数组的都是6个字符,后面有‘\n’
4.全部初始化
5.不定长初始化
字符串的输入输出
1.可以根据数组形式输入输出 %d改为%c
2.字符型数组可以进行整体输入输出
scanf(“%s”,str);---------字符型数组在输入时不加&符号,除了字符型数组外,其他数组都不能整体进行输入输出
printf(”%s“,str);
字符串处理函数:
字符串计算:strlen()
字符串拷贝:strcpy()---=
字符串比较:strcmp()----== <= >= != < >
字符串拼接:strcat()
Strlen --------- size_t strlen(const *s)
//size_t strlen(const char s[]);
功能:计算字符串s的长度
参数:字符串名s
返回值:>=0数字,字符串长度
strlen()计算的是实际占用的大小
sizeof()计算空间大小,
char *strcpy(char *dest,const char *src);
//char *strcpy(char dest[],const char src[]);
//作用 dest = src;
功能:将src字符串拷贝到目标内存dest处
参数:src 源字符串
dest 目标内存
返回值:成功 dest的首地址
失败 NULL
Strcmp----- char *stcpy(char *dest, const cahr *src);
char
作用就是=
功能:比较字符串s1与s2的大小----不管长度,依次比较ascii码值大小
参数:s1,s2需要比较的两个字符串
返回值:>0---s1>s2 <0---s1<s2 =0---s1=s2
strcat
char *strcat(char *dest, const char *src);
//char *strcat(char dest[], const char *src[]);
功能:将字符串src拼接到dest的结尾
参数:src源字符串 dest目标字符串
返回值:成功 dest的首地址
失败 NULL
atoi(a)将字符串转化为整型数 atol atof 长整型,浮点型
小练习
1.在字符串中,查找指定字符第一次出现的位置 while(dest【n】)
2.最后一次出现的位置
3.出现的次数 for f++
一串数字以%s输入,%d输出
4.将字符串转换为整形数
5.将整型数转换为字符串
6.在a字符串中查找b字符串出现的次数
7.二维数组完成 15*15棋盘画面