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;
}100999之间的水仙花数
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;
}

求从3100之间所有素数打印出来  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;
}

写在最后:最近和朋友一起在微信公众号做一些自己热爱的东西,并有许多的干货分享,大家多多关注啊!!
公众号 [越陌的数字生活]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值