7. 数组(这个章节在c语言中算是重难点了,请大家好好学!!!)
数组的本质就是可以一次定义多个类型相同的变量,同时一个数组中所有的元素在内存中都是顺序存放的。
但要记得在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 = %dn”,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 = %dn”, 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 = %dn”,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 = %dn”, 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(“%dn”,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 = %dn”,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(“%dn”,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("%dn",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]=%dn",i,array[i]);
}
return 0;
}
写在最后:最近和朋友一起在微信公众号做一些自己热爱的东西,并有许多的干货分享,大家多多关注啊!!
公众号 [越陌的数字生活]
————————————————
版权声明:本文为CSDN博主「moneypine」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:c语言基础笔记(7.数组)_c#,编程语言_moneypine的博客-CSDN博客