算法笔记 心得4

1,一维数组

格式:数组类型  数组名[数组大小];
数组大小必须是整型常量,不能是变量
 
访问形式:
数组名称[下标]
⚠️;只能访问下表0~size-1
 
数组没有赋值的部分默认为0;如果数组一开始都没有赋值,就没个元素都可能是一个随机数,而不是默认的0
如果想把整个元素都赋值初值0,那么只需要吧第一个元素赋值为0,或者只用一个大括号来表示。
eg. int a[10]={0};
int a[10]={  };
 
2,不断的让后一位的结果由前一位或者前若干位计算得来,把这种做法成为递推。
递推分为顺推和逆推。
 
3,二维数组
格式:
数据类型  数组名[第一维大小][第二维大小]
 
访问:
数组名[下标1][下标2]
 
⚠️如果数组大小比较大(大约10^6),则需要将其定义在主函数的外面,否则会异常退出。
因为函数内部申请的是局部变量来自栈系统,允许申请的空间比较小;
而函数外部申请的全局变量来自于静态存储区,允许申请的空间比较大。
 
4,对数组的每一个元素赋相同的值
memset函数:
格式:
memset(数组名,值,sizeof(数组名));
⚠️加头文件string.h
只建议初学者使用memeset赋值0或-1,因为它是按字节赋值,即对每个字节赋相同的值
如果要对数组赋其他数字,使用fill函数()
 
5,字符串数组
可以像普通数组一样初始化,
eg,char str[15]={‘G’,’o’,’o’,’d’,’ ‘,’s’,’t’,’o’,’r’,’y’,’!’};
 
字符串也可以直接赋字符串初始化(仅限于初始化,程序的其他的位置不允许这样直接赋值整个字符串)
eg.char str[15]=“Good story!”;
 
6,字符串的输入输出
A,scanf、printf
%s  识别空格作为字符串的结尾,scanf使用%s,后面对数组名是不需要加取地址符&;
%c  能够识别空格和换行,将其输入。
 
B,getchar()、putchar()
getchar和putchar用来输入和输出单个字符
 
C,gets()、puts()
使用gets()来输入一行字符串(⚠️gets识别换行符\n作为输入,因此在使用完scanf一个整数后,如果要使用puts,要先使用getchar接收整数后面的换行符),并将其存入一维数组(合作和二位数组的一维)中;
puts用来输出一行字符串,即将一维数组(或二维数组的一维)在界面上输出,并紧跟一个换行。
 
eg.
int str2[5][10];
for(int i=0;i<3;i++){
gets(str2[i]);
}
就是使用for循环把三个字符串分别存入str2[0]、str[1]、str[2]中
 
 
7,字符串数组的存放方式
字符串数组每一位都是一个char字符,在一维数组(或是二维数组的第二维)的末尾都有一个空字符\0,以表示存放字符串的结尾。
 
空字符\0在使用gets和scanf输入字符串时会自动添加在输入字符串后面,并占用一个字符位,而puts和printf就是通过识别\0作为字符串的结尾来输出的。
 
⚠️:结束符\0的ASCII码是0,即空字符NULL,占用一个字符位,因此字符数组的长度一定比实际存储字符的长度至少多一;
int型数组的末尾不需要加\0,只有char型数组需要。
\0和空格不是同一个东西,空格的ASCII码是32.
 
⚠️:如果不使用scanf或puts作为字符串的输入(如getchar),一定要在末尾加”\0”,否则printf和puts输出字符串时,会因为无法识别字符串末尾而输出一大堆乱码。
 
8,string.h头文件
strlen();
格式:
strlen(字符数组)
作用:可以得到字符数组中第一个\0前面的字符的个数
 
strcmp();
格式:
strcmp(字符数组1,字符数组2);
作用:返回两个字符串大小的比较结果,比较原则是按字典序
eg、”a”的字典序小于”b”、”aaaa”的字典序小于”aab”
 
A,如果字符数组1<字符数组2,则返回一个负整数(不同的编译器不同,不一定是-1)
B,如果字符数组1==字符数组2,则返回0
C,如果字符数组>字符数组2,则返回一个正整数(不同的编译器不同,不一定是+1)
 
strcpy();
格式:
strcpy(字符数组1,字符数组2);
作用:strcpy函数把一个字符串赋值给另一个字符串
⚠️:把字符串2赋值给字符串2,赋值包括结束符\0
 
strcat();
格式:
strcat(字符数组1,字符数组2);
作用:把字符数组2接到字符数组2后面
 
sscanf();ssprintf();
ssscanf与ssprintf是处理字符串问题的利器;
格式:(假设定义一个char数组str[100])
sscanf(str,”%d”,&n);
sprintf(str,”%d”,n);
作用:sscanf的作用是把字符数组str中的内容以”%d”的格式写到n中
sprintf写法的作用是把n以”%d”的格式写到str字符数组中
 
 
posted @ 2019-01-16 11:17  韩江雪  阅读(...)  评论(...编辑  收藏