【C++笔记】一维数组初步与进阶

目录

一维数组初步

代码

例题:区间求和

一维数组进阶

代码

例题:求n个数的最大值和最小值


一维数组初步

概念:
    一维数组是一组相同类型的元素按顺序排列的集合。每个元素在数组中都有一个固定的位置,称为    “索引”或“下标”。
    数组允许在单个变量名下存储多个值,方便批量处理数据。

数组的定义
定义方式:
    数据类型 数组名[数组大小];
    例如:int numbers[5]; //定义了一个包含5个整数元素的数组。
关键点:
    数组大小:数组的大小在定义时必须是一个常量,表示数组可以存储的元素个数。
    下标:数组的下标从0开始,第一个元素的下标是0,最后一个元素的下标是(数组大小 - 1)。

数组的赋值
赋值方式:
    逐个赋值:可以通过下标为数组的每个元素逐个赋值。
    数组名[索引] = 值;
    例如:numbers[0] = 10;// 给数组numbers的第一个元素赋值为10。
初始化赋值:可以在定义数组时同时进行初始化赋值。
    数据类型 数组名[数组大小] = {值1, 值2, ...};
    例如:int numbers[5] = {1, 2, 3, 4, 5}; //定义并初始化一个数组。
默认初始化:如果在定义时没有显式赋值,数组中的元素会自动初始化为0(对整数数组)或空字符(对字符数组)。
关键点:
    访问元素:通过下标访问数组中的每个元素,例如numbers[2]访问数组中的第三个元素。
    数组遍历:通常使用循环来遍历数组的所有元素,例如用for循环从0遍历到(数组大小 - 1)。

代码

一维数组输入输出。

#include<bits/stdc++.h>
using namespace std;
int arr[1000000];
int main(){
	int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>arr[i];
    }
    for(int i=1;i<=n;i++){
        cout<<arr[i]<<' ';
    }
    return 0;
}

例题:区间求和

描述:输入一个总数n (1<=n<=100) ,输入n个数字,接下来输入问题总数m,接下来的m行,每行两个数x 和 y,代表询问第x个数到 第y个数的和是多少?
用例输入:                                           用例输出:

8                                  10
1 2 7 0 8 2 4 5		           17
3		   	           19
1 3			
2 5
5 8
#include<bits/stdc++.h>
using namespace std;
int a[300];
int main() {
	int n,m;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    cin>>m;
    while(m--){
        int sum=0;
        int x,y;
        cin>>x>>y;
        for(int i=x;i<=y;i++){
            sum+=a[i];
        }
    cout<<sum<<endl;
    }
     return 0;
}

一维数组进阶

数组元素求和
概念:
    数组元素求和是将数组中所有元素的值相加,得到一个总和。
    例如,给定数组[2, 4, 6, 8],求和结果是2 + 4 + 6 + 8 = 20。
关键点:
    数组基础:
    数组是一个存储相同类型数据的集合,通过索引来访问每个元素。
    索引从0开始,第一个元素的索引是0,第二个元素的索引是1,依此类推。
遍历数组:
    使用循环(如for循环)遍历数组的每个元素。
    在遍历过程中,将每个元素的值累加到一个总和变量中。
初始化总和变量:
    在开始遍历数组之前,确保总和变量初始化为0。

统计数组的元素个数
概念:
    统计数组的元素个数是计算数组中有多少个元素。
关键点:
    数组长度:数组的长度是数组中元素的个数。
    对于已知长度的数组,可以直接使用该长度。
    对于动态数组或指针数组,可以使用循环或特殊函数来计算元素个数。
遍历统计:
    使用循环遍历数组,记录每次循环的次数,即为元素个数。

数组与淘汰机制求最值
概念:
    求最值是指在数组中找到最大值或最小值。
    淘汰机制是一种逐步比较和更新的策略,用来筛选出数组中的最值。
关键点:
    初始化最值变量:
    将第一个元素作为初始最值,然后逐步与其他元素比较。
    逐步比较与更新:
    使用循环遍历数组的每个元素,与当前记录的最值进行比较。
    如果找到更大的或更小的值,则更新最值变量。
淘汰机制:
    每次找到更优的值时,淘汰掉之前的最值,确保最终的最值变量存储的是整个数组中的最大或最小值。

代码

数组元素求和代码

#include<bits/stdc++.h>
using namespace std;
int arr[1000000];
int main(){
	int n,sum=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>arr[i];
		sum+=arr[i];
	}
	cout<<sum<<endl;
	for(int i=1;i<=n;i++){
		cout<<arr[i]<<' ';
	}
	return 0;
}

统计某一元素代码

#include<bits/stdc++.h>
using namespace std;
int arr[1000000];
int main(){
	int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>arr[i];
    }
    int m,cnt=0;
	cin>>m; 
    for(int i=1;i<=n;i++){
        if(arr[i]==m){
            cnt++;
        }
    }
    cout<<cnt;
    return 0;
}

统计每个元素代码

#include<bits/stdc++.h>
using namespace std;
int arr[1000000];
int main() {
	int n;
    cin>>n;
    for(int i=1;i<=n;i++){
    	int m;
        cin>>m;
        arr[m]++;
    }
    for(int i=1;i<=15;i++){
        if(arr[i]!=0){
            printf("%d %d\n",i,arr[i]);
        }
    }
     return 0;
}

 

例题:求n个数的最大值和最小值

描述:任意输入n个整数,把它们的最大值,最小值求出来.
输入描述:输入2行,包括一个整数n(1<=n<=20),第2行n个数,每个数的范围在0到32767之间。
输出描述:输出只有一行,包括2个整数,用一个空格隔开。
用例输入:                                       用例输出:

5                               99 0
1 99 3 6 0
#include<bits/stdc++.h>
using namespace std;
int arr[300];
int main(){
    int n,maxx=INT_MIN,minn=INT_MAX;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>arr[i];
    for(int i=1;i<=n;i++){
        if(arr[i]>maxx) maxx=arr[i];
        if(arr[i]<minn) minn=arr[i];        
    }
    cout<<maxx<<' '<<minn;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值