黑马程序员技术交流社区

标题: 数组的思考练习 [打印本页]

作者: laotang013    时间: 2015-10-19 21:41
标题: 数组的思考练习
/*数组思考练习*/
#include <stdio.h>

int main(){

    /*

    int arr[]={1,2};//==int arr[2]={1,2};
    int arr2[3]={1,2,2};

    for (int i=0; i<3; i++) {
        printf("%d\n",arr2);
    }

    */


    /*

     已知有一个int数组:int arr[6]={1,2,4,3,8,5};

     1.编写一个函数求这个数组的最大值:


    int arr[6]={1,2,4,3,8,5};
    int tempMax=arr[0];

    for (int i=1; i<6; i++) {
        if(arr>tempMax){
            tempMax=arr;
        }
    }

    //printf("arr数组的最大值是:%d\n",tempMax);

   */



    /*
     2.给这个数组从大到小排序.(两种方式)--选择排序.冒泡排序(自已实现)

    int arr[6]={1,2,4,3,8,5};
    int tempIndexMax=0;//定义一个变量保存角标

    for (int i=0; i<6-1; i++) {
        tempIndexMax=i;//每一次把要操作的角标先设置为第一个值的.
        for (int j=i+1; j<6; j++) {
            if(arr[tempIndexMax]<arr[j]){//然后开始与剩余的数据挨个比较
                tempIndexMax=j;//把值较大的角标先存着
            }
        }

    printf("%d\n",tempIndexMax) ;//循环一次,当前存的角标为当前最大值的角标.

     //让其与当前比较范围的第一个数作交换.
        int temp=arr;
        arr=arr[tempIndexMax];
        arr[tempIndexMax]=temp;

     //交换成功.打印当前这数组.当整个外循环执行完后的最后一次打印的为排序后的数组.
        for (int i=0; i<6; i++) {
            printf("%d\t",arr) ;
        }
        printf("\n");

    }

*/

/*
     3.用一个二维数组实现打印右边的星形.

     思路:
     1.定义一个二维数组.
     2.发现只有两种态对于每个元素.要么星星,要么空格.
     3.所以用0表示空格.用1表示星星.

*/

    int arr[4][7]={{0,0,0,1,0,0,0},{0,0,1,1,1,0,0},{0,1,1,1,1,1,0},{1,1,1,1,1,1,1}};

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

        for (int j=0; j<7; j++) {
            if (0==arr[j]) {
                printf(" ");//如果元素是0,则打印空格,否则打印星星.
            }else{
                 printf("*");
            }
        }

        printf("\n");
    }

    return 0;

}











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2