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;
}
原文地址:https://www.cnblogs.com/wohaoxue/p/4663519.html