关于昨天的流程控制,决定暂时跳过,偷懒一下,因为再学习java对这些流程控制语句较为熟悉,故明天或者后天再做一些习题进行补充,今天进行数组的学习。
一.数组
1.引入
当我们要定义很多相同数据类型的时,会十分麻烦,这时应该应用数组,可以大幅度提高程序的代码量,提升简洁和操作的繁琐性。例如下列:
int data1; int data2; int data3; ... int data10; int arr[10];
2.数组的形式
类型符 数组名[常数表达式] 例如: int arr[10]; 需要注意的是数组内需要存储的是相同的数据类型且地址空间是连续的
3.初始方式
3.1全部赋值
int arr[5] = {1,2,5,3,4};
3.2部分赋值
int arr[5] = {1,2,5};
3.3其他的常见赋值
int arr1[10]; //后面进行赋值 int arr2[] = {8,40,5,6,7}
4.数组的遍历
在定义的数组以后,我们需要遍历整个数组,下面书写一个小案例来操作数组的初始化和遍历
int arr[10]; for(int i = 0; i < 10; i++){ arr[i] = i +100; } for(int j = 0 ; j < 10; j++){ printf("第%d个数据,值为:%d\n",j+1 ,arr[j]); }
需要注意的是,数组的下标和实际第几个数据是差距为一的,a[0]代表的是a数组的第一个数据。在遍历时,类似于int arr2[] = {8,40,5,6,7}这样的定义,需要自行去查找数组长度,容易出错,所以引入sizeof来计算素组长度。
size = sizeof(array)/sizeof(array[0]);
5.数组编程案例
5.1数组的初始化及其逆序输出
#include<stdio.h> int main() { int arr[10]; for(int i = 0; i < 10; i++){ arr[i] = i +100; } puts("当前的数组是:"); for(int j = 0 ; j < 10; j++){ printf("%d ",arr[j]); } puts("\n逆序输出的数组是:"); for(int j = 9 ; j >=0; j--){ printf("%d ",arr[j]); } return 0; }
5.2斐波那契数列
#include<stdio.h> int main() { int arr[15]; arr[0] = 0; arr[1] = 1; for(int i = 2; i < 15; i++){ arr[i] = arr[i-1] +arr[i-2]; } puts("当前的数组是:"); for(int j = 0 ; j < 15; j++){ printf("%d ",arr[j]); } return 0; }
5.3冒泡排序
#include<stdio.h> //从小到大进行冒泡排序 int main() { int array[]={12,8,13,9}; int i; int j; int temp; int size = sizeof(array)/sizeof(array[0]); for(i = 0; i < size-1; i++){ for(j = 0; j < size-1-i; j++){ if(array[j]>array[j+1]){ temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } for(i = 0; i < size; i++){ printf("%d ",array[i]); } return 0; }
5.4简单选择排序
明天会书写单独一个博客来对比分析,故此处略过
标签:10,arr,int,C语言,学习,++,第二天,数组,array From: https://www.cnblogs.com/Lynchteacher/p/17267185.html