C语言(一维数组)

本篇将对一维数组相关知识,进行归纳整理
掌握一维数组,是进行批量数据处理程序设计的基石

包含一位数组的概念知识
相关问题及代码

一,定义一维数组的一般形式为:
类型符 数组名[常量表达式];
数组名的命名规则和变量名相同 int a[10];//10为数组长度
int a[4+6]; 合法
int n=10;
int a[n];
int n=5,a[10];
a[n]=20;
初始化
在定义数组的同时,给各数组元素赋值
int a[10]={0,1,2,3,4,5,6,7,8,9};
int a[10]={0,1,2,3,4};相当于
int a[10]={0,1,2,3,4,0,0,0,0,0};
int a[10]={0,0,0,0,0,0,0,0,0,0};相当于
int a[10]={0};
int a[5]={1,2,3,4,5};可写为
int a[ ]={1,2,3,4,5};

批量求取累加和及其平均数(任意个数)
#include<stdio.h>
#define N 100 //定义符号常量100,表示数据的最大范围
main()
{
int i,a[N],n,sum=0; //定义循环变量i,存放正整数的数组a,接受到的正整数个数n, 累加和变量sum,注意定义时初始化为零。
printf(“please input/输入 the data/数据\n:”);
printf(“输入任意负整数,即可结束循环\n”);
for(i=0; ;i++) //利用for循环,循环输入
{ scanf("%d ",&a[i]);
if(a[i]<0)
break;
}
n=i;
for(i=0;i<n;i++)//for循环,计算累加和
sum+=a[i];
printf(“the sum is %d \n”,sum);
printf(“the average is %0.2f \n”,1.0*sum/n);
return 0;
}
运行截图:
在这里插入图片描述

逆序输出 :
#include<stdio.h>
main()
{ int i,n,arr[50],t;//数组定义,相关变量定义
printf(“please input the size of array/数组大小:\n”);
scanf("%d",&n);//个数n的输入
printf("\nplease input %d integers/整数:\n",n);
for(i=0;i<n;i++)//利用for 循环
scanf("%d",&arr[i]);//数组元素的输入
for(i=0;i<n/2;i++)//for循环交换n/2次
{
t=arr[i];
arr[i]=arr[n-i-1]; //第一 与 倒一 交换,实现逆序
arr[n-i-1]=t;
}
for(i=0;i<n;i++) //for循环逆序输出
printf("%d “,arr[i]);
}
运行截图:
在这里插入图片描述
同样的逆序输出也可以借助一个for循环实现
#include <stdio.h>
int main()
{ int i,a[10];
for (i=0; i<=9;i++)
a[i]=i;
for(i=9;i>=0; i–)
printf(”%d “,a[i]);
printf(”\n");
return 0;
}
运行截图
在这里插入图片描述
来实现整数的有序插入
详细代码
include<stdio.h>
main()
{
int a[10]={1,30,50,200,900};//数组a已经初始化为递增的 有序序列
int i, data, n=5; //定义了下标i ,待插的数组元素data,以及目前元素的总个数n
printf(“please input a integer//翻译 请输入一个整数\n”);

scanf("%d",&data);
printf(“完成有序插入后的数组为\n:”);
for(i=n-1;i>=0;i–) //从后往前 ,依次比较
{
if(a[i]>data) //插入元素较小,
a[i+1]=a[i]; //数组元素,从后往前移动,开始搬家
else //直至元素进入 合适位置
break; //退出,搬家活动即可
}
a[i+1]=data; // 正式插入
n=n+1;
for(i=0;i<n;i++) //for循环输出,数组全部元素

printf("%d  ",a[i]);//记得加空格哦
}

运行截图:
在这里插入图片描述
#include<stdio.h>
int main()
{
printf(“请输出前20项的 Fibonaacci\n”);
int a[20]={1,1},i;

for(i=2;i<=19;i++)
{a[i]=a[i-1]+a[i-2];}//求取

for(i=0;i<=19;i++)        //利用for循环输出
{ if(i%5==0)              //每5个换行
printf("\n");   
printf(" %d ",a[i]);
}

printf("\n");
return 0;

}

运行截图
在这里插入图片描述

### C语言一维数组和二维数组简介 #### 1. **一维数组** 一维数组是最简单的数组形式,它是一组相同类型的元素的有序集合。每个元素可以通过索引来访问,索引从0开始。 **声明语法:** ```c 类型名 数组名[数组长度]; ``` 例如: ```c int arr[5]; // 声明一个包含5个整数的一维数组 ``` 你可以通过下标来初始化或修改数组中的元素: ```c arr[0] = 1; // 将第一个元素设置为1 arr[1] = 2; // ... printf("%d", arr[0]); // 输出第1个元素的值 ``` **优点:** - 简单易用,适合处理线性数据结构。 - 访问速度快,因为内存布局是连续的。 --- #### 2. **二维数组** 二维数组可以看作是由多个一维数组组成的矩阵。每一行是一个一维数组,整个二维数组由若干这样的行组成。 **声明语法:** ```c 类型名 数组名[行数][列数]; ``` 例如: ```c int matrix[3][4]; // 声明一个3行4列的二维数组 ``` 同样地,你可以通过两个维度的索引来初始化或访问其中的元素: ```c matrix[0][0] = 1; // 第一行第一列设为1 matrix[0][1] = 2; // ... for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]); } } ``` **存储方式:** C语言中,二维数组按照行优先的方式存放在内存中。即先存放完整的第一行,再放第二行,以此类推。这意味着 `matrix[1][0]` 的地址紧接在 `matrix[0][3]` 后面(假设每行列长均为固定)。 --- ### 示例代码 下面展示了一个简单的例子,分别创建并操作了一维数组和二维数组: ```c #include <stdio.h> int main() { // 创建并初始化一维数组 int oneDArray[] = {1, 2, 3}; // 打印所有元素 for(int i=0;i<3;++i){ printf("oneDArray[%d]: %d\n", i ,oneDArray[i]); } // 创建并初始化二维数组 int twoDArray[][3] = {{1, 2, 3}, {4, 5, 6}}; // 遍历打印所有的元素 for(int row=0;row<2;++row){ for(int col=0;col<3;++col) printf("twoDArray[%d][%d]: %d ", row,col,twoDArray[row][col]); printf("\n"); } return 0; } ``` 上述程序将依次输出各个位置上保存的数据内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

约卡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值