04数组 字符数组

数组:相同数据类型的成员组成的一组数据。

数组是一种构造类型,相同数据类型组成的新数据类型。

一维数组的定义:

类型说明符  数组名[常量表达式]= {值 1, 值 2....};

  int a[5] = { 2, 3, 4 }; 

  int b[5] = { 0 };

  int c[]={ 2, 4, 6, 8 };

  char str[] = "iPhone5";

  数组元素的访问 : 数组元素在数组中的序号,从 0 开始,

    下标可以是常量,也可以是变量   a[0] ,a[i];

      注意区别   定义数组 和 数组元素

 

         int  a[10] ;      

               a[10] ;

1、定义一个具有20个元素的整型数组,每个元素的取值范围是

30-70之间,求数组元素的和。 

  int a[20] = {};

    int sum = 0;

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

        int random= arc4random()%(70-30+1)+30;

        a[i] = random;

        sum=sum+a[i];

           }

    printf("sum:%d",sum);

 

3、生成2个数组,每个数组都有10个元素,元素取值范围20-40 之间,数组对应元素相加,放到另外⼀一个数组中。

    int a[10]={0};

    int b[10]={0};

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

        int r= arc4random()%(40-20+1)+20;

        a[i]=r;

        b[i]=r;

        printf("a[%d]+b[%d]=%d \n",i,i,a[i]+b[i]);

    }

 

 

    注意:系统不会检测 数组元素的下标是否越界,编程时,必须保证数组下标不能越界。

             数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环。

 

 

   数租排序

  冒泡排序是比较常见的排序算法;

  冒泡排序涉及到双循环,外层循环控制趟数,内层循环控制比较次数;

//1、随机产⽣生10个[20,40]数,并对10个数从⼩小到⼤大排序。 

int a[10]={0};

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

        int r=arc4random()%(40-20+1)+20;

        a[i]=r;

    }

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

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

            if (a[j]>a[j+1]) {

                int temp=a[j];

                a[j]=a[j+1];

                a[j+1]=temp;

            }

        }

        

        }

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

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

    }

 

   字符数组  

 用于存放字符变量的数组,属于一维数组,定义方式与普通一维数组相似,只是类型是  char

 字符数组的定义:

    char c[10] = {'i', 'p', 'h', 'o', 'n', 'e'};   或者 char c[10]="iphone";

    有'\0'结束标识的字符数组也称为字符串 。

    系统提供了很多字符串处理函数

  strlen() 计算字符串长度

  strcpy() 字符串拷贝

  strcat() 字符串拼接

  strcmp() 字符串比较

  //查找字符串中的空格数:

   //例如:“I love iOS, i want an iPhone5s” 6个空格 

 int c= 0;

    char a[]="I love iOS, i want an iPhone5s";

    for ( int i = 0; i < strlen(a); i++) {

        if (a[i]==' ') {

             c=c+1;

        }

    }

      printf("%d ",c);

 

    //将字符串倒转:

     //例如:“afjnpue” 转变成字符串“eupnjfa”

  //(注:是改变字符串本⾝身,不是反向输出)

char a[]="afhnpue";


    int number=strlen(a);


    for (int i = 0; i < number/2; i++) {  //前面的数和最后的数交换


        char temp = a[i];


        a[i]=a[number-1-i];


        a[number-1-i]=temp;

    }
    printf("%s",a);

 

注意: 字符串所占的空间 至少要比字符串长度大1,因为字符串以'\0'表示结束。 
系统提高的字符串处理函数都是根据
'\0' 来判断字符串是否结束
char str[]={'o','k'};
char str[]="ok";


 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

          

 

posted on 2014-11-03 20:44  pannying  阅读(210)  评论(0编辑  收藏  举报