文章目录
数组简介
重点:
- 相同数据类型
- 每一个元素所占的地址空间连续
定义数组并初始化
全部赋值
#include <stdio.h>
int main()
{
int a[10];
int data = 0;
printf("数组\n");
/*
初始化方法一:
a[0] = 100;
a[1] = 101;
a[2] = 102;
a[3] = 103;
......很蠢
初始化方法二:
int a[10] = {100,101,102,103...};
还可
*/
//方法三:for
for(data = 0;data<10;data++){
a[data] = data+100;
}
for(data=0;data<10;data++){
printf("address = %p,data = %d \n",&a[data],a[data]);
}
return 0 ;
}
现象
部分赋值
#include <stdio.h>
int main()
{
int a[10] = {1,2,3};//部分赋值
int b[10] = {0};//全部初始化为0
int data = 0;
printf("数组部分赋值\n");
for(data=0;data<10;data++){
printf("address = %p,data = %d \n",&a[data],a[data]);
}
putchar('\n');
for(data=0;data<10;data++){
printf("address = %p,data = %d \n",&b[data],b[data]);
}
return 0 ;
}
现象
数组见怪不怪的写法
数组不指定元素个数
sizeof关键字的使用
#include <stdio.h>
int main()
{
int arry[] = {123,35,255,55,54,141};//不写元素的个数,自动分配
int i = 0;
int size;
// 借用用关键字sizeof,从而计算数据元素的个数
size = sizeof(arry)/sizeof(arry[0]);//把整个数组的大小,除以数组中一个元素的大小,就是获得数组元素总个数
//sizeof 是计算 括号中 对应数据的内存空间的大小,
for(i=0;i<size;i++){
printf("address = %p,data = %d \n",&arry[i],arry[i]);
}
return 0 ;
}
现象
数组经典编程案例
1.数组初始化及逆序输出
代码
#include <stdio.h>
int main()
{
int arry[10];
int i =0 ;
printf("ex1\n");
for(i=0;i<10;i++){
arry[i] = i;
}
printf("正序输出:");
for(i=0;i<10;i++){
printf("%d ",arry[i]);
}
printf("\n逆序输出:");
for(i=9;i>=0;i--){
printf("%d ",arry[i]);
}
return 0 ;
}
现象
2.斐波那契数列
一个数列的第n项 = 第n-1项+第n-2项的和;
这里输出前30项
代码
#include <stdio.h>
int main()
{
int arry[30] = {0,1};//部分赋值
int i;
int size;
size = sizeof(arry)/sizeof(arry[0]);
for(i=2;i<size;i++){
arry[i] = arry[i-1]+arry[i-2];
}
for(i=0;i<size;i++){
printf("%d ",arry[i]);
}
return 0 ;
}
现象
3.冒泡排序法
“像水下冒泡一样(俩俩比较冒泡)”
代码
#include <stdio.h>
int main()
{
int data[] = {23,12,43,66,45,56,232,324}; //见怪不怪的写法
int len = sizeof(data)/sizeof(data[0]);
int i ,j;
int tmp ;
printf("冒泡排序法\n");
for(i=0;i<len-1;i++){
for(j=0;j<len-i-1;j++){
if(data[j]<data[j+1]){ //data[j]>data[j+1] -- 从小到大排列
tmp = data[j];
data[j] = data[j+1];
data[j+1] = tmp;
}
}
}
printf("从大到小:");
for(i=0;i<len;i++){
printf("%d ",data[i]);
}
return 0 ;
}
现象
4.选择排序法
”一对多比较(一对多选出最值排序)“
代码
#include <stdio.h>
int main()
{
int data[] = {23,12,43,66,45,56,232,324}; //见怪不怪的写法
int len = sizeof(data)/sizeof(data[0]);
int i ,j;
int tmp ;
printf("选择排序法\n");
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(data[i]>data[j]){ //data[i]<data[j] -- 从大到小排列
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
}
printf("从小到大:");
for(i=0;i<len;i++){
printf("%d ",data[i]);
}
return 0 ;
}
现象
----- 如有错误欢迎大家批评指正!!!