🚌Pixiv ID: 76435086

简单的数组


  • 前面吧,我们搞定了一些简单的逻辑运算和数据运算,也接触到了一些数据的储存与调用,至少我们会写A+B这个史诗级问题了
    有问题的也不要怕,我们可以慢慢来,回去看看之前的文章,问问其它的大佬 (女装大佬),当然你们不嫌弃我这个蒟蒻的话也可以给我说,大家一起讨论。

好了废话说完了,我们先来复习一下前面的内容

  1. 解决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+CCtrl+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个数据,这个有时间就说一说)

那么其实第二个问题在第一个问题解决的情况下并不是很难,只要找到规律用fororwhile循环就行了。

  • 老规矩先给代码然后一条条改写:
#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个):

  • 调用第二个数据:
    1.jpg

    似乎是没有什么问题的

  • 调用第五个数据:
    20190913133228.jpg

等等!!!不对头!!!
我们没有输入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;
}

就改一个就行了,不想写那么多,其它的就自己改,自己跑就行。