Logo

郎哥编程

第32讲:一维数组

2026-03-25 24

前面讨论过一维数组的概念,一维数组只有一个下标。

声明一维数组

在C语言中,声明一维数组的语法为:

类型说明符  数组名[常量表达式];

其中类型说明符可以是C语言中任何有效的数据类型,如int、float、char等。数组名是引用数组的名称,数组名的命名需符合变量命名规则。常量表达式可以是大于零的整数常量,也可以是表达式,表达式计算结果必须返回大于零的整数。

例如:

int  a[6]; 
 //定义了一个数组,名称为a,数组中的元素类型是int,数组大小为6个元素。
float   score[3+3];
//定义了一个数组,名称为float,数组中的元素类型是float,数组大小为5个元素。

一维数组的初始化

声明了一个数组,数组元素的值是随机数,要使用数组还需要对数组元素进行初始化,数组元素初始化后才能使用。

数组的初始化有两种方法,一种是静态初始化,另一种是动态赋值。

① 静态初始化

在声明数组时,直接给数组的每个元素赋上一个初始值。静态初始化一般在数组元素比较少时使用。

静态初始化的语法为:

数组类型  数组名[常量表达式]={值1, 值2,……, 值n};

或为:

数组类型  数组名[]={值1, 值2,……, 值n};

初始化时若不指定数组元素,数组元素的长度以初始化的元素个数为准。若指定了元素长度,初始化元素的个数不能大于指定的数组长度。

例如:

int  a[] = {26,67,89,106,210};
float  score[5] = {87.5,67.2,96.8,92.6,75.9};
char   chArray[] = {‘a’,’m’,’o’,’p’,’q’};

对于数组a,可以看出数组中有5个元素,分别是a[0]、a[1]、a[2]、a[3]、a[4]、a[5],即数组下标从0开始,这5个元素的数值依次为a[0]=26、a[1]=67、a[2]=89、a[3]=106、a[4]=210。其在内存中结构如下图所示。

错误的初始化:

int  a[];
a[] = {26,67,89,106,210};

数组的初始化只能在声明中完成,不能声明完成后,再进行初始化,数组的大小由初始化的元素决定。

② 数组的动态赋值

有时,数组并不需要在声明时就赋初值,而是在使用时才进行赋值。另外,有些数组比较大,元素非常多,用静态初始化不方便,这样就需要使用动态赋值。

●先声明数组

例如:

int  a[10];
float = b[5];
a[0] = 20;
b[1] = 3.14f;

一维数组元素的访问

使用数组的最基本操作是数组元素的访问,对数组的使用最终都通过对元素的使用而实现。数组的元素通过数组下标进行访问。前面已经讲过,在C语言中,数组下标是从0开始的,所以包含n个元素的数组下标的范围是0到n-1。例如:前面定义的数组a,其下标范围为0到4。要访问a数组的元素,可通过a[0]、a[1]、a[2]、a[3]、a[4]访问a数组的各个元素,此时,方括号中的数字是数组的下标,表示访问数组的第几个元素。

下面通过一个完整的示例,演示如何声明一个数组,并为数组动态赋值。

例【1】5件商品以内的价格小计

编程要求:要求用户输入5件商品的价格,并循环输出商品的价格,最后输出商品的累计价格。

程序清单 sample.c

#include <stdio.h>
int main()
{
    //声明存储商品总价的变量,并初始化为0.0
 	float  price[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
	// 商品累计价格
    float  total = 0.0f;
    //count为循环次数
    int count = 5;
    //i为循环变量
    int i;
    //循环接收用户输入的5个商品价格 
    for( i=0; i < count; i++ )
    {
        printf("请输入 %d 个商品的价格: ",i+1);  
        //用户输入的第i件商品价格赋值给price数组的第i个元素
        scanf("%f",&price[i]);
        total +=  price[i]; 
		printf("\n");
    }
    printf("*****商品小计******\n");  
     //循环输出商品的价格:
     for( i=0; i < count; i++ )
     {
        printf("第 %d 件商品价格为:%.2f;\n",i+1,price[i]);    
     }
     printf("商品价格合计为: %.2f",total);
 }

 

 

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论