zoukankan      html  css  js  c++  java
  • ioS开发之c语言基础-多维数组,字符串

    //

    //  main.m

    //  C5-多维数组,字符串数组

    //

    //  Created by dllo on 15/10/11.

    //  Copyright (c) 2015 dllo. All rights reserved.

    //


    #import <Foundation/Foundation.h>


    int main(int argc, const char * argv[]) {

    //    int a[3]= {4,5,6};

    //    printf("%d",1[a + 1]);

        

        //数组a[],这种形式只是为了更好的让人理解,实际上在计算机中只是知道一个数组的首地址,再进行位移操作

        

        

        // 定义一个二维数组

        // int arr[第一维度][第二维度] = 初值   行话中不说几行几列,第一维度也可以表示列,并不确定

        

      //  int arr[2][3] = {1,2,3,4,5,6};

        

        

        //只能第一维度不写,注意,系统会根据初值个数确定数组大小!!第二维度不可以不写

     //   int b[][3] = {1,2,3,4};

        

        

        //访问二维数组数组中的元素

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

       // printf("%d ",arr[1][1]);

        

        //遍历二维数组

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

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

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

    //            printf("%d  ",arr[i][j]);

    //        }

    //    }

        // 一个1020 列的二位数组,为每一个数组的元素附一个随机数,编程找出 与第一个元素相等的元素个数

    //    int a[10][20] = {0};

    //    int count = -1;

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

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

                //遍历赋值

    //            a[i][j] = arc4random() % (70 - 20 + 1) + 20;

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

    //            

                //若等于第一个元素,计数加1

                //注意第一次比较的时候a[0][0] = a[0][0]成立,count成立,所以count初值为-1

    //            if(a[i][j] == a[0][0]){

    //                count++;

    //            }

    //             

    //            }

    //        printf(" ");

    //        }

    //    

    //    

    //        printf("%d", count);

        //1将一个二维数组的行和列交换,储存到另外的一个数组中

        

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

    //    int  b[3][2] = {0};

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

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

                 //交换

                //23列交换后的数组为32

    //            b[j][i] = a[i][j];

    //        }

    //    }

        //输出打印交换后的数组

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

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

    //            printf("%d ", b[i][j]);

    //        }

    //    }



        //2有一个34列的二维数组要求编程找出最大元素,并输出所在行列

    //    

    //    int a[3][4] = {0};

    //    int max = 0;

    //    int arr = 0;

    //    int b = 0;

        //输出随机数组

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

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

    //            a[i][j] = arc4random() % (70 - 20 + 1) + 20;

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

    //        }

    //        printf(" ");

    //    }

        //找到最大值

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

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

    //  

    //            if(a[i][j] > max){

    //                max = a[i][j];

    //                             }

    //                }

    //    }

        //输出最大值,和相等的最大值!!注意随机产生的数的最大值有可能相等

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

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

    //

    //    if(max == a[i][j]){

    //        max = a[i][j];

    //        arr = i + 1;

    //        b = j + 1;

    //        printf(":%d:%d最大值:%d", arr, b, max);

    //        printf(" ");

    //        

    //    }

    //        }

    //      

    //   

    //    

    //    }

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

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

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

    //            for (int k= 0; k < 4; k++) {

    //                arr[i][j][k] =arc4random() % (70 - 12 + 1) + 12;

    //                printf("%d ", arr[i][j][k]);

    //            }

    //            printf(" ");

    //        }

    //        printf(" ");

    //        

    //    }

        

        

        

        //字符串数组

        //字符串数组也是二维数组,只不过每行都用''结尾,而且不一定满所在行

     //   char str[3][7] = {"aaa", "bbbb", "cccccc"};

        //打印一个字符串

     //   printf("%s ", str[1]);

        //打印一个元素

      //  printf("%c ", str[1][0]);

        

        

        //创建一个字符串数组,输出最长字符串的长度,,strlen(a)求得是王琼的长度,因为数组的首地址就是a[0]的首地址.他们的首地址是重合的

    //    

        char a[3][20] = {"wangqiong", "lijinmingss", "yuhao"};

        long   len = 0;

        long   maxlen = 0;

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

            for (int j = 0;a[i][j] != ''; j++) {

                len++;//计数加1

                

            }

            //比较暂存的最大值

            if (len > maxlen) {

                maxlen = len;

                len = 0;

              

            }

            printf(" ");

        }

        printf("%ld",maxlen);

    //    char a[3][20] = {"wangqiongjhgjhhj", "lijinming", "yuhao"};

    //    long   len = 0;

    //    long   maxlen = 0;

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

    //        len = strlen(a[i]);

    //        

    //        //比较暂存的最大值

    //        if (len > maxlen) {

    //           maxlen = len;

    //           

    //        }

    //}

    //    // 输出最长的字符串

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

    //        if (strlen(a[i]) == maxlen) {

    //            printf("%s",a[i]);

    //        }

    //    }

    //    printf("%ld",maxlen);

        // 上面的代码可以看成时strlen的具体实现

    }


        


        //创建一个字符串,对字符串的内容从大到小排序

    //    char a[3][20] = {"yuhao", "lijinming", "wangqiong"};

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

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

    //     

    //        if(strcmp(a[j], a[j + 1]) < 0){

    //          //  交换

    //          //  注意b数组元素个数应该参考谁

    //         //   注意,数组不可以整体赋值,应该用strcpy代替

    //            char b[20] = {0};

    //            strcpy(b, a[j]);

    //            strcpy(a[j], a[j + 1]);

    //            strcpy(a[j + 1], b);

    //            

    //           

    //        }

    //        

    //              }

    //       

    //        

    //}

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

    //

    //        printf("%s ",a[i]);

    //

    //    

    //    }

    //}

        //输入6个字符串,并对它们按从小到大的顺序排序后输出。

    //    

    //        char strings[][20] = {"wangziyu", "duhaoran", "haoyun", "niuzhiquan", "yangguo", "xiaolongnv", "linghuchog", "guojing", "xiaofeng", "guomeimei", "zhoubotong", "cuiyayun"};

    //        int size = sizeof(strings)/sizeof(strings[0]);

    //        unsigned long maxlenth = strlen(strings[0]);

    //        unsigned long  minlenth = strlen(strings[0]);

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

    //            maxlenth = maxlenth > strlen(strings[i]) ? maxlenth : strlen(strings[i]);

    //            minlenth = minlenth < strlen(strings[i]) ? minlenth: strlen(strings[i]);

    //            printf("%s ", strings[i]);

    //        }

    //    

    //    

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

    //            //求最长的字符串 并输出其长度

    //            if (maxlenth == strlen(strings[i])) {

    //                printf("%s  %lu ", strings[i], maxlenth);

    //            }

    //            //求最短的字符串 并输出其长度

    //            if (minlenth == strlen(strings[i])) {

    //                printf("%s  %lu ", strings[i], minlenth);

    //            }

    //        }

    //        for (int i = 0; i < size-1; i++) {

    //            for (int j = 0; j < size - i - 1; j++) {

    //                //比较字符串的大小 如果前面的字符串大 则交换位置

    //                if (strcmp(strings[j], strings[j+1]) > 0) {

    //                    char temp[20] = {0};

    //                    strcpy(temp, strings[j]);

    //                    strcpy(strings[j], strings[j+1]);

    //                    strcpy(strings[j+1], temp);

    //                }

    //            }

    //        }

    //        

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

    //            printf("%s ", strings[i]);

    //        }

       //  4、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中(相当于一个模仿从上面看)。

        

      //  float arr[3][4][5] = {0};

        //    float sum = 0;

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

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

        //            sum = 0;

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

        //                arr[i][j][k] = arc4random()%99 + 1;

        //                printf("%6.2f ", arr[i][j][k]);

        //                //把深度的值累加

        //                sum += arr[i][j][k];

        //            }

        //            //保存深度平均值

        //            //arr[i][j][0] = sum/5;

        //            printf(" = %6.2f", sum/5);

        //            printf(" ");

        //        }

        //        printf(" ");

        //    }

        //    printf("深度平均值: ");

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

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

        //            printf("%6.2f", arr[i][j][0]);

        //        }

        //        printf(" ");

        //    }


         // 3、(****)找出一个二维数组中的鞍点,即该位置上的元素在该行中最大,在该列中最小(也可能没有鞍点”),打印有关信息。(提示:注意特殊情况:没鞍点或多个鞍点)

        

        

        //    int arr[N][M] = {0};

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

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

        //            arr[i][j] = arc4random()%99 + 1;

        //            printf("%-2d ", arr[i][j]);

        //        }

        //        printf(" ");

        //    }

        //    BOOL flag = 1;

        //    int count = 0;

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

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

        //            //把数组当前的数和整行比较,如果不是最大值跳出当前循环,并把标记置为0

        //            for (int k = 0; k < M; k++) {

        //                if (arr[i][j] < arr[i][k]){

        //                    flag = 0;

        //                    break;

        //                }

        //            }

        //

        //            if (flag) {

        //                //把数组当前的数和整列进行比较,如果不是最小的跳出当前循环,并把标记置为0

        //                for (int x = 0; x < N; x++) {

        //                    if (arr[i][j] > arr[x][j]) {

        //                        flag = 0;

        //                        break;

        //                    }

        //                }

        //            }

        //

        //            //如果标记不为零,说明数组当前数据为行最大值,列最小值.是鞍点 打印出来

        //             

        //            flag = 1;

        //        }

        //    }

        //    if (count == 0) {

        //        printf("没有鞍点!!");

        //    }

    //    

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

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

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

    //            a[i][j] = arc4random() % (99 - 1 + 1) + 1;

    //            printf("%-2d ",a[i][j]);

    //        }

    //        printf(" ");

    //    }

    //    BOOL flag = 1;

    //    int count = 0;

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

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

    //            //将数组当前值和整行数做比较,如果不是最大值就跳出循环,并把标记置为0

    //            for (int k = 1 ; k < 5; k++) {

    //                if (a[i][j] < a[i][k]) {

    //                    flag = 0;

    //                    break;

    //                }

    //            }

    //            if (flag) {

    //                //把数组当前的值和整列作比较,如果不是最小值就跳出循环,并把标记置为0

    //                for(int x = 1; x < 3; x++){

    //                    if (a[i][j] > a[x][j]) {

    //                        flag = 0;

    //                        break;

    //                    }

    //                }

    //            }

    //            //如果标记不为0 表明当前值为行最大值,列最小值,是鞍点,打印出来

    //            if (flag) {

    //                printf("a[%d][%d] = %d是鞍点  ",i,j,a[i][j]);

    //                count++;

    //            }

    //            flag = 1;

    //        }

    //        

    //    }

    //    

    //    if (count == 0) {

    //        printf("没有鞍点");

    //    }

    //    

    //

    //    int a[4][5][6] = {0};

    //    int sum =0;

    //    int b = 0;

    //    int c[4][5] = {0};

    //    

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

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

    //            for (int k = 0; k < 6; k++) {

    //                a[i][j][k] = arc4random() % (90 - 20 + 1) +20;

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

    //                sum += a[i][j][k];

    //                

    //            }

    //             b = sum / 6;

    //            c[i][j] =b;

    //        }

    //    }

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

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

    //            printf("%d ", c[i][j]);

    //        }

    //        printf(" ");

    //    }

    //  

        

        


    //    自己实现strcpy的功能.

      /*  1、(**)有一个34列的二维数组,要求编程找出最大的元素,并输出所在的行和列。

       

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

       int max = 0;

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

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

       a[i][j] = arc4random() % (50 - 20 + 1) + 20;

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

       

       if(a[i][j] > max){

       max = a[i][j];

       }

       

       }

       printf(" ");

       }

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

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

       if (a[i][j] == max) {

       int b = i + 1;

       int c = j + 1;

       printf("最大值:%d所在行:%d所在列:%d ",max,b,c);

       }

       }

       }

       

        2、(**)输入6个字符串,并对它们按从小到大的顺序排序后输出。

        3、(****)找出一个二维数组中的鞍点,即该位置上的元素在该行中最大,在该列中最小(也可能没有鞍点”),打印有关信息。(提示:注意特殊情况:没鞍点或多个鞍点)

        4、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中(相当于一个模仿从上面看)。

       float arr[3][4][5] = {0};

       //    float sum = 0;

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

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

       //            sum = 0;

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

       //                arr[i][j][k] = arc4random()%99 + 1;

       //                printf("%6.2f ", arr[i][j][k]);

       //                //把深度的值累加

       //                sum += arr[i][j][k];

       //            }

       //            //保存深度平均值

       //            //arr[i][j][0] = sum/5;

       //            printf(" = %6.2f", sum/5);

       //            printf(" ");

       //        }

       //        printf(" ");

       //    }

       //    printf("深度平均值: ");

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

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

       //            printf("%6.2f", arr[i][j][0]);

       //        }

       //        printf(" ");

       //    }

       //

        

        */

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        


  • 相关阅读:
    获取浏览器当前宽高
    获取当前页面一个 CSS 像素与一个物理像素之间的比率
    获取对象的所有属性,不管是否可遍历,不管是自身的还是原型链上的
    获取当前页面内所有框架窗口
    获取当前页面视口(viewport)宽高
    获取当前嵌入窗口所在的那个元素节点
    获取当前页面内框架窗口的数量
    获取窗口顶层对象
    获取当前窗口访问过的页面的数量
    获取`script`标签中的代码内容
  • 原文地址:https://www.cnblogs.com/yuhaojishuboke/p/5043138.html
Copyright © 2011-2022 走看看