导图社区 数组
C语言之数组知识梳理,包括数组的意义和特点、一维数组的使用、二维数组的定义和元素的调用、数组排序和字符数组的相关内容。
编辑于2022-11-20 11:05:18 河南数组
数组
数组的意义
相同类型数据的集合
当存储大量相同类型的数据时使用
特点
开辟空间地址是连续的
一维数组的使用
定义
类型 数组名[数组长度];
类型(元素的类型)
基本的数据类型
构造数据类型
数组名
1.有数字字母下滑线组成
2.数字不可以放开头
3.不能与关键字相同
4.区分大小写
数组名就是数组的首地址
scanf(“%d”,&m)
int num[3];
scanf("%d",num);
数组长度:常量
定义
1.定义,不初始化 例如:定义一个整型数组名称为num,长度为5的数组。 int num[5];
2.定义,并全部初始化 定义一个整型数组名称为num,长度为5,初始化为1 2 3 4 5 int num[5] = {1,2,3,4,5};
3.定义,初始化一部分 定义一个数组长度为5,名称为num的数组,并初始化为1,2,3 int num[5] = {1,2,3};//没有进行初始化的部分默认为0 int num[5] = {0};//数组元素全部初始化为0
4.数组长度可以省略: -- 数组的长度有后面初始化的长度决定 int num[] = {1,2,3,4,5};
初始化
赋初值
数组只有在定义时,才能整体赋初值
int num[5]; num[5] = {1,2,3,4,5};//错误
元素的调用
元素的表示方法
#include int main() { int i; int num[5]; for(i=0;i { scanf("%d",&num[i]); } for(i=0;i { printf("%-5d",num[i]); } return 0; }
数组名[下标]
下标范围0~数组长度-1
注意:不能越界
int num[5] = {1,2,3,4,5};// 访问:num[0] -- num[4]
数组元素的使用
#include int main() { int num[5] = {1,2,3,4,5}; int num2[5] = {6,7,8,9,10}; int i; for(i=0;i { printf("%-5d",num[i]); } printf("\n"); num[0] = 100;//数组和常量 printf("num[0] = %d\n",num[0]); for(i=0;i { num[i] = num2[i]; } for(i=0;i { printf("%-5d",num[i]); } return 0; }
二维数组
定义
类型 数组名[行长度][列长度](={{},{},{}});
1.定义不初始化 定义一个2维数组:3行4列的整型数组名称为num; int num[3][4]; 2.定义,全部初始化 int num[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int num[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 3.定义,省略行(列不可以省) int num[][4] = {1,2,3,4,5,6};
类型和一维数组一样
数组名和一维数组一样
行长度 -- 常量
列长度 -- 常量
元素的调用
数组名[行下标][列下标]
行下标:0~行长度-1
列下标:0~列长度-1
使用和一维数组一样。
#include int main() { int num[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int i,j; for(i=0;i { for(j=0;j { printf("%-5d",num[i][j]); } printf("\n"); } }
数组排序
冒泡排序
int num[5] = {5,67,3,8,4};
#include int main() { int num[5] = {5,67,3,8,4}; int i,j,temp; for(j=0;j { for(i=0;i { if(num[i]>num[i+1]) { temp = num[i]; num[i] = num[i+1]; num[i+1] = temp; } } } for(i=0;i { printf("%-5d",num[i]); } return 0; }
字符数组
字符数组
#include int main() { char str[5]={'C','H','I','N','A'}; int i = 0; for(i=0;i { printf("%c",str[i]); } printf("\n"); }
char 数组名[数组长度](=初始化);
字符串数组
字符串(常量)
表示:""括起来
字符串以'\0'结尾
还是一个字符数组:存放的是字符串
表示:
#include int main() { char str2[] = "CHINA"; char str[20]={0}; printf("str2 = %s\n",str2); scanf("%s",str); printf("str = %s\n",str); }
区别
#include int main() { char str[]={'C','H','I','N','A'}; char str1[]={"CHINA"}; printf("%d\n",sizeof(str)); printf("%d\n",sizeof(str1)); }
字符读写函数
char str[20];
putchar
向屏幕输出一个字符
getchar
从键盘读取一个字符
printf("%s",str);//格式化输出
scanf("%s",str);//格式化输入 不能输入空格
gets(str);//字符串输入函数 可以输入空格
puts(str);//字符串输出函数 打印结束会自动打印换行
#include int main() { char str[20]; // gets(str); // puts(str); scanf("%s",str); printf("%s",str); return 0; }
字符串操作函数
包含头文件:string.h
求字符串长度:strlen()
#include #include int main() { char str[20]={0}; int len; scanf("%s",str); len = strlen(str); printf("len = %d\n",len); return 0; }
不包含'\0'
字符串连接函数:strcat
#include #include int main() { char str[20] = "hello"; char str2[] = "world"; strcat(str,str2); printf("%s\n",str); return 0; }
函数原型:char *strcat(char *dest,char *src); 头文件:#include <string.h> 参数:dest 目标数组指针 src 源字符串指针 返回值:返回指向dest的指针 函数功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。 注意事项:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
字符串比较:strcmp
include #include int main() { char str1[20] = "hello world!"; char str2[20] = "hello C"; int a; a = strcmp(str2,str1); printf("a = %d\n",a); return 0; }
原型:int strcmp(const char *s1,const char * s2); 头文件:#include <string.h> 功能:比较字符串s1和s2。 说明: 当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如: "A"<"B" "a">"A" "computer">"compare" 特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
字符串复制:strcpy
#include #include int main() { char str1[20] = "hello world!"; char str2[20] = "ffff"; printf("%s\n",str1); printf("%s\n",str2); strcpy(str1,str2); printf("%s\n",str1); printf("%s\n",str2); return 0; }
原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src地址开始且含有\0结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。