目录
一、一维数组认识与使用
1.4 数组的输入与输出
1.5 最大值与最小值的求解
二、一维数组的操作用法
2.1 数组的插入与删除
2.2 数组某个值的查找
2.3多个数组的合并
2.4多个数组的有序合并
三、一维数组的应用
3.1 斐波那契数列
3.2 淘淘摘苹果
3.3 翻纸牌游戏
3.4 判断数组元素是否存在某两个元素之和为 k。
一、一维数组认识与使用
数组的意思:数组相等于一排座椅,可以坐很多人。每个座椅的位置都不一样。
数组存数据,就相当座椅做了人。
1.1 定义数组: int b[10] // 意思是a数组最多可存10个整数。
1.2 数组赋值: int a[10]={1,2,3,4,5,6}; //还剩下的空间,默认补0。
1.3 数组的索引/下标:从0开始。
问a[0]值 ; a[2]值 ; a[4]值 ; a[6]值 ;
输入很多个值存到数组里面,那需要在循环里面操作。
例如:1.先定义数组,在循环输入。
#include
using namespace std;
int main(){int n;cin>>n; // 输入n个数 int a[n+1];for(int i=0;i>a[i]; // 数组的输入 }cout<
问,当输出的循环i不从0开始,改成i=1,那输出结果会怎么样?
炼1:请实现数组中所有元素的和,并且输出总和结果。
炼2:请实现数组中所有元素是偶数的和,并且输出总和结果。
炼3:请实现数组的倒序输出,例如输入 1 2 3 4; 输出 4 3 2 1。
/*
1. 定义一个长度为7的数组c,
2. 把7个数值存到数组c里面,
3. 统计数组c所有元素的偶数和 。
*/
#include
using namespace std;
int main(){int c[7]; for(int i=0;i<7;i++){cin>>c[i];}int sum=0;for(int i=0;i<7;i++){if(c[i]%2==0){sum += c[i];}}cout<<"数组偶数和:"<
// 3.请倒序输出数组a。
#include
using namespace std;
int main(){float a[10] = {3.14,77.88,66.88,3,9,5,22.5};// 倒序1 for(int i=6;i>=0;i--){cout<
1.定义一个长度为10的数组a并赋值;
2.求数组元素最大值与最小值,求极差(最大值-最小值)。
#include
using namespace std;
int main(){float a[10] = {3.14,77.88,66.88,3,9,5,22.5};float max,min;for(int i=0;i<7;i++){//判断最大最小值if(i==0){ //假设第一个元素为最大值 max = a[i];min = a[i];}else{ // 从第二、三个..第n个比较大小 if(maxa[i]){ min=a[i];}}}cout<<"最大值:"<
#include
using namespace std;
int main(){//实现数组的插入操作 int a[6]={1,2,3,5,6};for(int i=5;i>3;i--){ //循环为什么要倒序? a[i]=a[i-1]; //让后面数组值往后挪了}// 插入4到索引3的位置{1,2,3,4,5,6}a[3]=4;//删除索引1的值for(int i=1;i<5;i++){ //循环是正序?a[i]=a[i+1]; //让后面数组值往前挪,覆盖掉前的值 }// 输出for(int i=0;i<5;i++){ cout<
1.在数组存了15个值。 需要先定义数组变量,再循环输入15个值。
2.输入一个值用变量a存储,循环里面逐个判断数组元素值跟a是否相等,是就输出该数组元素的索引位置!并循环结束。
#include
using namespace std;
int main(){int arr[15];for(int i=0;i<15;i++){ cin>>arr[i];}int a;cin>>a;for(int i=0;i<15;i++){ if(a==arr[i]){cout<<"索引位置:"<
将数组a[]和数组b[]合并到数组c[]。
#include
using namespace std;
int main(){int a[3] = {35, 72, 96};int b[4] = {29, 33, 56, 87};int c[7];//将数组a[]和数组b[]合并到数组c[]int len=0;for(int i=0;i<3;i++){c[len]=a[i];len++;}for(int j=0;j<4;j++){c[len]=b[j];len++;}for(int i=0;i
将有序的的数组a,b合并到c数组,并且c数组也是有序数组。
#include
using namespace std;
int main(){int a[3] = {1, 3, 5};int b[4] = {4, 5, 6, 7};int c[10];int lena = 0, lenb = 0, lenc = 0;// 因为 a, b 数组是有序的,所以最小的元素一定是数组最左边的数字,// 所以我们只要比较当前 a, b 数组的头,选择小的放入 c 数组即可while (lena < 3 && lenb < 4){if (a[lena] < b[lenb]){c[lenc] = a[lena];lena++;lenc++;} else {c[lenc] = b[lenb];lenb++;lenc++;}}//接下来考虑一件事,必然有一个数组中的元素先被放完,//那另外一个数组中剩下的元素我们只要依次放进 c 数组就可以了cout<<"------"<
2.5查找数组元素有重复的值。
输入n个值存到数组里面,请找出数组元素有重复的值。
#include
using namespace std;
int main(){int n;cin>>n;int a[n+1];for(int i=0;i>a[i];}for(int i=0;i
斐波那契数列:第一项、第二项都是1,第3项为前两项的和,以此类推第4项就是 第2、3项的和。 1 1 2 3 5 8 13 21
#include
using namespace std;
int main(){int k;cin>>k;long long a[k+1];for(int i=0;i
#include
using namespace std;
int main(){int a[10];int cnt=0;for(int i=0;i<10;i++){cin>>a[i];} int h;cin>>h;for(int i=0;i<10;i++){if(h+30>=a[i]){cnt++;}}cout<
五年级一班全体学生做一个游戏,有 nn 张纸牌,每张纸牌上分别标注着 1、2、3、4…n个数字,初始时纸牌数字面朝上。全班同学先将 1的倍数的纸牌翻过来,然后再将 2 的倍数的纸牌再翻过来,一直翻到 n 的倍数的纸牌。统计翻到最后数字面向下的纸牌分别是哪些?
例如,有 1、2、3 张纸牌,开始时纸牌数字面朝上,第一次翻转 1 的倍数,将所有序号为 1 的倍数的纸牌翻转;第二次翻转 2 的倍数,将所有序号是 2 的倍数的纸牌再翻转;第三次翻转 3 的倍数,将所有序号是 3 的倍数纸牌再翻转,翻牌到此结束。最后数字面向下的纸牌是序号为 1 的那张。
输入格式
输入第一行输入数字为 n,表示有 n 张纸牌。
//翻纸牌
#include
using namespace std;
int main(){int n;cin>>n;int a[10000];for(int i=1;i<=n;i++){a[i]=1; //初始 牌朝上为 1 }for(int i=1;i<=n;i++){ //遍历所有牌 for(int j=i;j<=n;j++){ //第几张牌进行判断 if(j%i==0){//倍数判断 a[j] *= -1; }}}for(int i=1;i<=n;i++){ if(a[i]==-1){ //对朝下的牌进行输出 cout<
#include
using namespace std;
int main(){
// 数组里面找重复的值。int n;cout<<"n个数:";cin>>n;int a[n]; // 多少人存在数组里面 for(int i=0;i>a[i];}
//解决:第一个元素 与第二、三...最后元素判断比较int k;cout<<"k值:";cin>>k;for(int i=0;i