🚌Pixiv ID: 76435086
简单的数组
- 前面吧,我们搞定了一些简单的逻辑运算和数据运算,也接触到了一些数据的储存与调用,
至少我们会写A+B
这个史诗级问题了
有问题的也不要怕,我们可以慢慢来,回去看看之前的文章,问问其它的大佬(女装大佬),当然你们不嫌弃我这个蒟蒻的话也可以给我说,大家一起讨论。
好了废话说完了,我们先来复习一下前面的内容
-
解决A+B Problem:
- 键入a,b两个数字,计算a+b的值并输出:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}
你现在别告诉我你现在连这个都看不懂就只有回炉重造了~~(直接打死)~~
我们这里只是键入了两个数据,就定义了两个int
型的变量。然后我们继续:
今天你的的心情很好沿着河岸在悠哉悠哉地散步,这时你的手机QQ响了,你以为是你的男神/女神给你发消息了,但是当你打开QQ却发现是小茗那个烦人精,他让你帮他储存1000个数据并且可以随时的查看(要不是他还有用早就英年早逝了)
于是苦逼的你回家打开了电脑开始了疯狂Ctrl+C
和Ctrl+V
就得到了下面的这个东西:
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j>>k>>l>>m>>n>>o>>p>>q>>r>>s>>t>>u>>v>>w>>x>>y>>z;
cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<m<<n<<o<<p<<q<<r<<s<<t<<u<<v<<w<<x<<y<<z;
return 0;
}
好了,快停下吧,你隔壁的dalao已经发出了笑声。这才多少个?26个手都快酸了,更不要说是1000个了(更不要谈有些题目动不动几千个数据的运算)
那如果需要完成这样类似的东西,我们该怎么办啊?!!!!
救救孩子吧
- 这时一旁的ZWT一脸姨母笑地走了过来,笑嘻嘻地走向了你————————旁边漂亮的女同学讲了起来:“这个啊,需要一种新的东西——数组来解决的,来我来教你。”(咳咳咳,还是我来给大家说吧,
毕竟同性才是真爱,ZWT大佬这种是个例外)那我们开始吧。
数组
- 我们先来解决之前的问题吧:储存1000个数字,并且可以随意调用其中的一个。
- 先分析:其实我们只需要解决两个问题
1.如何简便定义1000个变量
2.如何简便读入1000个变量(键入没有办法,当然你也可以使用文件操作在一个txt文档里放1000个数据,这个有时间就说一说)
那么其实第二个问题在第一个问题解决的情况下并不是很难,只要找到规律用for
orwhile
循环就行了。
- 老规矩先给代码然后一条条改写:
#include<iostream>
using namespace std
int main()
{
int a[999];
for(int i=0;i<=999;++i)
cin>>a[i];
cout<<a[572];
return 0;
}
这个就不给效果图了。(数据手打太麻烦,文件操作讲不到,而且也不直观)
- 那我们就用5个数就行了:
#include<iostream>
using namespace std;
int main()
{
int a[5],n;//a[n]储存数据,n从键盘读入数据
cout<<"What number you want to Putin"<<endl;//输入提示
cout<<"Putin = ";//输入提示
for(int i=0;i<=5;++i)//for循环读入数据放入数组a
cin>>a[i];//读入语句
cout<<"Which number you want to Putout "<<endl;//输入提示
cout<<"Putin n = ";//输入提示
cin>>n;
cout<<"a[n] = "<<a[n-1]<<endl;//输出查询结果
return 0;
}
我们先规定5个数是有顺序的:2 4 6 8 1
然后运行程序将这5个数输入进去:
我们以及输入了5个数啊,为什么不继续?
这里是有一个找打的错误!!!!
for(int i = 0 ; i <=5 ; ++i )
看清楚了,这个是从1到5一共是6次的循环!!!!!
- 改正方式:(注意各种改正方式最后调用的区别,后面会有讲解)
1.在对i
赋初值处将初值设置为1
#include<iostream>
using namespace std;
int main()
{
int a[5],n;//a[n]储存数据,n从键盘读入数据
cout<<"What number you want to Putin"<<endl;//输入提示
cout<<"Putin = ";//输入提示
for(int i=1;i<=5;++i)//for循环读入数据放入数组a
cin>>a[i];//读入语句
cout<<"Which number you want to Putout "<<endl;//输入提示
cout<<"Putin n = ";//输入提示
cin>>n;
cout<<"a[n] = "<<a[n-1]<<endl;//输出查询结果
return 0;
}
- 运行效果:
2.将条件判断语句中的=
去掉
#include<iostream>
using namespace std;
int main()
{
int a[5],n;//a[n]储存数据,n从键盘读入数据
cout<<"What number you want to Putin"<<endl;//输入提示
cout<<"Putin = ";//输入提示
for(int i=0;i<5;++i)//for循环读入数据放入数组a
cin>>a[i];//读入语句
cout<<"Which number you want to Putout "<<endl;//输入提示
cout<<"Putin n = ";//输入提示
cin>>n;
cout<<"a[n] = "<<a[n]<<endl;//输出查询结果
return 0;
}
- 运行效果:
3.直接5改成4
#include<iostream>
using namespace std;
int main()
{
int a[5],n;//a[n]储存数据,n从键盘读入数据
cout<<"What number you want to Putin"<<endl;//输入提示
cout<<"Putin = ";//输入提示
for(int i=0;i<=4;++i)//for循环读入数据放入数组a
cin>>a[i];//读入语句
cout<<"Which number you want to Putout "<<endl;//输入提示
cout<<"Putin n = ";//输入提示
cin>>n;
cout<<"a[n] = "<<a[n]<<endl;//输出查询结果
return 0;
}
- 运行效果:
这里就是这个问题的解决,我们为了后面方便就先论一论2和3(1的话出问题的表现不同)
那么我们现在来调取我们储存的数据(对于第2,3种统一就调用第2个和第5个):
-
调用第二个数据:
似乎是没有什么问题的
-
调用第五个数据:
等等!!!不对头!!!
我们没有输入0
这个数据的啊,为什么搞出来一个0
?!
有问题的,要不去问问大佬???(我去了)
大佬回复到:
(开一个玩笑,大佬们还是很友善的)
好吧,我们自己想一想吧,自立根生。我们来回忆一下我们的输入顺序吧:
输入顺序 | 一 | 二 | 三 | 四 | 五 |
---|---|---|---|---|---|
输入数据 | 2 | 4 | 6 | 8 | 1 |
这一看可就不得了,不仅仅是调用第五个数据出错了,就连第二个数据的调用也错了,难道是这个程序我们直接搞错了?
最后我知道了一个东西,只不过在这之前我想问大家一问题:
你们是怎么数数的?
一定是:1,2,3……这样的吧(说其它语言的都一样,别杠)
但是,计算机数数是这样的:0,1,2,3……(很无语……想摔键盘)
所以我们存进去的数据是这样的:
变量名 | a[0] | a[1] | a[2] | a[3] | a[4] | a[5] |
---|---|---|---|---|---|---|
存储数据 | 2 | 4 | 6 | 8 | 1 | 随机数 |
所以我们之前读取是有问题的。
读取第2个,实际应该调用a[1],读取第五个应该调用a[4]
所以改改就行了:
#include<iostream>
using namespace std;
int main()
{
int a[5],n;//a[n]储存数据,n从键盘读入数据
cout<<"What number you want to Putin"<<endl;//输入提示
cout<<"Putin = ";//输入提示
for(int i=0;i<=4;++i)//for循环读入数据放入数组a
cin>>a[i];//读入语句
cout<<"Which number you want to Putout "<<endl;//输入提示
cout<<"Putin n = ";//输入提示
cin>>n;
cout<<"a[n] = "<<a[n-1]<<endl;//输出查询结果
return 0;
}
就改一个就行了,不想写那么多,其它的就自己改,自己跑就行。