iOS学习(C语言)知识点整理

一、整型数组

1)概念:一组类型相同,空间连续分布的数据。

2)int a[10] int 型里面有10个元素,数组的名字叫a, a还是数组的首地址 。

3)引用数组中的元素 a[i]:数组名+下标,下标从0开始 。

4)数组元素个数刚好与数组长度相当叫完全初始化。

5)数组的遍历即访问数组里面的所有元素。

6)元素的地址 &a[0] 取地址符+数组名+下标

7)遍历输入,访问不能越界,越界编译器检查不了,有较大的安全风险

8)int 数组的sizeof等于数组长度乘4

9)部分初始化后面省略部分全部赋值为0.

10)int a[5]={0} ;int a[5]={}; 部分初始化,全零补齐数组

11)数组的最大下标为数组的长度减一  例如:int a[]={1,2,3,4,5}  len=sizeof(a)/sizeof(int); 最大下标为 len-1。

12)数组长度[ ]里面只能是常量,符号常量

13)数组的初始化

①. Int list[5]={2,13,58,55,19};//一般写法

②. Int list[5]={6,17};//只对前两个元素赋值

③. Int list[5]={[3]=25,[4]=51};//对指定的元素赋值,这里为第三个和第四个

④. Int list[]={11,12,13}.//正确,右边的元素确定,则个数可以省略这里为3个。

⑤. Int list[];//错误,编译器无法知道应该分配多少的存储空间

⑥. Int list[5]; list ={17,18,19,20,21};//错误,只能在定义数组时这样进行初始化

⑦. Int list[‘A’]={1,2,3};//正确,相当于是ages[65]

⑧. Int count=5;int list[count];//如果不进行初始化,则这种写法正确,编译器不会报错为其分配20个字节的存储空间,

list[0]=1; list[1]=2;可以像这样对数组的元素进行赋值,但是2,3,4等元素的值时不确定的。

⑨. 而int count=5;int list[count]={1,2,3,4,5};//这种写法是错误的,在定义数组时对数组进行初始化,元素的个数必须为

常量或者不写,不能是一个变量

14)斐波拉契数列  1,1 ,2 ,3 ,5 ,8 ,13 ,21 ,34...

实现代码:

 int main(){
int arr[]={};
for (int i=; i<; i++) {
if(i<=)
arr[i]=;
else
arr[i]=arr[i-]+arr[i-];
}
for (int i=; i<; i++) {
printf("%d ",arr[i]);
}
return ;
}

二、排序

1)选择排序:每次从无序数列选择一个最小的,放在有序队列的后面

例如:int a[]={12,3,556,0,9,78};

1. 0]3,556,12,9,78

2. 0,3],556,12,9,78

3. 0,3,9]12,556,78

4. 0,3,9,12]556,78

5. 0,3,9,12,78]556

实现代码:

  int main(){
int a[]={,,,,,};
int len = sizeof(a)/sizeof(int);
int k;//纪录最小数的下标
int temp;
//一共要排len-1次
for(int i=;i<len-;i++){
//从a[i]~a[len-1]里面找出最小的值,放到a[i]的位置
k=i;
for(int j=i+;j<len;j++){
if(a[j]<a[k]){
k=j;
}
} //a[k]和a[i]做一次交换
if(k!=i){
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
} for(int i=;i<len;i++){
printf("%d ",a[i]);
}
return ;
}

2)冒泡排序:大数往下沉,小数往上浮

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

int a[]={12,3,556,0,9,78};

一轮比较,需要5次

1.1  [3,12],556,0,9,78

1.2  3,[12,556],0,9,78

1.3  3,12,[0,556],9,78

1.4  3,12,0,[9,556],78

1.5  3,12,0,9,[78,556]->一轮结束,最大的一个数沉入底部排序

实现代码:

 int main()
{
int a[]={,,,,,};
int temp;
int len = sizeof(a)/sizeof(int);
//排len-1次
for(int i=;i<len-;i++){
//无序的数列:a[0]~a[len-1-i],逐对比较
//前面>后面,就交换
//i=0,最后一对: a[len-2],a[len-1]
for(int j=;j<len--i;j++){
if(a[j]>a[j+]){
temp = a[j];
a[j] = a[j+];
a[j+] = temp;
}
}
} for(int i=;i<len;i++){
printf("%d ",a[i]);
}
return ;
}

3)插入排序

int a[]={12,3,556,0,9,78};

初始化 12[3,556,0,9,78]

1. 3,12[556,0,9,78]

2. 3,12,556[0,9,78]

3. 0,3,12,556[9,78]

4. 0,3,9,12,556,[78]

5. 0,3,9,12,78,556

{12,33,556,0,9,78}

实现代码:

  int main()
{
int a[]={,,,,,};
int len = sizeof(a)/sizeof(int);
int insert = ;
//一共要比较len-1次
for(int i=;i<len-;i++){
//把a[i+1] 插入到 前面有序数列a[0]~a[i]
insert = a[i+];
for(int j=;j<=i;j++){
if(a[j]>insert){
//插入a[j]这个位置
//后移a[j]~a[i]后移一个
printf("insert %d,pos = %d\n",insert,j);
for(int k=i;k>=j;k--){
a[k+]=a[k];
}
//插入位置填入insert
a[j]= insert;
break;
}
} for(int ii=;ii<len;ii++){
printf("%d ",a[ii]);
}
printf("\n");
} for(int ii=;ii<len;ii++){
printf("%d ",a[ii]);
}
return ;
}

三、字符数组

1)计算字符数组的有效长度用strlen(数组名)

2)实例:

小写转大写 实现代码:

 int main(){
char str[]={'h','e','l','l','o'};
int len = (int)strlen(str);
//小写转大写
for(int i=;i<len;i++){
if(str[i]>='a'&&str[i]<='z'){
str[i] = str[i]- ('a'-'A');
}
}
printf("%s",str); return ;
}

四、二维数组

1)实例:

利用二维数组打印杨辉三角

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10 10 5 1

实现代码:

  int main(){
int a[][];
for(int i=;i<;i++){
for(int j=;j<=i;j++){
if(j==||i==j)
a[i][j]=;
else
a[i][j]=a[i-][j]+a[i-][j-];
}
} for(int i=;i<;i++){
for(int j=;j<=i;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}
return ;
}

五、不使用第三方变量实现数据交换

实现代码:

 int main(){
int a=,b=;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d;b=%d",a,b); return ;
}

iOS 阶段学习第六天笔记(数组)的更多相关文章

  1. iOS阶段学习第六天笔记(数组)

                                                                                                  iOS学习( ...

  2. iOS阶段学习第一天笔记(Mac终端的操作)

    前言部分 原本从事的是.NET开发,一直在要不要转iOS 中犹豫徘徊,经过复杂的内心挣扎终于鼓起勇气辞职脱产学习iOS;希望通过四个月的 学习后能够拿到理想的薪资.以下是学习过程中的学习笔记,为了方便 ...

  3. iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)

    iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,      可以存放重复的元 ...

  4. iOS阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  5. iOS阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  6. iOS 阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  7. iOS 阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  8. iOS阶段学习第30天笔记( UIViewController—Delegate(代理) )

    iOS学习(UI)知识点整理 一.UIViewController的介绍 1)概念:UIViewController 即视图控制器,用来管理和控制页面跳转的一个类 ,iOS里面采用了MVC的体系结构, ...

  9. iOS 阶段学习第23天笔记(XML数据格式介绍)

    iOS学习(OC语言)知识点整理 一.XML数据格式介绍 1)概念:xml是extensible markup language扩展的标记语言,一般用来表示.传输和存储数据 2)xml与json目前使 ...

随机推荐

  1. 第三周JAVA程序设计基础学习总结

    20145322学号 <Java程序设计>第3周学习总结 ## 教材学习内容总结 之前第三章说过Java中主要有基本类型和类类型两种类型系统,第四章主要谈类类型. 类定义时使用class关 ...

  2. Lucene TF-IDF 相关性算分公式

    转自: http://lutaf.com/210.htm Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序 TF:词频,IDF:逆向文档频率,TF- ...

  3. 【cs231n】神经网络笔记笔记2

    ) # 对数据进行零中心化(重要) cov = np.dot(X.T, X) / X.shape[0] # 得到数据的协方差矩阵 数据协方差矩阵的第(i, j)个元素是数据第i个和第j个维度的协方差. ...

  4. RabbitMQ 与 AMQP路由

    概述 RabbitMQ(MQ 为 MessageQueue) 是一个消息队列,主要是用来实现应用程序的异步和解耦,同时起到消息缓冲.消息分发作用 消息队列 消息(Message)是指应用间传送的数据, ...

  5. [Vue]组件——插槽:slot(匿名插槽,具名插槽)与slot-scope(作用域插槽)

    1.单个插槽 | 匿名插槽 1.1<navigation-link> 子组件定义为: <a v-bind:href="url" class="nav-l ...

  6. javascript的几种使用多行字符串的方式

    JS里并没有标准的多行字符串的表示方法,但是在用模板的时候,为了保证模板的可阅读性,我们又不可避免的使用多行字符串,所以出现了各种搞法,这里以一段jade的模板作为示例,简单总结和对比一下. 字符串相 ...

  7. 多网卡绑定(bond)

    通过以下命令查看bond0的工作状态查询能详细的掌握bonding的工作状态,如这个绑定各网卡的工作状态.主备关系.链路侦测时间[root@ASMTS ~]# cat /proc/net/bondin ...

  8. 浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)

    最近看源码总发现一些没见过的关键字,今天就来整理一下native,strictfp,transient,volatile native 本地 native是与C++联合开发的时候用的!java自己开发 ...

  9. 1-15-2-RAID10 企业级RAID磁盘阵列的搭建(RAID1、RAID5、RAID10)

    RAID10的搭建: 有两种方法, 第一种:直接使用四块磁盘,创建级别为10的磁盘阵列 第二种:使用四块磁盘先创建两个RAID1,然后在用RAID1创建RAID0 第一步:添加五个磁盘到虚拟机 开机后 ...

  10. ES6 HttpApplication Middleware

    const HttpRequest = function() { this.query = '' } function HttpResponse() { this.body = [] this.sta ...