ios学习记录 day5

1.数组是一种构造类型. 一维数组的定义: 类型说明符 数组名[数据个数//只能是常量] = {值1,值2.....}

2.数组下标从 0 开始,到 总个数-1 .

3.数组元素是变量,  区别 定义数组 和 数组元素 (有没有类型)

4.下标注意不要越界 系统不会检测 . 数组是一个整体 不能直接参加运算 只能对对单个元素进行处理 通常用到数组的地方都会用到循环

 

 

课上练习(1):有一个10个元素的数组,输出 每个数组元素的值=原值/数组首元素

    float a[10] = {0};
    for (int i = 0; i < 10; i++) {
        a[i] = arc4random() % (100 - 1 + 1) + 1;
        printf("a[%d] = %.2f\n",i,a[i]);
    }//正序
    for (int i = 9; i >= 0; i--) {
        a[i] /= a[0];
        printf("a[%d] = %.2f\n",i,a[i]);
    }//逆序

(2).一个数组复制给另一个

    int a[20] = {0},b[20] = {0};
    for (int i = 0; i < 20; i++) {
        a[i] = arc4random() % (50 - 20 + 1) + 20;
        b[i] = a[i];
        printf("a[%d] = %d\n",i,a[i]);
        printf("b[%d] = %d\n",i,b[i]);
    }
(3).两个数组下标相同的元素相加赋给第三个数组

    int a[10] = {0},b[10] = {0},c[10] = {0};
    
    for (int i = 0; i < 10; i++) {
        a[i] = arc4random() % (40 - 20 + 1) + 20;
        b[i] = arc4random() % (40 - 20 + 1) + 20;
        c[i] = a[i] + b[i];
        printf("a[%d]=%d\n",i,a[i]);
        printf("b[%d]=%d\n",i,b[i]);
        printf("a[%d]+b[%d]=%d\n",i,i,c[i]);
    }

 

5.冒泡排序

双层循环 外层是冒泡趟数,内层是比较次数;

练习:随机输出10个数,并从小到大输出

int a[10] = {0};
    int temp = 0;
    
    for (int i = 0; i < 10; i++) {
        a[i] = arc4random() % (100 - 1 + 1) + 1;
    }
    
    for (int i = 0; i < 10 - 1; i++) {
        for (int j = 0; j < 10 - i - 1; j++) {
            if (a[j] > a[j+1]) {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    
    for (int i = 0; i < 10; i++) {
        printf("a[%d]=%d\n",i,a[i]);
    }

 

6.字符数组

(1)strlen//计算字符串长度

字符 char c[7]={'i','p','h','o','n','e','\0'};  // \0结束符 不算字符

字符串 char c[7] = "iphone";//字符串 系统自带\0

字符串所占的空间 至少比 字符串长度 大1课上练习:

    char a[] = {'H','e','l','l','o',' ','L','a','n','o','u','\0'};
    char b[] = "Hello lanou";
    
    long alength = strlen(a);//字符串长度
    long blength = strlen(b);
    printf("alength = %ld\n",alength);
    printf("blength = %ld\n",blength);
    long asize = sizeof(a);//所占空间长度
    long bsize = sizeof(b);
    printf("asize = %ld\n",asize);
    printf("bsize = %ld\n",bsize);

输出:alength = 11
       blength = 11
       asize = 12
       bsize = 12

(2)strcpy(b,a);//把a复制给b 注意 b的空间要比a大

练习char a[] = "hello";
     char b[6] = "";//char b[6] = {'\0'};
     strcpy(b, a);
     printf("b = %s\n",b);

(3)strcat(a,b);//b拼接在a后面 赋给a   注意 a 要足够大

    char a[12] = "Hello";
    char b[] = "Lanou!";
    
    strcat(a, b);
    printf("%s\n",a);

(4)int value = strcmp(a,b);//a - b赋给value   a,b不能是单个字符

    char a[] = "hi";
    char b[] = "hello";
    
    int value = strcmp(a, b);
    printf("value = %d\n",value);

练习

(1)char a[] = "i love ios,i want an iphone5s";
    int i = 0,count = 0;
    while (a[i] != '\0') {
        if (a[i] == ' ') {
            count++;
        }
        i++;
    }
    printf("有%d个空格\n",count);

 

作业:

1.交换两个数 不申请第三个变量

    int a = 0,b = 0;
    scanf("%d,%d",&a,&b);
    printf("原来输入的是%d,%d\n",a,b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("倒过来输出%d,%d\n",a,b);

2、随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和。

3.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。

4、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。

5.有1000000个数,每个数取值范围是0-999999,找出其中重复的数。(面试题)

posted @ 2014-03-05 17:22  lxl奋小斗  阅读(257)  评论(0编辑  收藏  举报