哈喽大家好,我是iecne,本期为大家带来的是CPP/C++保姆级入门教程的第⑩期—— 一维数组基础 ,包教包会,快来看看吧!
此教程适合新手小白,因为语言会十分的通俗易懂,不会有很多的专业词汇出现,可以更好的掌握并且吸收,后续加上持之以恒的练习题目将会基本巩固
目录
一. 一维数组的意义
二.习题练习
1.小鱼比可爱
题目描述
参考答案
题目思路
2.小鱼的数字游戏
题目描述
参考答案
题目思路
3.冰雹猜想
题目描述
参考答案
题目思路
4.[NOIP2005 普及组]校门外的树
题目描述
参考答案
题目思路
三.总结
系列文章目录
计算机运算速度很快,一秒钟可以处理成千上万的数据。之前的例子都是读取一个数据后立刻对这些数据进行处理,然后再也不需要用到这些数据了;有时候,我们读入数据后还需要将这些数据保存下来,便于以后再次使用。如果保存个别几个数据,可以设立几个变量存储;但是如果要存储成千上万个数据,总不能定义成千上万个变量吧。
既然可以通过循环语句来重复执行结构类似的语句,也有办法一次定义一组成千上万个的相同类型的变量——使用数组。这样就可以把大量的数据存储下来,随时使用了。数组不仅可以存储输入的数据,还能存下运算过程中的“半成品”甚至答案,是 C++ 中非常重要的一部分。
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度**可能一样**。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式
第一行输入一个正整数n,表示鱼的数目。
第二行内输入 n 个正整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度ai。
输出格式
一行,输出 n 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
样例 1
样例输入 1
```
6
4 3 0 5 1 2
```
样例输出 1
```
0 0 0 3 1 2
```
提示
对于 100\% 的数据,1 \leq n\leq 100$,$0 \leq a_i \leq 10。
#include
using namespace std;
int n, s[10000] = { 0 };
int iecne[10000];
int k = 0;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> iecne[i]; //输入
}
for (int i = 1; i <= n; i++) //从第一个小鱼开始循环
{
for (int j = 1; j < i; j++) //在小鱼之前的所有小鱼循环
{
if (iecne[i] > iecne[j]) //比较
{
//s++;
s[k]++; //统计
}
}
k++; //由于我们没有数值可以当作输出数组,所以新建一个变量k在每一个循环结束后增加
//cout << s << " "; //这里也可以直接输出,但是影响美观
}
for (int i = 0; i < n; i++) cout << s[i] << " "; //最后数组出书输出
}
在写的时候傻掉了,其实没有必要用k统计,直接用i不就好了?
小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 a_iai(长度不一定,以 00 结束),记住了然后反着念出来(表示结束的数字 00 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。
输入格式
一行内输入一串整数,以 00 结束,以空格间隔。
输出格式
一行内倒着输出这一串整数,以空格间隔。
输入输出样例
输入
3 65 23 5 34 1 30 0
输出
30 1 34 5 23 65 3
说明/提示
数据规模与约定
对于 100\%100% 的数据,保证 0 \leq a_i \leq 2^{31} - 10≤ai≤231−1,数字个数不超过 100100。
#include
using namespace std;
int x[100],c=0;
int main()
{
for(int i=0;;i++)
{
cin>>x[i];
if(x[i]==0) break; //输入到0的时候直接跳出
c=i; //在0的时候不会统计(统计最后一个的位置)
}
for(int j=c;j>=0;j--) cout<
本题就是普普通通的倒着输出,其中统计了最后一个的位置,再用循环倒着输出就ok了
给出一个正整数 nn,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 33 再加 11,否则除以 22。经过若干次循环后,最终都会回到 11。经过验证很大的数字(7\times10^{11}7×1011)都可以按照这样的方式比变成 11,所以被称为“冰雹猜想”。例如当 nn 是 2020,变化的过程是 20\to 10\to 5\to 16\to 8\to 4\to 2\to 120→10→5→16→8→4→2→1。
根据给定的数字,验证这个猜想,并从最后的 11 开始,倒序输出整个变化序列。
输入格式
输入一个正整数 nn。
输出格式
输出若干个由空格隔开的正整数,表示从最后的 11 开始倒序的变化数列。
输入输出样例
输入
20
输出
1 2 4 8 16 5 10 20
说明/提示
数据保证,1 \le n\le 1001≤n≤100。
#include
using namespace std;
int a[10005];
int cnt;
int main()
{
int n;
scanf("%d",&n);
int tmp=1;
printf("1 ");
while(n!=1)
{
if(n%2==0)
{
a[++cnt]=n;
n=n/2;
}
else
if(n%2==1)
{
a[++cnt]=n;
n=n*3+1;
}
}
for(int i=cnt;i>=1;i--)
{
printf("%d ",a[i]);
}
return 0;
}
这题其实不用注释,看题目解析就行
首先我们来看一看题目,得出了下列信息:
1.如果为奇数就*3+1
2.如果为偶数就/2
只需要模拟n变化为1的过程,然后存到一个数组中倒序输出
某校大门外长度为 ll 的马路上有一排树,每两棵相邻的树之间的间隔都是 11 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在 ll 的位置;数轴上的每个整数点,即 0,1,2,\dots,l0,1,2,…,l,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入格式
第一行有两个整数,分别表示马路的长度 ll 和区域的数目 mm。
接下来 mm 行,每行两个整数 u, vu,v,表示一个区域的起始点和终止点的坐标。
输出格式
输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。
输入输出样例
输入
500 3 150 300 100 200 470 471
输出
298
说明/提示
【数据范围】
【题目来源】
NOIP 2005 普及组第二题
这是一道很经典的题目了吧?
#include
using namespace std;
int l,i,j,s,n,a[10001],k,c;
int main( )
{
cin>>l>>n;
for(int i=1;i<=n;i++)
{
cin>>k>>s;
for(int j=k;j<=s;j++)
{
a[j]=1;
}
}
for(int i=0;i<=l;i++)
{
if(a[i]==0)
{
c++;
}
}
cout<
思路很简单,利用0和1标记,若已经移树,则为1.
直接在输入的循环里判断、标记。
最后再过一遍,计数
本节课主要是讲解了一维数组的练习题目,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,下一节课就开始讲解一维数组的题目了,请大家继续关注。
包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
本期收录于博主的专栏——C++保姆级入门教程,适用于编程入门初学者,感兴趣的朋友们可以订阅,查看其它内容教程。
C++保姆级入门教程_iecne的博客-CSDN博客
C++保姆级入门教程(1) 变量 输出 输入
C++保姆级入门教程(2) 算术运算和赋值
C++保姆级入门教程(3) if语句
C++保姆级入门教程(4) 循环
C++保姆级入门教程(5) 顺序结构
C++保姆级入门教程(6) 分支结构
C++保姆级入门教程(7) 循环结构
C++保姆级入门教程(8) 分支拓展
C++保姆级入门教程(9) 一维数组基础
C++保姆级入门教程(10) 一维数组练习
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主
文章存在借鉴,如有侵权请联系修改删除!