C语言学习 第4天 【学会C语言就靠它了......】

三、一维数组(整数类型)

1. 为什么使用数组

假设对烟的需求很大,又不缺钱的情况下,正常人是按条买烟。因为方便。

一条烟中的烟应该都是一样的。

当我们需要很多变量,他们的类型一样,逻辑功能又相似,我们可以一口气把这些变量定义出来,这种定义变量的方式叫数组。

2.如何定义

int grade[10];   
定义一个数组,数组名叫grade,数组中变量的类型是int,数组中有10个变量。
我们称数组中的变叫数组的元素。
定义数组时,数组的元素个数必须是常量!!!!!
元素名称: 数组中的元素是没有名字的,我们使用下标(角标)的形式使用元素。角标从0开始。

grade[0]     是数组中的第一个元素角标是0
grade[1]	 是数组中的第二个元素角标是1
grade[2]	是数组中的第三个元素角标是2
...
grade[9]    是数组中的第十个元素角标是9
角标的范围,0~N-1,N是数组中的元素个数。
区分:  int a[5] 和 a[5] 的区别: 

int a[5]是定义一个数组
a[5] 是数组中的一个元素,int a[5]数组中没有a[5] 元素。

3.如何赋值

给数组赋值必须是给每个元素单独赋值,C语言没有提供给整个数组赋值的语法。

#include <stdio.h>

int main()
{
    //定义数组时[]中是元素的个数(必须是常量),使用元素时[]中是元素的角标(可以是变量)
	int grade[10];//定义数组,10个int类型的元素
	//普通的变量怎么使用,数组的元素就可以怎么使用。
	grade[0] = 1;//数组0元素赋值1
	grade[1] = 10;//数组1元素赋值10
	int i;
	for(i = 3;i < 10;i++)
	{//循环是给数组的3~9元素赋值,因为i的取值范围是3~9,循环体用i作为数组角标。
		grade[i] = i;//在使用数组元素的时候,元素的角标可以用变量表示。
	}
	grade[2] = 250;//给数组2元素赋值,给数组元素赋值是没有顺序要求的,愿意给谁赋值就给谁赋值。

	for(i = 0;i < 10;i++)
	{
		printf("%d ", grade[i]);//打印数组的每个元素。
	}
	printf("\n");
	return 0;
}

4.初始化问题

定义数组的时候才能初始化。只有对数组初始化的时候才能使用{},数组赋值时不能使用{}。
【完全初始化】 int a[10] = {1,2,3,4,5,6,7,8,9,10};//初始化使用的数据的数量,和数组元素的个数相同。
        a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 a[5]=6 a[6]=7 a[7]=8 a[8]=9 a[9]=10

【部分初始化】 int a[10] = {1,2};//初始化使用的数据的数量,小于数组的元素个数。剩下的元素默认初始化成0
		a[0]=1 a[1]=2 a[2]=0 a[3]=0 a[4]=0 a[5]=0 a[6]=0 a[7]=0 a[8]=0 a[9]=0
【默认初始化】 int array[] = {1,2,3,4,5,0,0,0};  //只有在默认初始化的情况下,可以不写数组的元素个数,数组的元素个数将由初始化数组使用的数据的数量来决定。array数组有8个元素。

5.如何遍历

遍历:把数组的所有元素都经历一遍,经历可能是打印,可能是运算等等。

通常使用for循环遍历数组,一般使用循环变量作为数组元素在循环体中的角标。

int grade[10] = {0};//部分初始化
int i;
/*
遍历数组一般使用for循环。
一般使用循环变量作为数组的角标。
*/
for(i = 0;i < 10;i++)
{
	printf("%d\n", grade[i]);
}

6.类型问题

数组的元素可以定义成任何类型。能定义出什么类型的变量,就能定义出什么类型的数组。

char a[10]; 数组中有10个char类型变量

short b[100]; 数组中有100个short类型变量

float c[20]; 数组中有20个float类型变量

double x[30]; 数组中有30个double类型变量

int e, a[10], b[20], c, d;合法的定义

数组编程示例1:

请将 1 ~ 100 这 100 个数放在数组里保存起来。

请打印输出第 50 到 第60 个变量中保存的值。49~59

#include <stdio.h>

int main()
{
	int arr[100];
	int i;
	for(i = 0;i < 100;i++)
	{
		arr[i] = i+1;
	}
	
	for(i = 49;i < 60;i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

数组编程示例2:

请输入 10 个整数,保存在数组中,然后累加求和。

#include <stdio.h>
int main(){
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int sum = 0;
    for(int i = 0;  i < 10; ++i){
        sum += arr[i];
    }
    printf("sum = %d\n",sum);
    return 0;
}

数组编程示例3:

请输出斐波那契数列的前 20 项。

已知前两项:1 1 。 从第三项开始,每一项都是前两项之和。 1 1 2 3 5 8 13 21 34 。。。6765

#include <stdio.h>
int main(){
    int fb[20] = {1, 1};
    for(int i = 2; i < 20; ++i){
        fb[i] = fb[i-1] + fb[i-2];
    }
    for(int j = 0; j < 20; ++j){
        printf("%d ",fb[i]);
        if((j + 1) % 10 == 0){
            printf("\n"); // 每十个数据换行一下
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super Mark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值