iOS中C语言的数组定义


//

#import   <Foundation/Foundation.h>

int   main( int   argc,   const   char   * argv[])
{

   
  // 数组是     构造类型
   
  int   array[ 5 ] = { 6 ,   8 ,   12 ,   15 ,   17 }; // 中括号内必须是 常量表达式 , 代表多少元素 , 注意要初始化 ({0}), 即可
   
  unsigned   long   a =    sizeof (array);
   
  printf ( "%lu" ,a); //ld 也可以   a = 20, 连续的内存空间 ,00,00,00,06-00,00,00,08..........
   
  //{0} 数组中的每个元素都给初值 0
   
  int   array1[ 10 ] = { 0 };
   
  // 第一个元素为 1, 其余 7 个为 0
   
  int   array2[ 8 ] = { 1 };
   
  // 中括号中不写元素的个数 , 则看实际有多少个元素分配内存
   
  float   array3[] = { 6.8 ,   7.2 ,   3.5 };

   
   
  int   array[ 3 ] = { 5 ,   6 ,   8 };
   
  // 定义的数组个数不能小于后边赋值的个数
   
  // 数组元素的下标从 0 开始
   
  // 数组中 存的 每个元素都是 变量
   
  // 在使用数组元素的时候 ,[] 内可以使变量
   
  int   i =   0 ;
    array[i] =
  5 ;
   
  printf ( "%d" ,array[i]);

   
   
  int   array[ 5 ] = { 5 ,   6 ,   8 ,   1 ,   14 };
   
  for   ( int   i =   0 ; i <   5 ; i++) {
       
  printf ( "%d\t" , array[i]);
    }

   
  // 产生随机数 , 求和
   
  int   array[ 20 ] = { 0 }, sum =   0 ;
   
  for   ( int   i =   0 ; i <   20 ; i++) {
        array[i] =
  arc4random () %   41   +   30 ;
        sum += array[i];
       
  printf ( "%d " , array[i]);
    }
    
  printf ( "\n%d\t" , sum);

   
  // 复制数组 , 我写的是倒序 , 呵呵
   
  int   array[ 5 ] = { 5 ,   6 ,   8 ,   1 ,   14 }, array1[ 5 ] = { 0 };
   
  for   ( int   i =   0 ; i <   5 ; i++) {
        array1[
4 -i] = array[i];
       
  printf ( "%d\t" , array[i]);
    }
   
  printf ( "\n" );
   
  for   ( int   i =   0 ; i <   5 ; i++) {
       
  printf ( "%d\t" , array1[i]);
    }

   
  // 两个数组相加 , 赋给第三个数组
   
  // 随机   随机   每次都是随机
   
  // 不要取错下标
   
   
  int   array2[ 10 ] = { 0 }, array3[ 10 ] = { 0 }, array4[ 10 ] = { 0 };
   
  for   ( int   i =   0 ; i <   10 ; i++) {
        array2[i] =
  arc4random () %   21   +   20 ;
       
  printf ( "&%d " , array2[i]);
        array3[i] =
  arc4random () %   21   +   20 ;
       
  printf ( "*%d " , array3[i]);
        array4[i] = array2[i] + array3[i];
       
  printf ( "+%d\t" , array4[i]);
    }

   
  // 冒泡排序
   
  int   array[ 20 ] = { 0 };
   
  for   ( int   i =   0 ; i <   20 ; i++) {
        array[i] =
  arc4random () %   101 ;
       
  printf ( "%d " , array[i]);
    }
   
  printf ( "\n" );
   
  // 外层循环控制比较趟数
   
  for   ( int   i =   0 ; i <   20   -   1 ; i++) {
       
  // 内层循环用来控制每趟比较次数
       
  for   ( int   j =   0 ; j <   20   -   1   - i; j++) {
           
  if   (array[j] > array[j +   1 ]) {
               
  // 定义一个临时变量先保存一个数
               
  int   temp = array[j];
                array[j] = array[j +
  1 ];
                array[j +
  1 ] = temp;
            }
        }
    }
   
  printf ( "\n" );
   
  for   ( int   i =   0 ; i <   20 ; i++) {
       
  printf ( "%d " , array[i]);
    }

   
  // 选择排序
   
  // 思想 : 每次选出一个最小值的下标 , 一趟结束后把最小值放到最前边
   
  int   array[ 10 ] = { 0 };
   
  for   ( int   i =   0 ; i <   10 ; i++) {
        array[i] =
  arc4random () %   101 ;
       
  printf ( "%d " , array[i]);
    }
   
  printf ( "\n" );
   
  // 外层循环控制比较趟数
   
  for   ( int   i =   0 ; i <   10   -   1 ; i++) {
       
  // 每次假定无序区的第一个数是最小值
       
  int   minIndex = i;
       
  // 从无序区的第二个数开始 , 到最后一个
       
  for   ( int   j = i +   1 ; j <   10 ; j++) {
           
  // 如果这个数比当前的最小值更小
           
  if   (array[minIndex] > array[j]) {
               
  // 就把这个数的下标更改成最小值的下标
                minIndex = j;
            }
        }
       
  // 如果这一趟比较下来 , 最小值不是开始假定的最小值下标 , 才交换 , 否则不交换
       
  if   (minIndex != i) {
           
  int   temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
    }
   
  printf ( "\n" );
//输出
     for ( int i =  0; i <  10; i++) {
         printf( "%d ", array[i]);
    }

     // 字符数组 , 字符串就是一维的字符数组
     char c[ 10] = { 'i''P''h''o''n''e'};//不包含\0
     // 如果不写数组元素个数 , 那么默认数组元素个数是 总字符数+1
     // 系统会自动补一个 '\0' 用来标示字符串的结束
     char c1[ 10] =  "iPhone";
     char c2[] =  "iPhone"; // 7 个元素 , 末尾是 '\0'
     printf( "%lu ", sizeof(c2));
     for ( int i =  0; i <  10; i++) {
         printf( "%c ", c[i]); //i P h o n e  反问号
         //printf("%d ", c1[i]);//"\0" 对应的 ASCII 0
    }

     // 定义字符串的时候 , 元素个数至少是字符个数 +1
     char str[ 8] =  "andr0id"; //andr\0id,\0  就会截取
    str[ 4] =  0;
     printf( "%s",str); //%s 工作原理  ,  碰到数字 0  就会结束
   
     //strlen() 是函数 , 用来计算字符串的长度 , 不包含 '\0'
     //sizeof 是一个运算符 , 用来测算数据类型 , 或者变量 , 所占内存大小 ( 所占用的字节数 )
     printf( "%lu", strlen(str)); // 无符号长整形
   
 
     char str1[ 20] =  "iPhone";
     //char str2[20] = {0};
     char str2[ 20] =  "aaaaaaaaaaaaaa";
     // 第一个参数 : 拷到哪儿 , 第二个参数 : 从哪儿拷
     // str1 第一个字符开始往 str2 拷贝 , 拷贝到 '\0' 结束
     strcpy(str2, str1);
     printf( "%s",str2);
     printf( "\n%c",str2[ 13]); // 总共 14 个字符 , 下标到 13.

     char str1[ 20] =  "iPhone";
     // 著名的崩溃
     char str3[ 3] =  "ok";
     // 被拷入的字符串 , 要足够大
     strcpy(str3, str1);

     //笔试,编码习惯,逻辑思维,OC垫底儿
   

     char str1[ 20] =  "iPhone";
     char str2[ 10] =  "Android";
     // str2 里边的内容拼接到 str1 后边
     // str1 '\0' 开始拼接
     // 被拼入的字符内存要足够大
     strcat(str1, str2);
     printf( "%s",str1);
     printf( "\n%d",str1[ 12]); // 没数字的是 0

     char str[] =  "abc";
     char str1[] =  "adc";
     // 逐个 比较ASCII 的差值 , 如果循环结束 , 结果为 0
     // 代表两个字符串相等
     int result =  strcmp(str, str1); // 返回值是 int
     printf( "%d",result);
   
     // 计算空格个数
     char str[ 30] =  "I love ios,i want an iPhone5";
     int count =  0, index =  0;
     while (str[index] !=  '\0') {
         if (str[index] ==  ' ') {
            count++;
        }
        index++;
    }
     printf( "%d",count);
   
     char str[ 100] = { 0};
     // 使用 scanf 数组字符串要用 %s, 不用取地址符
     // 但是默认 scanf 遇到空格或回车就代表输入结束
     // 使用 %[^\n] 代表除了回车 , 其余的全接收
     scanf( "%[^\n]", str);
     printf( "%s", str);
     return  0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值