zoukankan      html  css  js  c++  java
  • ios学习记录 day7

    1.类型 数组名[第一维][第二维] = 初始值;//第一维 第二维 是常量表达式

    2.二维数组定义时,可以不指定第一维的长度,但必须给定第二维. 元素个数不足,自动补齐.//int a[][3] = {1,2,3,4,5};

    3.字符串 字符型一维数组 | 字符串数组 字符型二维数组

    课上练习:

    1).将一个二维数组的行和列交换,存储到另外一个数组中去.

        int a[3][4] = {0};
        int b[4][3] = {0};
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 4; j++) {
                a[i][j] = arc4random() % (20 - 10 + 1) + 10;
                printf("%d ",a[i][j]);
            }
            printf(" ");
        }
        printf(" ");
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                b[i][j] = a[j][i];
                printf("%d ",b[i][j]);
            }
            printf(" ");
        }
    2).一个3行4列的二维数组,找出最大元素,输出所在的行和列.
        int a[3][4] = {0};
        int row = 0,col = 0;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 4; j++) {
                a[i][j] = arc4random() % (20 - 10 + 1) + 10;
                printf("%d ",a[i][j]);
                if (a[row][col] < a[i][j]) {
                    row = i;
                    col = j;
                }
            }
            printf(" ");
        }
        printf("max = %d 行%d,列%d ",a[row][col],row,col);
    (3)char str[3][20] = {"iphone","Android","winPhone"};
        for (int i = 0; i < 3; i++) {
            int length = 0;
            while (str[i][length] != '') {
                printf("%c",str[i][length]);
                length++;
            }
            printf(" ");
        }
    (4)char str[3][20] = {"iphone","Android","winPhone"};
        char str1[20] = "";
        
        strcpy(str1, str[1]);
        strcpy(str[1], str[2]);
        strcpy(str[2], str1);
        
        for (int i = 0; i < 3; i++) {
            printf("%s ",str[i]);
        }
    5).输入三个字符串,输出最大的那个.

        char str[3][20] = {0};
        int maxIndex = 0;
        for (int i = 0; i < 3; i++) {
            scanf("%s",str[i]);
        }
        for (int i = 0; i < 3; i++) {
            if (strlen(str[maxIndex]) < strlen(str[i])) {
                maxIndex = i;
            }
        }
        printf(" %s ",str[maxIndex]);
    6).通讯录有10个人名,按照姓的拼音缩写排列输出
    char str[10][20] = {0};
        char temp[20] = {0};
    //  随机生成5-15的名字
        for (int i = 0; i < 10; i++) {
            int rLength = arc4random() % (15 - 5 + 1) + 5;//随机产生名字的长度
            for (int j = 0; j < rLength; j++) {
                int r = arc4random() % 2;//真 假
                str[i][j] = r ? arc4random() % ('z'-'a'+1)+'a' : arc4random() % ('Z'-'A'+1)+'A';//真随机小写 假随机大写字母
            }
            str[i][rLength] = '';//名字结束
        }

    //    for (int i = 0; i < 10; i++) { /*名字键盘输入
    //        scanf("%s",str[i]);
    //    }                              */
        
        for (int i = 0; i < 10 - 1; i++) {
            for (int j = 0; j < 10 - i - 1; j++) {
                if (strcmp(str[j],str[j + 1]) > 0) {
                    strcpy(temp, str[j]);
                    strcpy(str[j], str[j + 1]);
                    strcpy(str[j + 1], temp);
                    
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            printf("%s ",str[i]);
        }

     作业:

    1.输入6个字符串,并对它们按从小到大的顺序排序后输出。

        char a[6][20] = {0};
        char temp[20] = {0};
        for (int i = 0; i < 6; i++) {
            scanf("%s",a[i]);
        }
        for (int i = 0; i < 6 - 1; i++) {
            for (int j = 0; j < 6 - i - 1; j++) {
                if (strcmp(a[j], a[j + 1]) > 0) {
                    strcpy(temp, a[j]);
                    strcpy(a[j], a[j + 1]);
                    strcpy(a[j + 1], temp);
                }
            }
        }
        printf(" ");
        for (int i = 0; i < 6; i++) {
            printf("%s ",a[i]);
        }

    2.找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。

         int a[3][4] = {
            5,5,5,5,
            1,9,9,9,
            1,9,9,9};
        int have = -1;
        
        
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 4; j++) {
                printf("%d ",a[i][j]);
            }
            printf(" ");
        }
        
        for (int i = 0; i < 3; i++) {
            int mini = 0,maxj = 0;
            for (int j = 0; j < 4; j++) {
                if (a[i][maxj] <= a[i][j]) {
                    maxj = j;
                }
            }
            for (int j = 0; j < 4; j++) {
                if (a[i][maxj] == a[i][j]) {
                    for (int k = 0; k < 3; k++) {
                        if (a[mini][j] >= a[k][j]) {
                            mini = k;
                        }
                    }
                    if (mini == i) {
                        printf("a[%d][%d] = %d 是鞍点 ",mini,j,a[mini][j]);
                        have = 0;
                    }
                }
            }
        }
        
        if (have) {
            printf("没有鞍点 ");
        }

    1.反转一个数组内的元素(例如一个数组内元素为1,2,3,4,5,反转后为5,4,3,2,1)

        int a[5] = {0};
        int b[5] = {0};
        for (int i = 0; i < 5; i++) {
            scanf("%d",&a[i]);
        }
        printf(" ");
        for (int i = 0; i < 5; i++) {
            b[i] = a[4 - i];
            printf("%d ",b[i]);
        }//(1)

        int a[5] = {1,2,3,4,5};
        for (int i = 0; i < 5 / 2; i++) {
            int temp = a[i];
            a[i] = a[5 - i - 1];
            a[5 - i - 1] = temp;
        }
        for (int i = 0; i < 5; i++) {
            printf("%d ",a[i]);
        }//(2)


    2.编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排序,然后将这两个数组合并成一个升序数组。
        int a1[5] = {12,48,71,77,88};
        int a2[5] = {21,32,40,55,73};
        int a[10] = {0};
        
        int i = 0,j = 0,k = 0;
        while (i < 5 && j < 5) {
    //        if (a1[i] > a2[j]) {
    //            a[k] = a2[j];

    //            k++;

    //            j++;
    //        }else{
    //            a[k++] = a1[i++];
    //        }
            a[k++] = a1[i] < a2[j] ? a1[i++] : a2[j++];
        }//往a里装完了一个数组
        while (i < 5) {
            a[k++] = a1[i++];
        }
        while (j < 5) {
            a[k++] = a2[j++];
        }//往a里装剩下的
        for (int i = 0; i < 10; i++) {
            printf("%d ",a[i]);
        }
    3.给定某年某月某日,将其转换成这一年的第几天并输出。
        int Mday[11] = {31,28,31,30,31,30,31,31,30,31,30};
        int year = 0,month = 0,day = 0;
        int sum = 0;
        scanf("%d,%d,%d",&year,&month,&day);
        for (int i = 0; i < month - 1; i++) {
            sum += Mday[i];
        }
        sum += day;
        if (month > 3) {
            if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                sum++;
            }
        }
        printf("是第%d天 ",sum);


    4.char result[50] = {0};
    char str1[] = "Lanou ";
    char str2[] = “dlios8”;
    char str3[] = " is best!";
    把str1, str2, str3合并到result数组中。
    “Lanou dlios8 is best!”

        char result[50] = {0};
        char str1[] = "Lanou ";
        char str2[] = "dlios8";
        char str3[] = " is best!";
        strcat(result, str1);
        strcat(result, str2);
        strcat(result, str3);
        printf("%s ",result);

    5.模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时,直接输入其编号(编号由计算机随机产生),
    若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。

    ////    int i=0,n=0,A=0,B=0,C=0,D=0,abandon=0,ran=0;
    ////    printf("输入参与投票的人数:");
    ////    scanf("%d",&n);
    ////    for(i = 0;i < n;i++)
    ////    {
    ////        ran = (arc4random() % (4 - 0 + 1) + 0) + 65;
    ////        switch(ran)
    ////        {
    ////            case 'A':
    ////                A++;
    ////                break;
    ////            case 'B':
    ////                B++;
    ////                break;
    ////            case 'C':
    ////                C++;
    ////                break;
    ////            case 'D':
    ////                D++;
    ////                break;
    ////            default :
    ////                abandon++;
    ////        }
    ////        
    ////    }
    ////    printf(" A=%d,B=%d,C=%d,D=%d,abandon=%d ",A,B,C,D,abandon);
    ////    i = 4;
    ////    while(i-- != 0)
    ////    {
    ////        if(A>=B&&A>=C&&A>=D&&A!=-1)
    ////        {
    ////            printf("A=%d,",A);
    ////            A=-1;
    ////        }
    ////        if(B>=A&&B>=C&&B>=D&&B!=-1)
    ////        {
    ////            printf("B=%d,",B);
    ////            B=-1;
    ////        }
    ////        if(C>=A&&C>=B&&C>=D&&C!=-1)
    ////        {
    ////            printf("C=%d,",C);
    ////            C=-1;
    ////        }
    ////        if(D>=A&&D>=B&&D>=C&&D!=-1)
    ////        {
    ////            printf("D=%d,",D);
    ////            D=-1;
    ////        }
    ////    }
    ////    
    ////    printf("abandon=%d, ",abandon);


    6.编写一个程序,要求用户输入一个美金数量, 然后显示出如何用最少的20美元、10美元、5美元和1美元来付款

     int money = 0;
        scanf("%d",&money);
        int array[4] = {20,10,5,1};
        for (int i = 0; i < 4; i++) {
            printf("%-2d元:%2d张 ",array[i],money / array[i]);
            money %= array[i];
        }

  • 相关阅读:
    CSS之属性操作
    Python模块之sys
    Python模块之hashlib:提供hash算法
    Python模块之random:获取随机数
    Python模块之time:时间获取和转换
    Python模块之os:操作系统接口函数
    Python最牛逼内建函数之 filter:过滤
    Python最牛逼内建函数之 zip()
    Python最牛逼内建函数之 max/min()
    Python最牛逼内建函数之 map()
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3586295.html
Copyright © 2011-2022 走看看