五、C_base——数组
来源:互联网 发布:如何选择净水器 知乎 编辑:程序博客网 时间:2024/06/08 02:17
【1】数组的概念
1、数组:由多个类型相同数据的集合 2、元素访问:a[0] ~ a[n-1]
【2】定义
1--- int a[10] = {0,1,2,3}; 2--- #define N 10; int a[N] = {0,1,2,3}; 3--- int a[] = {0,1,2,3}; //空间开辟由初始化的元素个数决定 4--- int a[]; //错误方式!!!!
【3】初始化(局部变量)
1--- 部分初始化:没有初始化的位置为0 2--- 不初始化:元素为随机值 3--- 全局变量默认初始化为0
【4】数组的性质
1、元素类型相同 2、开辟空间是连续的 3、数组名是首地址 4、数组越界访问不报错,使用时注意。
【5】数组名
1、空间大小 sizeof(a); 2、元素个数 sizeof(a)/sizeof(int);
【6】冒泡排序过程:
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
【7】二维数组
int a[N][M] = {0,1,2,3,4,5,6,7}; a 以整个二维数组为一个单位的首地址 a[0] 第一行的首地址 a[1] 第二行的首地址 a[2] 第三行的首地址
【8】char数组
char a[10] = "ABCDE";
源码及注释
1、 1_array.c
#include <stdio.h>/** 概念:若干个数据类型相同的元素集合* 定义:类型 名字[元素个数];* 访问:a[0] ~ a[n-1]* 初始化 :* 1、不初始化为随机值 * 2、部分初始化,没有初始化的部分为0 * 3、初始化禁止越界* 元素个数:常量,不写(空间由初始化的元素个数决定),变量(不能初始化)*/#define N 10 //宏int main(int argc, const char *argv[]){ int a[N] = {0,1,2,3,4}; int i; //遍历访问:不重复的访问每一个元素 for(i=0; i<10; i++) { printf("a[%d] = %d\n",i, a[i]); } printf("size = %d\n",sizeof(a)); return 0;}
2、 2_array.c
#include <stdio.h>#define N 8//1、元素类型相同//2、存储空间连续//3、数组名代表第一个元素的地址(首地址)int main(int argc, const char *argv[]){ int a[N] = {0,1,2,3,4,5}; int i; for(i=0; i<N; i++) { printf("%p\n",&a[i]); } printf("a = %p\n",a); printf("size = %d\n",sizeof(a)); printf("N = %d\n",sizeof(a)/sizeof(int)); return 0;}
3、 3_array_sort.c
#include <stdio.h>#define N 5int main(int argc, const char *argv[]){ int a[N] = {2,3,1,0,7}; //1 2 3 int i,j; //i:轮数 j:前一个数的下标 for(i=0; i<N-1; i++) { for(j=0; j<N-i-1; j++) { if(a[j] > a[j+1]) { a[j] ^= a[j+1]; a[j+1] ^= a[j]; a[j] ^= a[j+1]; } } } for(i=0; i<N; i++) { printf("a[%d] = %d\n",i ,a[i]); } return 0;}
4、4_two_array.c
#include <stdio.h>/* * 二维数组 * 定义:类型 名字[行][列]; * a[M][N]: a[0][0] ~ a[M-1][N-1] * 元素类型相同 * 存储空间连续 * 数组名是首地址 */int main(int argc, const char *argv[]){ int a[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}}; int i,j; for(i=0; i<3; i++) { for(j=0; j<4; j++) { printf("%p ",&a[i][j]); } putchar(10); } printf("a = %p\n",a); //a:以二维数组作为一个整体的首地址 printf("a[0] = %p\n",a[0]); //a[0] a[1] a[2]:每一行的首地址 printf("a[1] = %p\n",a[1]); printf("a[2] = %p\n",a[2]); printf("size = %d\n",sizeof(a)); return 0;}
5、 5_array_reverse.c
#include <stdio.h>//数据翻转int main(int argc, const char *argv[]){ int a[] = {0,1,2,3,4,5,6,7,8}; int n = sizeof(a) / sizeof(int); int i,j; //i:前 j:后 for(i=0,j=n-1; i<j ;i++, j--) { a[i] ^= a[j]; a[j] ^= a[i]; a[i] ^= a[j]; } for(i=0; i<n; i++) { printf("a[%d] = %d\n",i , a[i]); } return 0;}
6、 6_array_Max.c
#include <stdio.h>//找二维数组里的最大值,及其下标int main(int argc, const char *argv[]){ int a[3][4] = {{0,1,-1,3},{4,15,26,7},{8,9,10,11}}; int row = 0,line = 0; int i,j; for(i=0; i<3; i++) { for(j=0; j<4; j++) { //a[0][2] a[0][1] if(a[i][j] > a[row][line]) { row = i; line = j; } } } printf("row = %d line = %d MAX = %d\n",row,line, a[row][line]); return 0;}
7、 char.c
#include <stdio.h>int main(int argc, const char *argv[]){// char a[10] = {'A','B','C','D','E','\0'};//以一个字符串直接赋值,只允许出现在初始化的时候 char a[] = "hello world"; int i; printf("size = %d\n",sizeof(a)); printf("a = %s\n", &a[0]); //%s:从给定的地址开始,到‘\0’结束 printf("a = %s\n", a); puts(&a[0]); puts(a);/* for(i=0; i<10; i++) { printf("a[%d] = %c\n",i , a[i]); }*/ return 0;}
8、 my_strcoy.c
#include <stdio.h>int main(int argc, const char *argv[]){ char a[] = "hello world"; char b[] = "beijing"; int i; // hello world // beijing for(i=0; b[i] != '\0' ; i++) { a[i] = b[i]; //当跳出for循环,b[i] == '\0' } a[i] = '\0'; printf("a = %s\n",a); return 0;}
阅读全文
0 0
- 五、C_base——数组
- 七、C_base——函数
- 六、C_base——指针
- 四、C_base——基本语句
- 二、C_base——数据类型/运算符
- 一、C_base——linux基本操作
- 三、C_base——常用stdio.h函数
- c++作业五—数组
- C++实验五—数组分离
- c++实验五—数组分离
- c++实验五—数组分离
- C++实验五—数组分离
- JavaScript深入浅出————数组(五)
- Linux C语言程序设计(五)——数组基本概念与解析
- Swift入门(五)——数组(Array)
- C++实验五——数组的分离。
- JNI完全指南(五)——字符串与数组
- 《c程序设计语言》读书笔记(五)——指针与数组
- 洛谷 P2114 起床困难综合症
- 二叉树相关问题
- Ubuntu emacs 字体设置
- 可执行文件如何被执行
- python __setitem__(self)和__getitem__(self)
- 五、C_base——数组
- 常用网址
- xcode一个工程引入另一个工程
- php动态导出数据成Excel表格
- 机器学习之利用PCA来简化数据
- 面向对象1
- 一个开源的社会化编程项目
- Javascript基础(四)作用域和闭包
- (25)继承中成员变量、函数中覆盖、构造函数的理解