算法笔记数组

整型数组

定义格式:

数据类型 数组名【数组大小】

赋值:

int a[5] = {1,2,3,4,5};

初始化时第一个元素赋值为0全为0;

冒泡排序:

 1 #include<stdio.h>
 2 int main(){
 3     int temp;
 4     int a[10] = {3,1,4,5,2};
 5     for(int i = 1;i<=4;i++){
 6         for(int j = 0;j<5-i;j++){
 7             if(a[j]>a[j+1]){
 8                 temp = a[j];
 9                 a[j] = a[j+1];
10                 a[j+1] = temp;
11             }
12         }
13     }
14     for(int i = 0; i<5;i++){
15         printf("%d",a[i]);
16     }
17 
18     return 0;     
19 }

二维数组赋值:

int a[5][6] = {{3,1,2},{8,4},{},{1,2,3,4,5}};

中间的括号不能缺。

特别提醒:

数组大小较大(大概106级别),则需要将其定义在main函数之外。原因为内部申请局部变量来自系统栈,空间较小。全局变量来自静态存储区,允许空间较大。

memest 函数:

头文件<string.h>    memset(a,0,sizeof(a));   //全为0;

字符数组

初始化:

char str[15] = {'a','b','c','d'};

char str[15]  = "Hello World";   //注:只有初始化能这样赋值,其他时候不可以

输入输出:

  • scanf/printf:  char str[10]; scanf("%s",str);printf("%s",str);
  • getchar/putchar:  可以吸收掉换行符
  • gets/puts:    gets(str);以换行符为结束符,自动在字符数组中添加‘\0’。puts(str)与printf()读到‘\0’输出。

特别提醒:不使用scanf("%s",...)或者gets()输入则必须手动在最后添‘\0’。否则用puts()或printf("%s",..)会出现乱码。

string.h 头文件:

  • strlen(str);  //获取长度
  • strcmp(str1,str2);      //按字典序比较大小,按小、相等、大分别返回负整数、0、正整数;
  • strcpy(str1,str2);   //copy str2 to str1, include '\0';
  • strcat(str1,str2);    //把str2接到str1的后面。

sscanf/sprintf(头文件为stdio.h):

sscanf(str,"%d",&n);

sprintf(str,"%d",n);

sscanf支持正则表达式。

 

posted @ 2018-04-12 16:14  又啦  阅读(117)  评论(0编辑  收藏  举报