//⽣生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相 加,放到另外⼀一个数组中
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ int num1[]={},num2[]={},num3[]={};
for (int i = ; i<; i++) {
num1[i]=arc4random()%+;
num2[i]=arc4random()%+;
num3[i]=num1[i]+num2[i];
printf("%d + %d = %d\n ",num1[i],num2[i],num3[i]);
}
printf("\n");
return ;
}

一维数组,数组排序,字符数组

一、一维数组

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

数组里只能放相同数据类型的数据

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

int a[3]={5,3,0};//int [3]为数据类型,a为变量名

数组元素的访问:数组名+下标。

数组下标:数组元素在数组中的序号。从0开始,到数组总个数-1;

下标可以是常量也可以是变量。int a[5]={2,7,4,3,0};      a[0]=2,a[3]=3;

 //⽣生成⼀一个具有20个元素的数组,每个元素的取值范围是30-70之间,求数组元素的和。
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ //20个元素的数组
int number[]={},sum = ;
//随机数 arc4random()%41+30
for (int i = ; i<; i++) {
number[i]=arc4random()%+;
printf("%d ",number[i]);
sum = sum +number[i];
}
printf("\n%d",sum);
return ;
}
//⽣生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相 加,放到另外⼀一个数组中
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ int num1[]={},num2[]={},num3[]={};
for (int i = ; i<; i++) {
num1[i]=arc4random()%+;
num2[i]=arc4random()%+;
num3[i]=num1[i]+num2[i];
printf("%d + %d = %d\n ",num1[i],num2[i],num3[i]);
}
printf("\n");
return ;
}

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

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

数组不能参加运算,只能对单个元素进行运算。

二、数组排序

冒泡排序:

 //随机输出0-30的数,并按从小到大排序
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ int num1[]={};
for (int i = ; i<; i++) {
num1[i]=arc4random()%;
printf("%d ",num1[i]); }printf("\n");
for (int i = ; i<; i++) {
for (int j = ; j<-i; j++) {
if (num1[j]>num1[j+]) {
// num1[j]=num1[j]^num1[j+1];
// num1[j+1]=num1[j]^num1[j+1];
// num1[j]=num1[j+1]^num1[j];
int temp = num1[j];
num1[j] = num1[j+];
num1[j+] = temp;
}
}
}
for (int i = ; i<; i++) {
printf("%d ",num1[i]);
}
return ;
}

三、字符数组

用于存放字符变量的数组称为字符数组

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

有‘\0’结束标识的字符数组也称为字符串。   系统提供了很多字符串处理函数

strlen()计算字符串长度                    strcpy()字符串拷贝             strcat()字符串拼接        strcmp()字符串比较

字符串长度:字符串的有效长度,不包含‘\0’

字符串所占的空间至少要比字符串长度大1,因为字符串以‘\0’表示结束,系统提供的字符串处理函数都是根据‘\0’来判断字符数组结束

 #import <Foundation/Foundation.h>

 int main(int argc, const char * argv[])
{ char name[]="zhangsan",name1[]="lisi";
// printf("%s length is %lu",name,strlen(name));//字符串长度
// strcpy(name1, name);//字符串拷贝
// strcat(name, name1);//字符串拼接输出zhangsanlisi
// printf("%s",name);
int result = strcmp(name, name1);
printf("%d\n",result);
if (result>) {
printf("%s 大于 %s",name,name1);
}else if(result==) {
printf("%s 等于 %s",name,name1);
}else {
printf("%s 小于 %s",name,name1);
} return ;
}

数组通常与循环结合使⽤用。

数组下标从0开始,最⼤大到数组容量-1。

 一定要注意下标越界问题。 

字符串数组在定义的时候一定要多留一个元素位置留 给’\0’。

iOS学习笔记---C语言第四天的更多相关文章

  1. iOS学习笔记---oc语言第四天

    字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...

  2. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  3. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  4. iOS学习笔记---c语言第八天

    指针 首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值.用来存放变量地址的变量,就称为"指针变量" int *p=nul ...

  5. iOS学习笔记---oc语言第五天

    字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...

  6. iOS学习笔记---oc语言第一天

    第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++  java   ...

  7. iOS学习笔记---c语言第二天

    一.bool布尔类型    c语言没有bool类型,oc里有bool类型 是一种非真即假的数据类型,布尔类型的变量只有yes和no两个值.yes表示表达式是真,no表示表达式是假. 在c语言中认为非0 ...

  8. iOS学习笔记---oc语言第十天

    内存管理高级 一 属性的内部实现原理   assign   retain    copy assign 下的属性内部实现 setter方法 @property(nonatomic,assign)NSS ...

  9. iOS学习笔记---oc语言第九天

    初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...

随机推荐

  1. 使用MediaPlayer播放音频-----之一

    MediaPlayer提供了如下方法来指定装载相应的音频文件: 1.void  setDataSource( String  path):指定装载path路径所代表的文件. 2.void  setDa ...

  2. BroadcastReceiver的简介

    BroadcastReceiver本质上属于一个监听器,因此实现BroadcastReceiver的方法只要重写BroadcastReceiver的onReceive(Context  context ...

  3. C#画线源码

    画线 private void Form1_Load(object sender, EventArgs e) { this.Paint += new PaintEventHandler(Form1_P ...

  4. Pjax的使用

    什么是pjax? 现在很多网站( facebook,  twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新. 这样的用户体验, 比起整个 ...

  5. jquery 取的单选按钮组的值

    <input type=”radio” name=”wholesale_one” id=”wholesale_one” value=”1″ />1箱起批<input type=”ra ...

  6. struts2的 result 通配符 OGNL

    result: 1). result 是 action 节点的子节点 2). result 代表 action 方法执行后, 可能去的一个目的地 3). 一个 action 节点可以配置多个 resu ...

  7. 13个优秀的开源UML工具介绍

    本文将为您介绍12个优秀的UML工具: 1. StarUML StarUML(简称SU),是一种创建UML类图,是一种生成类图和其他类型的统一建模语言(UML)图表的工具.StarUML是一个开源项目 ...

  8. RPI学习--WebCam_mplayer

    1,安装mplayer $ sudo apt-get install mplayer 2,运行 $ sudo mplayer tv:// 有时会秀逗,绿屏,多试几下就好了,情况未知

  9. iOS 使用两个tableview的瀑布流

    代码 悦德财富:https://www.yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  10. JVM-对象的存活与死亡

    当Java虚拟机进行垃圾收集的时候,那么它必须要先判断对象,是否还存活,如果存活就不能对它进行回收.所以判断一个对象是否存活是Java虚拟机必须要实现的. 1.对象是否存活 1)引用计数器:给对象添加 ...