二维数组,多维数组,字符串数组;


       //二维数组,多维数组,字符串数组;

        //二维数组:

       //       二维数组的概念:数组名后面有两个下标的数组被称为二维数组

        //       定义:类型说明符数组名[常量表达式1][常量表达式2]={值1,值2,....}

       //       其中常量表达式1代表的是一维的长度,常量表达式2代表的是二维的长度

       //二维数组定义时,如果元素未一一列出,未赋值的元素自动初始化为0

3)二维数组

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

                for (int i=0; i<3; i++) {

                    for (int j=0; j<3; j++) {

                        printf(" a[%d][%d]=%d  ", i, j, a[i][j]);

                    }

                    printf("\n");

                }



 

 int array[3][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};

//        

//                printf("array[0][0]=%d\n",array[0][0]);

//                printf("array[0][1]=%d\n",array[0][1]);

//                printf("array[0][2]=%d\n",array[0][2]);

//                printf("array[0][3]=%d\n",array[0][3]);

//                printf("array[0][4]=%d\n",array[0][4]);

//        

//                printf("array[1][0]=%d\n",array[1][0]);

//                printf("array[1][1]=%d\n",array[1][1]);

//                printf("array[1][2]=%d\n",array[1][2]);

//                printf("array[1][3]=%d\n",array[1][3]);

//                printf("array[1][4]=%d\n",array[1][4]);

//        

//                printf("array[2][0]=%d\n",array[2][0]);

//                printf("array[2][1]=%d\n",array[2][1]);

//                printf("array[2][2]=%d\n",array[2][2]);

//                printf("array[2][3]=%d\n",array[2][3]);

//                printf("array[2][4]=%d\n",array[2][4]);

//        

//                printf("array[1][5]=%d\n",array[1][5]);

//        

        array[1][5]==array[2][0]

//        

       用for循环输出

//                int array[3][5]={0};

//                for (int i=0; i<3; i++) {

//                    for (int j=0; j<5; j++) {

//                    array[i][j]=arc4random()%(30-10+1)+2;

//                        printf("array[%d][%d]=%d\n",i,j,array[i][j]);

//                    }

//                }

//        

       交换一个二维数组的行和列

//        

//                int array[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

//                int array1[5][3]={0};

//        

//                for (int i=0; i<3; i++) {

//                    for (int j=0; j<5; j++) {

//        

//                        printf("array[%d][%d]=%d\n",i,j,array[i][j]);

//                        array1[j][i]=array[i][j];

//                    }

//                }

//        

//                for (int i=0; i<5; i++) {

//                    for (int j=0; j<3; j++) {

//                       printf("array1[%d][%d]=%d\n",i,j,array1     [i][j]);

//                    }

//                            }


 有一个三行四列的二维数组,找出最大元素,并输出所在的行和列

                int max=0,k=0,l=0,g=0;

                int arr[3][4]={0};

                for (int i=0;i<3;i++) {

                    for (int j=0; j<4; j++) {

                        arr[i][j]=arc4random()%(30-10+1)+10;

                        printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);

        

                        if (max<arr[i][j]) {

        

                            k=arr[i][j];

                            max=k;

                            arr[i][j]=k;

        

                            l=i;

                            g=j;

                        }

                           }

//        若要求每一行的最大数值和行列的话,就加上这句:printf("max=%d,l=%d,g=%d\n",max,l,g);

                    }

                printf("max=%d,l=%d,g=%d\n",max,l,g);


//多维数组:数组下标在两个以上。多维数组元素个数等于各个维数相乘的积(如int arr[2][4][3]={0}共有24个元素)

       //多维数组的遍历,几维数组就需要几层for循环0.

        //多维数组元素访问:数组名[下标][下标][下标][下标]....





/**
         *      回顾 : 字符数组:用于存放字符变量的数组,字符数组也是一维数组,与与普通字符定义方式相似,只是类型是char
         char 数组名[常量表达式1]={值1}{值2};
         char array[10]={'i', 'P', 'h', 'o', 'n', 'e'};
         for (int i=0; i<10; i++) {
         printf("array[%d]=%c\n",i,array[i]);
         }
         
         char array1[10]="iphone6p";
         for (int i=0; i<10; i++) {
         printf("aaray1[%d]=%c\n",i,array1[i]);
         }
         有'\0'结束标识的字符数组也称为字符串;字符数组长度要比字符长度大一,用来存放'\0'标识
         strlen()  计算字符串长度
         
         字符串比较
         注意:字符串比较函数是根据对应下标的字符的ASCII码值作比较(减法),如果差值为零,说明两个字符相等,接着比较下一位ASCII码值,直到遇到'\0',如果差值不为零则返回该差值,表示两个字符是不同的
         int  strcmp(<#const char *#> s1, <#const char *#> s2);
         比较两个字符串的大小(不忽略大小写),返回值很有学问:如果s1小于s2返回一个小于0的数,如果s1大于s2返回一个大于0的数,如果相等则返回0。返回值是两个字符串中第一个不相等的字符ascii码的差值
         查找字符串strstr(const char *dst, <#const char *#>src);
         字符串复制strcpy(<#char *#>dst, const char *csc);
         字符串拼接char*strcpy(<#char *#>s1, <#const char *#>s2);

         */        //
        //    //字符串赋值strcpy
        //        char newstr[]={'\0'};
        //        strcpy(newstr *, str);
        //        printf("newstr=%s\n",newstr);
        //
        //        //字符串拼接
        //        strcat(str,str1);
        //        printf("str1=%s\n",str1);


         字符串数组;用来存放字符串(以'\0'结尾的数组被称为字符串)的数组;

                //字符串数组定义 char数组名[常量表达式1][常量表达式2] = {值1,值2,值3,.....}

                 char string[3][10]={"iphone", "android" "windows"};

               char string1[3][10]={{'i','P','h','o','n','e', '7'},{'A', 'n', 'd', 'r', 'o', 'i', 'd'},{'w', 'i', 'n','8'}};

               注意事项:字符串数组实际是字符型的二维数组

               每个字符长度不超过二维长度减一(字符串需要存放'\0')

       访问字符串,数组名[第一维下标]

       访问字符,数组名[第一维下标][第二维下标]

         sizeof和strlen区别:strlen指字符的长度,sizeof指文件或者数据占的内存(字节)


练习2创建一个字符串数组(内容是周围人的姓名),输出最长字符串的长度

//       求字符串长度的结果数据类型是unsigned long(无符号长整形)

//        无论是赋值还是作比较,都需要双方类型一致

//       访问字符串,数组名[第一维下标]

//        char arr[5][13]={"zhangpengfei", "qiaozipeng", "lizhipeng", "guoyaru", "lishuming"};

//        unsigned long max=0, k=0;

//        for (int i=0; i<5; i++) {

//            if(max<strlen(arr[i])){

//                max=strlen(arr[i]);

                k=i;

//            }

//        }

//        printf("%s,max=%lu\n", arr[k],max);

//    %c是按字符格式输入和输出
 //  %s是按字符串格式输入和输出

//       


输入年月日,判断是一年中的第几天

int dayOfYear(int year,int month,int day){

    int sum=0;

    int  rundays[]={31,29,31,30,31,30,31,31,30,31,30,31};

    int  days[]={31,28,31,30,31,30,31,31,30,31,30,31};

    

    if (year%4==0 || (year%400==0 && (year%100!=0)))

    {

        for (int i=0; i<month-1; i++)

        {

            sum +=rundays[i];

        }

       

    } else {

        for (int i=0; i<month-1; i++)

        {

            sum +=days[i];

        }

    }

    sum += day;

return sum;

}


        

      



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值