[TwistedFate]一维数组的声明,遍历以及数组元素的排序

 数组: 相同数据类型的一组数据

   1.声明一个数组: 数据类型 数组名[常量表达式] = {初值1,初值2,初值3,......};

   2.数组个数可以用变量表示,但是不可以进行初始化 

例: int count = 5;
     int array[count] = {1, 3, 4, 2, 5};   错误

   3.如果声明数组时,数组元素个数大于 初始化给出的数组元素初值个数 系统 会自动补0

  int array[5] = {0};    // 相当于 int array[5] = {0,0,0,0,0};

   4.如果数组声明的时候没有给定元素个数 那么初值有几个元素 这个数组就有几个元素

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

   5.声明一个字符型的数组 

char str[] = {'s', 't', 'r'};

   6.字符串

    

char str1[] = "string";

   7.取出数组中元素

        使用 数字名[下标] 下标从0开始

   8.输出数组中的所有元素:遍历

      int array[6] = {27, 19, 22, 23, 45, 123};
      for(int i = 0; i <= 5;i++){  //循环输出
             printf("%d\t",arr[i]);
}

    9.数组越界问题:

1.系统不会提示越界 需要自己注意

 2.切记不要数组越界

    10.数组在内存当中 是一段连续的存储区域

         并且 数组名字 就是 数组元素的首地址(第一个元素的地址)

         注意: 数组不能直接赋值 : array1 = array 2;  错误

         数组的名字 是元素的首地址 并且地址是一个常量 常量是程序执行期间不能被改变的量 所以数组不能直接被赋值

     11.数组排序 冒泡排序   

          精髓:前后两个数比较大小 前面大于后面的 两个都交换位置 依次继续 

  例:随机产生10个[20,40]的数,并对十个数按从小到大排序          

int array[10];
          int temp;
          printf("输出数组:\n");
  	  for(int i = 0; i < 10; i++){
	  	array[i] = arc4random() % (40 - 20 + 1) + 20;
		printf("%d",array[i]);
            }
   	  printf("从小到大排序为:\n");
   	  for(int i = 0; i < 9; i++){// 外层循环控制比较的趟数
	  	for(int j = 0; j < 9 - i; j++){// 内层循环 控制每趟比较的次数
                   	temp = array[j + 1];
		   	array[j + 1] = array[j];
		   	array[j] = temp;
  		      }
          }
     	 for(int i = 0;i < 10; i++){
     		printf("%d\t",array[i]);
       }

12.字符数组的两种表现形式 iphone

<span style="white-space:pre">	</span>char str1[] = {'i', 'p', 'h','o', 'n', 'e'};
	char str2[] ="iphone"; // 字符串

      注意:(1) 字符串比字符数组多一个'\0'

 (2)'\0'用于结束字符串

13.打印数据类型或者变量所占字节数的函数  sizeof

<span style="white-space:pre">	</span>printf("%lu",sizeof(str1));                         // 输出结果6
	printf("%lu",sizeof(str2));// 输出结果7  多一个'\0'
	// %lu 无符号的长整型
	// unsigned long number1 = sizeof(str1);

14.计算字符串的长度

strlen(要计算的字符串)  打印有效长度

从第一个字符开始如果不是'\0' 长度加1 遇到'\0'结束 并且输出长度不包含'\0'

<span style="white-space:pre">	</span>   <span style="font-size:18px;">char str[] = "I Love You";
<span style="white-space:pre">	</span>char str1[] = {'2', 's', 'd', 'f', 'g'};
<span style="white-space:pre">	</span>printf("%lu",strlen(str));     输出10
<span style="white-space:pre">	</span>printf("%lu",strlen(str1));  输出11  (随机的数值)</span>

15.字符串的拷贝

从第一个字符开始拷贝 遇到\0结束

注意:目标字符串的长度最好大于源字符串

<pre name="code" class="html"><span style="font-size:18px;"><span style="white-space:pre">	</span>// strcpy(目标字符串,源字符串 );
	char str1[] = {0};
	char str2[] = "I Love You";
	strcpy(str1,str2);
	// 打印字符串 用%s 逐字输出字符 知道遇到'\0'结束
<span style="white-space:pre">	</span>printf("%s",str1)          // 输出结果:I Love You</span>
 

<span style="font-size:18px;"> </span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">16.字符串的拼接</span>

注意:被拼接的字符串长度一定要能够接受完整的字符串

// 把后面的str2 拼接到str1的后面

<span style="font-size:18px;"><span style="white-space:pre">	</span>strcat(str1,str2);</span>

17.字符串比较

<span style="font-size:18px;"><span style="white-space:pre">	</span>char str1[] = "I Love You";
<span style="white-space:pre">	</span>char str2[] = "I Miss You";</span>

// 接收比较结果

// 从第一个字符开始比较 如果一样 继续看第二个字符 如果不一样 开始进行比较 比较的内容是该字符在   ASCII码表中的对应数 前面的减去后面的 得到一个返回值 返回值是正数 前面大 反之后面大 然后比较结   束 如果返回值是0 那么两个字符串相同

<span style="white-space:pre">	</span>int number =strcmp(str1,str2);
<span style="white-space:pre">	</span>printf("%d",number);

       

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值