C语言学习 --- 数组

数组是什么

用来存储数据 ---- 存储同种类型的多个数据

定义

类型:个数

格式:数据类型 数组名[总个数]; 

存储班级同学的成绩

数据:成绩
数据类型:float

总个数:40
数组名:自定义

float scores[40];	//40个float类型 只有一个名字 --- scores

练习:
存储 班级同学的年龄,这个班级只有8个人。 int ages[8];
存储 小写字母						  char char[26];

数组下标:

下标:

        为数组中的每一个空间进行编号,从0开始到总个数-1

float scores[40];

下标:0 1 2 3 ... 39

int ages[8];

下标:0 1 2 3 ... 7

注意:不要超标,需要区分总个数和下标

数组中空间的访问:

数组名[下标] --- 用数组

&数组名[下标] --- 元素空间地址

float scores[40];
float类型的空间:scores[0] scores[1] ... scores[39]

int ages[8];
int类型的空间:ages[0]  ages[1] ages[2] ages[3] ... ages[7]

int ages[8];
//直接赋值,填入8个年龄
ages[0] = 20;
ages[1] = 30;
printf("%d %d",ages[0],ages[1]);

//空间的地址:
float scores[40];
float类型的空间:scores[0] scores[1] ... scores[39];
float类型的空间地址:&scores[0] &scores[1] ... &scores[39]

int ages[8];
int类型的空间:ages[0]	ages[1]	... ages[7]
int类型的空间地址:&ages[0]	&ages[1] ... &ages[7]

//输入赋值: //下标2-3中输入赋值
// ages[2]   ages[3]
    
scanf("%d%d",&ages[2],&ages[3]);  // 100 40
    
printf("%d %d",ages[2],ages[3]);
//定义一个数组,通过输入的形式将数据写入到空间里面后访问
#include<stdio.h>
int main()
{
	int i;
	int arr[5];
	for(i=0;i<5;i++)
	{
		scanf("%d",&arr[i]);
	}
	
	for(i=0;i<5;i++)
	{
		printf("%d\n",arr[i]);
	}
return 0;
} 

数组的初始化:

定义数组的时候就给空间数据。


int a[3] = {20,40,60};



int a[3] = {20}; //{20,0,0}; --- 初始化的时候数据个数小于总个数,其他空间补0

int a[3] = {10,4,5,7,8}; //{10,4,5}

int a[] = {1,3,5,67};

注意下面写法:

省略个数的初始化 --- 初始化的时候可以省略个数

int a[] = {1,6,9,100,40}; //开多少空间? {}数据个数 -- 5个int型的空间

拓展数组的长度:

sizeof(a) / sizeof(a[0]) == 20 / 4 == 5 //(20是上面int a[]中四个值都是int类型共占20个字节)

什么情况下用初始化?什么情况下用定义?

一开始知道数组中的数值 --- 初始化

一开始不知道数组中的数值 --- 定义

数组: --- 构造下标

        数组的初始化是在创建数组时为其分配内存并设置初始值的过程。

练习:

//1、定义一个数组,将26个字母存储进去,然后输出。
#include<stdio.h>
int main()
{
	char ch[26];
	char i;
	for(i=0;i<26;i++)
	{
		ch[i]='a'+i;
	}
	for(i=0;i<26;i++)
	{
		printf("%c\r\n",ch[i]);
	}
	
return 0;
} 
//2、定义一个数组,通过输入形式输入5个整型的数值,然后计算这5个数据的和、最大值、最小值
//定义一个数组,输入5个整型数值进去,
//计算出5个值得和、求得最大值和最小值.c 
#include<stdio.h>
int main()
{
int a[5];
int max = a[0];
int min = a[0];
int sum = 0;
int i;
printf("请输入存入数组中的五个值:");
for(i=0;i<5;i++)
{
    scanf("%d",&a[i]);
    if(max<a[i])
    {
        max = a[i];	
    }
    if(min>a[i])
    {
        min = a[i];
    }
    sum+=a[i];	
} 
printf("你输入的值中:\n和为:%d\n最大值为:%d\n最小值为:%d",sum,max,min);
return 0;
} 
}//3、int a[]={100,5,78,45,52,199}; 将数组中的数据进行翻转,反转后为{199,52,45,78,5,100}
#include<stdio.h>  

int main()  
{  
  int a[]={100,5,78,45,52,199};   
  int i; 
  int b;
  for(i=0;i<3;i++)   
  {
    b = a[i];
    a[i] = a[5-i];
    a[5-i] = b;
  }
  for(i = 0; i < 6; i++) 
  {  
      printf("%d ", a[i]);  
  }  
  printf("\n");  

  return 0;  
}

//输入一个十进制的值,用数组存储的方式将十进制转换为二进制存储进数组中并输出 
#include <stdio.h>  	  
	int main() 
	{    
	    int i = 0;    
	    int d;  
	    int a[32]; 
		int j; 
	    printf("请输入一个整数:");  
	    scanf("%d", &d);       
	    while (d > 0) 
		{    
	        a[i] = d % 2; // 存储余数    
	        d = d / 2; // 更新商 
			i++;   
	    }
		printf("你输入的整数转为二进制的值为:");     
	    for( j = i-1; j >= 0; j--)
		{
	        printf("%d", a[j]);  
	    }  
	    printf("\n");  
	    return 0; 
	}

小总结:

一维数组

        存储多个相同数据类型的数据

 数组的定义:

        元素类型 数组名[总个数];

数组下标:

        从0开始 到 总个数-1

元素:

        空间的名称: 数组名[下标]

        空间的地址: &数组名[下标]

 数组的初始化:

        省略个数的初始化: 后面有几个数据开几个空间。

二维数组:

        数组:多个同种类型的一维数组,用行和列来进行理解

 

二维数组定义:

        数据类型 数组名[总行数][总列数];

二维数组的初始化

int a[2][3] = {{1,2,3},{100,4,78}};

int a[2][3] = {1,2,3,4,5,6};

int a[2][3] = {1,2,3,4}; //{1,2,3},{4,0,0}

只能缺少行数的初始化

int a[][3] = {1,2,3,4,5}; //{1,2,3,4,5,0}

比如:

存储3个班同学的成绩,每个班有五人

3行,五列



float scores[3][5];



行下标,列下标:

行下标:0 ~ 2

列下标:0 ~ 4

数据空间:

        空间名称: 数组名[行下标][列下标];

        空间地址: &数组名[行下标][列下标];

float scores[3][5];

//scores[0][0] scores[0][1] scores[0][2] scores[0][3]
//scores[1][0] scores[1][1] scores[1][2] scores[1][3]
//scores[2][0] scores[2][1] scores[2][2] scores[2][3]

int i;
int j;
for(i=0;i<3;i++)
{
    //构造列
    for(j=0;j<5;j++)
    {
        scanf("%f",&acores[i][j]);
    }
}
for(i=0;i<3;i++)
{
    //构造列
    for(j=0;j<5;j++)
    {
        printf("%d",acores[i][j]);
    }
    ptintf("\n");
}	
练习1:
    定义一个二维数组,通过输入的形式对空间进行写值,并输出空间里面的值。
    求每一行的和、最大值、最小值并输出
    
    float scores[3][5];
    
    float sum = 0;
    
    float max;
    
    for(i=0;i<3;i++)
    {
        // 构造列
        for(j=0;j<5;j++)
        {
            scanf("%f",&scores[i][j]);
        }
    }
    
    
    for(i=0;i<3;i++)
    {
        // 行的开始
        sum = 0;
        max = scores[i][0];
        
        // 构造列
        for(j=0;j<5;j++)
        {
            printf("%d ",scores[i][j]);
            
            sum += scores[i][j];
            
            if(max < scores[i][j])
            {
                max = scores[i][j];
            }
        }
        
        // 行的结束
        printf("第%d行的和:%f\n",i,sum);
        printf("第%d行的最大值:%f",i,max);
        printf("\n");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值