算法笔记学习心得 4

版权声明:转载留名即可 ^_^ https://blog.csdn.net/qq_33375598/article/details/86504208

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字符数组中

猜你喜欢

转载自blog.csdn.net/qq_33375598/article/details/86504208
今日推荐