码迷,mamicode.com
首页 > 编程语言 > 详细

八、字符串数组

时间:2016-01-30 13:32:16      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

1.用于存放字符变量的数组称为字符数组
2.字符数组属于一维数组,类型char
3.字符串数组:是存放字符串的数组
4.字符串数组定义:
char 数组名[常量表达式1][常量表达式2{值1,值2...};
chat strings[3][10] = {"iphone","Android","win8"};包含三个字符串
5.字符串数组本质就是字符型二维数组。一个包含多个字符数组的数组
6.字符数组,行代表的是每个字符串,列代表的是字符串中的字符。
7.数据访问:
(1)访问某个字符串。数组名[第一维下标]
(2)访问某个字符。数组名[第一维下标][第二维下标]
8.每个字符串长度,不可超过第二维长度-1,因为有\0
9.每个字符串用数组名加一维下标表示
例如strings[0]代表第一个字符串
10.注意:字符串数组进行输入的时候,不适用“&”
11.多维数组
12.当数组下标在2个或者2个以上时,该数组称为多维数组。
         例如:
         int a[2][3][4]; 表示整型的三维数组,243
13.元素个数 = 2*3*4
14.三维数组的赋值运算
         for(int i = 0 ; i < 层数 i ++){
            for(int j = 0 ; j < 行数 ; j ++){
                for(int k = 0 ; k < 行数; k ++){
               
                }
            }
         }
15.注意事项
(1)多维数组理论上位数可以任意
(2)多维数组的元素个数 = 各维数 个数 乘积
(3)多维数组占用内存 = 元素个数 乘以 单个元素所占空间
        //字符串中修改字符,字符串。打印字符和字符串
//        char strings[3][10] = {"iPhone","iTouch","iPad"};
//        strcpy(strings[0], "Mac book");//修改字符串
//        strings[0][2] = ‘Q‘;//修改字符
//        printf("%s",strings[0]);//打印iTouch
//        printf("\n");
//        printf("%c",strings[0][4]);//打印第一个字符iPhone中的第四个字符o
//        printf("\n");
        //请输入三个单词,判断哪个最大,并确定位置
//        char strings[3][20] = {0};
//        unsigned long maxLength = 0;
//        int index = 0;
//        printf("请输入三个单词,并用空格隔开:");
//        scanf("%s%s%s",strings[0],strings[1],strings[2]);//输入三个字符
//        for (int i = 0; i < 3; i ++) {
//            unsigned long length = strlen(strings[i]);//定义长度
//            if (maxLength < length) {//如果上一个字符串长度小于下一个字符长度
//                maxLength = length;//拷贝为最大长度
//                index = i;//纪录当前i的次数,即第几个最大
//            }
//        }
//        printf("%s是最长单词,长度是%lu\n",strings[index],maxLength);
        //手机通讯录里有10个人的名字(英文),从大到小排序
//        char names[5][20] = {"doudou","chifan","shuijiao","dadoudou","zhangsan"};
//        for (int i = 0; i < 5 - 1; i ++) {//冒泡排序法,控制趟数
//            for (int j = 0; j < 5 - 1 - i; j ++) {//控制该趟比较次数
//                if (strcmp(names[j], names[j+1]) > 0) {//字符比较,用strcmp函数
//                    char temp[20] = {0};//定义一个空数组,用于中间变量的数值的接收
//                    strcpy(temp, names[j]);//字符串复制,用strcpy函数
//                    strcpy(names[j], names[j+1]);
//                    strcpy(names[j+1], temp);
//                }
//            }
//        }
//        for (int i = 0; i < 5; i ++) {//for循环输出
//            printf("%s\n",names[i]);
//        }
        //输入6个字符串,并对他们按从小到大排序
//        char strings[6][20] = {0};
//        printf("请输入6个字符:");
//        scanf("%s%s%s%s%s%s",strings[0],strings[1],strings[2],strings[3],strings[4],strings[5]);
//        for (int i = 0; i < 6 - 1; i ++) {
//            for (int j = 0; j < 6 - 1 - i; 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 < 10; i ++) {
//            printf("%s\n",strings[i]);
//        }
        //随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组里
//        char strings[3][4][5] = {0} , resStrings[4][5] = {0};
//        for (int i = 0; i < 3 ; i ++) {
//            for (int j = 0; j < 4; j ++) {
//                for (int k = 0; k < 5; k ++) {
//                    strings[i][j][k] = arc4random()%(100 - 10 + 1) + 10;
//                    printf("%d ",strings[i][j][k]);
//                }
//                printf("\n");
//            }
//            printf("\n");
//        }
//        for (int i = 0; i < 4; i ++) {
//            for (int j = 0; j < 5; j ++) {
//                resStrings[i][j] = (strings[0][i][j] + strings[1][i][j] + strings[2][i][j]) / 3 ;
//            }
//        }
//        printf("------输出深度------\n");
//        for (int i = 0; i < 4; i ++) {
//            for (int j = 0; j < 5; j ++) {
//                printf("%d ",resStrings[i][j]);
//            }
//            printf("\n");//        }        /*找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有鞍点),打印出相关信息*///        char strings[4][5] = {0};//        for (int i = 0; i < 4; i ++) {//            for (int j = 0; j < 5; j ++) {//                strings[i][j] = arc4random()%(100 - 10 + 1) + 10;//                printf("%d ",strings[i][j]);//            }//            printf("\n");//        }//        printf("-----------------------------\n");//        int max = 0 , min = 0;//        int jMax = 0 , iMin = 0;//        for (int i = 0; i < 4; i ++) {//            for (int j = 0; j < 5; j ++) {//该行中最大//                if (max < strings[i][j]) {//                    max = strings[i][j];//                    jMax = j;//                    //iMin = i;//                }//            }//            min = strings[0][jMax];//            for (int i = 1; i < 4; i ++) {//该列中最小//                if (min > strings[i][jMax]) {//                    min = strings[i][jMax];//                    iMin = i;//                }//            }//            if (max == min) {//                printf("i=%d j=%d 鞍点=%d \n",iMin,jMax,max);//            }//            //i = iMin;
//        }

八、字符串数组

标签:

原文地址:http://www.cnblogs.com/gnhxsk/p/5170648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!