数组)"/>
c语言基础笔记(7.数组)
数组的本质就是可以一次定义多个类型相同的变量,同时一个数组中所有的元素在内存中都是顺序存放的。
但要记得在C语言中如果定义了如下数组:
Char s[100] ;//s[0] – s[99],切记没有s[100]这个元素,而且C语言编译器不会帮你检查数组的下标是否有效。
Char array[2][3][4] = {};//原则,数组维数越多,代码的可读性就越差,所以要尽可能的用维数少的数组
7.1 一维数组定义与使用
int array [10]; //定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的。
array[0] = 20 ;
array[1] = 30 ;
array[9] = 90 ;
//array[10] = 100 ; //错误,没有array[10]这个元素。
7.2 数组在内存的存储的方式
数组在内存中就是一段连续的空间,每个元素的类型是一样的。
7.3 一维数组初始化
int array[10] = {1,2,3,4,5,6,7,8,9,10} ;//定义数组的同时为数组的成员初始化值
int array[10] = {3,4,5} ;//将数组的前三个元素赋值,其余元素置为0
int array[10] = {0} ;//将数组所有的元素都置为0
int i;
for (i = 0; i < 10; i++)
{array[i] = 0 ;//通过循环遍历数组的每个元素,将元素的值置为0//scanf(“%d”,&array[i]);
}求数组中最大元素的值
int main()
{int array[10] = {32,5,67,98,12,54,8,78,457,10};
int max = 0;
int i;
for (i = 0; i < 10; i++) //想找最大的值,一定要把数组先遍历一遍
{if(max < array[i])max = array[i];}printf(“max = %d\n”,max);return 0;
}求数组中最小元素的值,和最小值对应的数组下标
int main()
{int array[10] = {32,5,67,98,12,54,8,78,457,10};
int min = array[0];
int index = 0; //在没有遍历数组之前,默认数组的第0号元素就是最小的元素
int i;
for (i = 1; i < 10; i++) //想找最小的值,一定要把数组先遍历一遍
{if(min > array[i]){index = i;min = array[i];}}printf(“min = %d index = %d\n”, min , index);return 0;
}求数组中所有元素的和
int main()
{int array[10] = {1,2,3,4,5,6,7,8,9,10};
int i;
int sum = 0;//存放数组和的变量
for (i = 0; i < 10; i++) //想找最大的值,一定要把数组先遍历一遍
{sum += array[i];}printf(“sum = %d\n”,sum);return 0;
}将数组元素逆置
int main()
{int array[10] = {32,5,67,98,12,54,8,78,457,10};
/*
int tmp = array[1]; //中间变量实现两个值的互换
array[1] = array[0];
array[0] = tmp;
*/
int min = 0; //数组最小下标
int max = 9; //数组最大下标
while (min < max) //两头往中间堵
{int tmp = array[min];array[min] = array[max];array[max] = tmp;min++;max--;
}printf(“max = %d min = %d\n”, max , min);return 0;
}
求100到999之间的水仙花数
int main()
{int i;for(i = 100 ;i < 1000 ;i++){Int i1=i%10; //Int i2=i/10%10; //Int i3=i/100; //If((i1*i1*i1+i2*i2*i2+i3*i3*i3) = = i)Printf(“%d\n”,i);
}
return 0;
}求一个int数组中,所有奇数元素的和
int main()
{int array[10] = {1,2,3,4,5,6,7,8,9,10};
int i;
int sum = 0;
for (i = 0; i < 10; i++)
{if((array[i]%2) = = 1){sum += array[i];}}printf(“sum = %d\n”,sum);return 0;
}求从3到100之间所有素数打印出来 3 5 7 11 13 17 ……
int main()
{
int i; //素数是除了1和自己以外,不能被其他整数整除的整数
for (i = 3; i < 100; i++)
{int j;int ststus = 0;for(j =2 ;j < i ; j++) //判断i是否为素数{if((i %j) = = 0){status = 1;break;
}}if(status= = 0) //代表这是个素数{printf(“%d\n”,i);
}}return 0;
}
7.4 二维数组定义与使用
int array[2][3];//定义了一个二维数组,有两个array[3]
int array[2][3] = { {1,2,3},{4,5,6} };//定义一个二维数组的同时初始化成员。
7.5 二维数组初始化
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int array[2][3] = {0};//将二维数组中每个元素的值都初始化为0
int array[2][3] = { {1,2,3},{4,5,6} };int i,j;for(j=0;j<3;j++){int sum=0;for(i=0;i<2;i++){sum += array[i][j];}printf("%d\n",sum);//打印列的和}#include<stdio.h>
int main()//冒泡排序
{int array[10] = {34,14,8,54,23,89,56,4,45,22};int i;int j;for(i = 0;i < 10; i++){for(j = 1; j < 10 - i; j++){if(array[j-1] > array[j])//如果前面的元素大于后面的元素,那么就让这两个元素交换位置{int tmp = array[j];array[j] = array[j - 1];array[j-1] = tmp;}}}for(i=0;i<10;i++){printf("array[%d]=%d\n",i,array[i]);}return 0;
}
写在最后:最近和朋友一起在微信公众号做一些自己热爱的东西,并有许多的干货分享,大家多多关注啊!!
公众号 [越陌的数字生活]
更多推荐
c语言基础笔记(7.数组)
发布评论