C语言基础四:数组

数组:
    一组具有相同数据类型的集合
    int a[10];
    1.一维数组
    2.二维数组
    3.字符数组
1.一维数组
    1.1定义格式:
        数据类型 数组名[数组元素个数];
            "数据类型":任何合法的C语言数据类型即可
            "数组名"  :合法C语言标识符即可
            "数组元素个数":不能为变量,只能是常量、常量表达式 例如:int a[10]; char a[10];
    1.2存放格式
        数组名a中存放的是数组首地址
    1.3数组的引用
        数组名 [下标]
            "下标":从0开始
            引用数组和引用普通变量一样,也有左值和右值
        a[6]=10;
        int b=a[6];
    1.4数组的初始化
        1.全部初始化
            int a[10]={1,2,3,4,5,6,7,8,9,10};
            
                int a[10];//error
                a[10]={1,2,3,4,5,6,7,8,9,10};
        2.部分初始化(未初始化的数组元素全部为0)
            int a[10]={1,2,3};
                
            对数组全部元素赋值0
            int a[10]={0};
        3.省略数组元素个数
            int a[]={1,2,3,4,5,6,7};
            a[7]=10;//error
        
    ex1.对数组元素用scanf给数组赋值,并且逆序输出数组。
    ex2.对数组元素用scanf给数组赋值,求数组的最大值。
    ex3.对数组元素用scanf给数组赋值,求数组的最小值。
    ex4.判断一个数组是否为递增的?(a[i]<a[i+1])
    ex5.判断一个数组是否有序?
            flag1=1;//a[i+1]>a[i]
            flag2=1;//a[i+1]<a[i]
            if(flag1==0&&flag2==0)
            {
                printf("无序");
                //1.return 0 ;
                //2.goto loop
            }
            
        loop:
    ex6.在有序的数组中查找元素x,输出数组元素的下标
2.二维数组
        1.引入
            int a[4];  int[4] a;===>typeof(a) b[3]
            
            =====>int a[3][4];表示3行4列
        2.    定义方法
             数据元素类型 数组名[行数][列数];
             int  a[3][4];
        3.二维数组的存放
            (见图)
        4.二维数组初始化
            1.全部初始化
                int a[3][4]={{1,2,3,4},
                             {5,6,7,8},
                             {9,10,11,12}};
            2.部分初始化
                a.int a[3][4]={{1,2,3,4},{5,6,7}};//未初始化的全部是0
                b.int a[3][4]={1,2,3,4,5,6,7,8,9};    
            3.省略第一维的长度,第二维不可省
                int a[][4]={1,2,3,4,5};
                
                
                ex.用scanf输入赋值,行列互换,打印输出
                ex.求二维数组的"鞍点",在行中最大,列中最小。
    
3.字符数组
        
        在c语言中没有数据类型是用来表示字符串的
        字符串 :"123" 以\0结束
            
        1.定义字符数组
                char c[10];
        2.字符数组的初始化
            1.全部初始化
                char  a[10]={'I',' ','a','m',' ','h','a','p','p','y'};
                
                char  a[11]={"I am happy"};//与前一个相比,在末尾多了一个'\0'
                char  a[11]={'I',' ','a','m',' ','h','a','p','p','y','\0'};//与前一个相同
            2.部分初始化
                char a[10]={'I'};//未初始化的全部为'\0'
                对一个字符输出全部初始化成'\0'
                char a[10]={0('\0')};
            3.省略数组长度初始化
                char a[]={'I',' ','a','m',' ','h','a','p','p','y'};
                char a[]="I am happy"
        3.字符数组在内存中的存放
            
        4.字符数组输入输出
            1.将字符串用%c逐个输出
                for(i=0;i<sizeof(a);i++)
                {
                    printf("%d  ",a[i]);
                }
            输入:
                for(i=0;i<sizeof(a);i++)
                {
                    scanf("%c",&a[i]);
                }
            2.%s用来输出字符串,输出到遇见'\0'为止
                printf("%s",a);//a字符数组的首地址
                scanf("%s",a);//注意传入字符数组名即可
        5.字符串相关函数
            int puts(const char *s);
                功能:输出一个字符串到屏幕上    
                const char *s:字符数组的首地址(即数组名)
                                字符串常量(例如:"1234")
                返回值:输出成功,返回输出的字节数
                        失败返回EOF -1
            char *gets(char *s);//会把输入\0的当成字符
                功能:从屏幕上得到一个字符串存储到s的地址空间中去
                char *s:字符数组的首地址
                返回值:返回输入字符的首地址                    
                    
            ex。用gets得到字符串  "123\04"
                1.求字符串的有效字符长度(使用'\0')
                2.用puts输出字符串
            size_t strlen(const char *s);
                功能:计算字符串s的有效字符长度(遇到\0就不加了)
                 const char *s:字符数组的首地址(比如说a)
                                字符串常量
                返回值:返回得到字符串的长度
            
            
            
        

猜你喜欢

转载自blog.csdn.net/qq_26128879/article/details/82820521