Day6_c语言_二维数组练习

本文介绍了使用C语言实现二维数组和三维数组的基本操作,包括随机填充数组元素、查找最大值及其位置、排序字符串数组、查找鞍点以及计算三维数组深度的平均值。

//

//  main.m

//  Day6_二维数组

//

//  Created by 王佳兴 on 14-10-21.

//  Copyright (c) 2014 lanou3g.com蓝鸥科技. All rights reserved.

//


#import <Foundation/Foundation.h>


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

    

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

    

    //定义一个34列的二维数组

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

    //循环用随机值得出二维数组中各个元素的值

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

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

            array[i][j] = arc4random() %50;

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

        }

        printf("\n");

    }

    //初始化最大元素的下标

   int maxRow = 0, maxCol =0;

    //循环得到最大值的下标

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

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

           if (array[i][j] > array[maxRow][maxCol]) {

                maxRow = i;

                maxCol = j;

            }

        }

    }

    //打印结果

    printf("最大值为:%d\n", array[maxRow][maxCol]);

    printf("最大值在第%d,%d\n", maxRow, maxCol);

    

    

    

    

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

    

    //定义包含6个字符串的字符数组

    char strings[6][12] = {"iOS","WangJiaxing","Cocos2D-X","Unity3D","Android","Java"};

    //循环将6个字符串排序

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

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

            //判断将字符串按升序排序

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

               char temp[12] = {0};

                strcpy(temp, strings[j]);

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

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

            }

        }

    }

    //按顺序打印出字符串

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

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

    }

    

    

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

    

   int array[10][10] = {0};

   int dest[10][10] = {0};

   int maxRow = 0, maxCol =0;

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

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

            array[i][j] = arc4random() %50;

            printf("%.2d ", array[i][j]);

           if (array[i][j] > array[i][maxRow]) {

                array[i][maxRow] = array[i][j];

                

            }

            dest[i][j] = array[j][i];

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

           if (dest[i][j] > dest[i][maxRow]) {

                dest[i][maxRow] = dest[i][j];

                

            }


    

        }

        

        printf("\n");

        printf("%d\n", array[i][maxRow]);

        printf("\n");

        printf("%d\n", dest[i][maxRow]);

    }

    printf("**************************\n");

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

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

            dest[i][j] = array[j][i];

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

           if (dest[i][j] > dest[i][maxRow]) {

                dest[i][maxRow] = dest[i][j];

                

            }

        }

    }

    

   int array[4][5] = {0};

       //第一重循环,遍历小数组

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

        //第二重循环,遍历小数组的元素

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

            //给每个元素赋值,随机范围是0~49

            array[i][j] = arc4random() %50;

           //输出每个元素

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

            

        }

        printf("\n");

        

    }

   int maxRow[5] = {0};

   int minCol[4] = {0};

    //遍历数组

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

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

           if (array[i][j] > maxRow[j]) {

                maxRow[j] = array[i][j];

            }

        }

        printf("%d", maxRow[i]);

        printf("\n");

    }

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

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

           if (array[i][j] < minCol[j]) {

                minCol[j] = array[j][i];

            }

        }

        printf("%d", minCol[i]);

        printf("\n");

    }

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

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

            

           if (array[i][j] == maxRow[j] && array[i][j] == minCol[i]) {

                printf("%d %d\n", i, j);

            }

        }

    }



    

    

    

    

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

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

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

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

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

                array[i][j][k] = arc4random() %50;

            }

        }

    }

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

   int sum = 0;

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

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

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

                 sum += array[i][j][k];

            }

            array1[i][j] += sum;

        }

    }

   int avg = sum / 25;

    printf("%d\n", avg);


    

   return 0;

}

    




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值