(IOS自学)C语言基础学习(一)
来源:互联网 发布:照片比较软件 编辑:程序博客网 时间:2024/05/17 09:11
函数:
.关于自定义函数分配空间问题:在形参定义后,并不会立即分配空间,而是在函数被调用时才会真正的分配内存空间
数组:
1。数组名代表数组的地址。(%p——获取数组的地址)
2。先定义的数组在内存单元里分配高地址,后定义的分配低地址。
3.存储方式:
1)计算机会给数组分配一块连续的存储空间
2)数组名代表数组的首地址,从首地址位置,一次存入数组的第1个,第2个。。。。第n个元素。
3)每个元素占用相同的字节数(取决于数组类型)。
4)并且元素之间的地址是连续的。
4。数组名是一个常量,存储的是数组的首地址
5。数组作为函数参数有两种形式:
1)一种是把数组元素作为实参使用。
2)一种是把数组名作为函数的形参和实参使用。(比如定义一个函数的形参为数组,那么调用该函数时使用的实参也必须是数组名)
注意: 1)在实现实参和形参传递时不是“值传递”,而是“地址传递”,实参数组名将该数组的起始地址传递给形参数组,两个数组共享
一段内存单元,编译系统不再为形参分配存储单元。
2)数组作为函数参数后,数组的长度信息会丢失,变成地址长度。
3)C语言中规定,不管什么数据类型的数据,数据的内存地址在内存中都只占8个字节。
几种排序方法
1.冒泡排序:
思想:大数沉淀,小数气泡。
代码实现:
<span style="font-size:14px;">#include <stdio.h>//定义一个冒泡的函数void maoPao(int arr[],int len){ int temp; for (int i=0; i<len-1; i++) { for (int j=0; j<len-1-i; j++) { if(arr[j]>arr[j+1]){ temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } }}int main(int argc, const char * argv[]) { int a[10] = {11,21,222,1,33,23,111,232,55,43}; maoPao(a, 10); for (int i=0; i<10; i++) { printf("%d\t",a[i]); } printf("\n"); return 0;}</span>
2.选择排序
思想:
首先在未排列序列中找到最小的元素,放到排序序列的起始位置,然后在再从剩余未排序序列中继续找到最小元素,放到排序序列的尾部。以此类推,直到排序完成!
代码实现:
<span style="font-size:14px;">#include <stdio.h>//实现选择排序函数void xuanZhe(int arr[],int len){ int temp; for (int i = 0; i<len-1; i++) { for (int j=i+1; j<len; j++) { if(arr[i]>arr[j]){ temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }}int main(int argc, const char * argv[]) { int a[10] = {22,11,23,2,33,444,555,44,323,14}; xuanZhe(a, 10); for (int i=0; i<10; i++) { printf("%d\t",a[i]); } printf("\n"); return 0;}</span>
思想:
在有序表中去中间元素作为比较对象,若给定值和中间值相等,则查找成功;若给定值小于中间元素,则在中间元素左半区继续折半查找;若大于时,则在中间元素的右半区继续折半查找,直到查找成功。若该区域没有相等的元素,则查找失败!
代码实现:
<span style="font-size:14px;">#include <stdio.h>//折半查找的实现int zheBan(int arr[],int len,int keyValue){ int low = 0,heigh = len-1,mid ; while(low<=heigh){ mid = (low+heigh)/2; if (arr[mid]>keyValue) { heigh = mid - 1; }else if (arr[mid]<keyValue){ low = mid + 1; }else if (arr[mid] == keyValue){ // 找到相等的值,返回该值在数组的脚标 return mid; } } //没有找到,返回 -1 return -1;}int main(int argc, const char * argv[]) { int a[10] = {11,22,33,44,55,66,77,88,99,1010}; int keyvalue = 33; //数组中与要查找的值的脚标 int loc = zheBan(a, 10, keyvalue); printf("数据在数组中的位置:%d\n",loc); return 0;}</span>
折半查找插入一个值
代码实现:
<span style="font-size:14px;">#include <stdio.h>//折半查找的实现插入一个值返回插入值的位置int zheBan(int arr[],int len,int keyValue){ int low = 0,heigh = len-1,mid ; while(low<=heigh){ mid = (low+heigh)/2; if (arr[mid]>keyValue) { heigh = mid - 1; }else if (arr[mid]<keyValue){ low = mid + 1; }else { // 找到相等的值,返回该值在数组的脚标 return mid + 1; } } //没有找到,返回 -1 return low;}//将需要插入的值插入到数组中去int insertValue(int arr[],int len,int key,int loc){ for (int i=len; i>=loc; i--) { arr[i] = arr[i-1]; } arr[loc] = key; return 0;}int main(int argc, const char * argv[]) { //这里定义11个元素,是为了插入一个值 int a[11] = {11,22,33,44,55,66,77,88,99,1010}; int keyvalue = 35; //要插入值应插入数组中的脚标值 int loc = zheBan(a, 10, keyvalue); //将keyvalue插入到数组中去 insertValue(a, 11, keyvalue, loc); for (int i=0; i<=10; i++) { printf("%d\t",a[i]); } printf("\n"); return 0;}</span>
- (IOS自学)C语言基础学习(一)
- (IOS自学)C语言基础学习(二)
- (IOS自学)C语言基础学习篇——指针
- C语言基础入门一(自学笔记)
- IOS开发学习基础--------C语言(一)
- Windows c语言自学教程(一)
- C语言基础学习(一)--数据类型
- IOS基础学习之C(一)
- 初入IOS学习总结——C语言基础(一)
- [C语言基础]C学习笔记(一)
- IOS学习---C语言基础学习7(指针)
- IOS学习---C语言基础学习7(预处理指令)
- iOS开发学习笔记-C语言学习(一)
- c语言基础(一)
- C语言基础(一)
- C语言基础(一)
- C语言基础(一)
- C语言基础(一)
- 数据结构记录--学生管理系统
- 数组练习2
- 转一个automake的教程
- C语言写的控制台关机小程序
- 数据结构记录--排序
- (IOS自学)C语言基础学习(一)
- Android View的事件分发机制
- bzoj1455: 罗马游戏
- CSDN-markdown编辑器使用方法
- 均方根信息滤波(SRIF)测试(三)
- C语言 回调函数
- 0004.RDD理解
- bzoj 4373: 算术天才⑨与等差数列
- Fragment 动态加载 / 静态加载