zoukankan      html  css  js  c++  java
  • ios7-21数组

    //模拟n个人参加选举的过程,并输出选举结果:假设候选人有四个,分别用A,B,C,D表示,当选某人时,直接输入其编号(由计算机随机产生),选举结束后按得票率从高到低输出候选人编号和所得票数
        int number = 0;
        int rand = 0;
        int temp = 0;
        char tt = 'a';
        char pp[4] = {'A', 'B', 'C', 'D'};
        int votes[4] = {0};
        printf("请输入选举人数:");
        scanf("%d",&number);
        
        for (int i = 0; i < number; i++) {
            rand = arc4random() % ( 68 - 65 +1) + 65;
            votes[rand - 65]++;
        }
        for (int i = 0; i < 4 - 1; i++) {
            for (int j = 0; j < 4 - 1 - i; j++) {
                if (votes[j] < votes[j + 1]) {
                    //对应数组联动
                    temp = votes[j];
                    tt = pp[j ];
                    votes[j] = votes[j + 1];
                    pp[j] = pp[j +1];
                    votes[j + 1] = temp;
                    pp[j +1] = tt;
                }
            }
        }
        for (int i = 0; i < 4; i++) {
            printf("获选人%c得票%d  
    ",pp[i],votes[i]);
        }

    //遇3死

    int k = 13;//活这得人数
        int i = 0; //下标数
        int count = 0; //报的数
        //int m = 0;//记住当前出局的下标
        int a[13] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13 };
        
        while (k > 1) {
            if (i >12) {
                i = 0;
            }
        
            //判断是否被标记为0
            if (a[i] != 0) {
                count++;
            }
            if (count == 3 ) {
                a[i] = 0;
                k--;
                count = 0;
            }
            //当报数为3的时候
            i++;
        }
        for (int j = 0; j < 13; j++) {
            if (a[j] != 0) {
                printf("%d------%d 
    ",j+1,a[j]);
            }
        }
        return 0;
    }

    //求鞍点

      int flog = 1;
        int z = 0;
      
        int a[4][3] = {
            {21,29,29},
            {35,35,38},
            {31,30,38},
            {27,33,36}
        };
        int maxhang = 0;
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                a[i][j]=arc4random() % (40 - 20 + 1) + 20;
                 printf("%d   ",a[i][j]);
            }
            printf("
    ");
        }
        
        for (int i = 0; i < 4; i++) {
            //找到行最大值
            for (int j = 0; j < 3; j++) {
                maxhang = a[i][j];
                  BOOL isMax = YES;
                for (int column = 0; column < 3; column++) {
                    if (maxhang < a[i][column]) {//说明不是最大行
                        isMax = NO;
                        break;
                    }
                }
                z = j;
                if (isMax ==NO) {
                    continue;
                }
                //判断是不是该列的最小值
                //假设是最小值
                //int min = array[i][j];
                for ( int k = 0;  k < 4;  k++) {
                    if(a[k][z] < maxhang)
                    {
                        flog = 0;
                        break;
                    }
                }
                
                if (flog == 1) {
                    printf("鞍点是%d,行是%d,列是%d",maxhang,i,z);
                }
                flog = 1;
            }
            }
          
    //在求每一列的和的时候,行变换的比较快,因此,外城循环处理列数,内层循环处理行数
    //    for (int i = 0; i < 3; i++) {
    //        for (int j = 0; j < 4; j++) {
    //            sum = sum + a[j][i];
    //        }
    //        printf("%d ",sum);
    //        sum = 0;
    //    }
    //
    //字符串数组
       // char array[4][20] = {"iOS","Windows","Android", "Symbian"};
        //注意:字符串数组,第二个维度,一定要比最长字符串的长度,大1
        //访问单个字符
    //    printf("%c
    ",array[i][5]);
    //    //输出字符串
    //    printf("%s是
    ",array[3]);//只访问到行索引即可.
    //    //输入所有字符串(遍历)
    //    for (int i = 0; i < 4; i++) {
    //        printf("%s",array[i]);
    //    }
        //练习:将上述字符串升序排列
    //    for (int j = 0; j < 4 -1; j++) {
    //        for (int i = 0; i < 4 - 1 -j; i++) {
    //            if ((strcmp(array[i],array[i+1]) > 0)) {
    //                char temp[20] = {'0'};
    //                //注意,字符串交换式,要使用字符串操作函数
    //                strcpy(temp, array[i]);
    //                strcpy(array[i], array[i+1]);
    //                strcpy(array[i + 1], temp);
    //                
    //            }
    //        }
    //
    //    }
    //    for (int i = 0;i < 4 ; i++) {
    //        printf("%s  ",array[i]);
    //    }
       /*
        int  array[4][3] = {0};
        for (int i = 0; i < 4; i++) {
            for (int k = 0; k < 3; k++) {
                array[i][k] = arc4random() %(40 - 20 + 1) + 20;
                printf("%d ",array[i][k]);
            }
            printf("
    ");
        }
        int  count = 0;//记录鞍点个数
        //假设是鞍点
        //假设改行最大值
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                int max = array[i][j];//假设最大值
                BOOL isMax = YES;
                for(int column = 0;column < 3;column++)
                {
                //判断是不是改行最大值
                    if (max < array[i][column]) {
                        //当前行不是改行最大的值,结束循环
                        isMax = NO;
                        break;
                    }
                }
                if (isMax == NO) {
                    //如果为NO,说明不是改行的最大值,已经不是满足鞍点的条件
                    continue;//直接进入下一个循环
                }
                int min = array[i][j];
                BOOL isMin = YES;//假设是该列中最小的
                //验证是不是该列最小的
                for (int  row = 0; row < 4; row++) {
                    if (min > array[row][j]) {
                        isMin = NO;
                        break;
                    }
                }
                if (isMin==NO) {
                    //如果为NO,说明不是该行的最小值,已经不是满足鞍点的条件
                    continue;//直接进入下一个验证
                }
                //当执行到该代码的时候说明什么问题
                count++;
                //鞍点个数  +1
                printf("鞍点数是:%d,所在行:%d,所在列:%d",array[i][j],i,j);
            }
        }
        //没有鞍点
        if(count == 0)
            printf("没有鞍点");
        */
        //三维数组:数组名[常量表达式1][常量表达式2][常量表达式3] = {值1,值2,值3...值n}
        //定义整数组
    //    int  array[3][4][3] = {0};
    //    //赋值
    //    for (int i = 0; i<3; i++) {//一本书
    //        for (int j = 0; j < 4; j++) {//一页字
    //            for (int k = 0; k<3; k++) {//一行字
    //                array[i][j][k] =arc4random() %(40 - 20 + 1) + 20;
    //                printf("array[%d][%d][%d] = %-3d", i, j,k, array[i][j][k]);
    //            }
    //            printf("
    ");
    //        }
    //        printf("
    ");
    //    }
    //    //求多维数组的纵深和
    //    //层变换
    //    int sum[4][3] = {0};
    //    for (int k = 0; k < 4; k++) {
    //        for (int j =0 ; j < 3; j++) {
    //            for (int i = 0; i < 3; i++) {
    //                sum[j][k] +=array[i][j][k];
    //            }
    //            printf("%-7d  ",sum[j][k]);
    //        }
    //        printf("
    ");
    //    }
        char map[10][10] =
        {
            //10行10列的数组地图
            {'#','#','#','#','#','#','#','#','#','#'},//0
            {'#',' ',' ',' ',' ','#',' ','#',' ',' '},//1
            {'#','#',' ','#','#','#',' ','#',' ','#'},//2
            {'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
            {'#','#','#',' ','#','#',' ','#',' ','#'},//4
            {'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
            {'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
            {'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
            {'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
            {'#','#','#','#','#','#','#','#','#','#'},//9
            //0   1   2   3   4   5   6   7   8   9
        };
    //    以上是地图, A 左移, S下移, D右移, W上移, 0 代表走迷宫的人, 编写程序, 走迷宫
    //    注: 空格是迷宫道路, #号是迷宫的墙
       // char people[10][10] ={'0'};
       // people[1][1] =map[1][1];
        int i =1;
        int j = 1;
        map[i][j] ='0';
        for (int k = 0; k < 10; k++) {
            for (int m = 0; m < 10; m++) {
                printf("%c ",map[k][m]);
            }
            printf("
    ");
        }
        char zoubu = 'a';
        //scanf("%c",&zoubu);
        while(zoubu != 'P')
        {
        printf("走步:
    ");
        scanf("%c",&zoubu);
        switch (zoubu) {
            case 'A'://左,[不变][减一]
    
                 if (map[i][j-1] =='#')
                     map[i][j] ='0';
                 else{
                    map[i][j-1] ='0';
                     map[i][j] =' ';}
                j = j - 1;
                               break;
            case 'S'://下[加一][不变]
                if (map[i + 1][j] =='#')
                    map[i][j] ='0';
                else{
                    map[i +1][j] ='0';
                    map[i][j] =' ';}
                i=i+1;
                break;
            case 'D'://右[不变][加一]
                if (map[i][j+1] =='#')
                    map[i][j] ='0';
                else{
                    map[i][j+1] ='0';
                    map[i][j] =' ';}
                j= j+ 1;
                break;
            case 'W'://上[减一][不变]
                if (map[i-1][j] =='#')
                    map[i][j] ='0';
                else
                {
                    map[i-1][j] ='0';
                    map[i][j] =' ';
                }
                i = i -1;
                break;
            default:
                for (int k = 0; k < 10; k++) {
                    for (int m = 0; m < 10; m++) {
                        printf("%c ",map[k][m]);
                    }
                    printf("
    ");
                }
                break;
        }
        }
        return 0;
    }
  • 相关阅读:
    EF CORE EntityFrameworkCore中关系模式一对一、一对多、多对多的使用
    C# LINQ中Join与GroupJoin的区别
    C#中HttpWebRequest、WebClient、HttpClient的使用
    .Net 性能优化--EFCore(EntityFrameworkCore)
    .Net 性能优化--缓存--分布式缓存
    .Net 性能优化--缓存--http缓存
    .Net 性能优化--缓存--分布式缓存 --sqlserver缓存
    .Net 性能优化--缓存--分布式缓存--reids缓存
    获取Kafka每个分区最新Offset的几种方法
    Wireshark使用入门
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4663519.html
Copyright © 2011-2022 走看看