对于一个长度有100+的数字,我们可以把它存到数组里用来比较大小,但是数组的长度也有限制,所以对于存入数组这种方法不可行,那么有的人会说,我可以把他的每个数存到数组a[1],a[2],a[3].....a[n]中,那么问题来了,你怎么去比较呢??? 一个一个去比较大小??而且个十百千万亿等等这些都是存在数组里,可能一个数的百位比另外一个数的百位大,但是千位小于另一个数的千位,那又要分情况讨论,是不是很麻烦,所以string对于大数字以及位数很多的数字用来比大小和取最值就非常的巧妙,快来和我一起学吧!!!
下面是我找的一个例题,用来帮助同学们理解。
题目:
这题刚好符合我们的要求,数字的位数超过100位数。
接下来就是题目的代码和注释:
#include <bits/stdc++.h>
using namespace std;
int main()
{
//string比较大小以及用来取string里的最大值和最小值依旧利用打擂台的方式
int n;
string s;
string max;//定义一个打擂台的种子选手
int bh;
cin >> n;
for(int i=1;i<=n;i++)
{
cin >> s;
//下面定义两个int 类型用来存储string类型的长度
int maxlen=max.size();//初始时max的长度为0,因为我们并没有输入max;
int slen=s.size();
//因为刚开始maxlen=0,只要你输入了s,那么slen就会大于0
//然后更新max,使max等于和它比较的s
//当然maxlen也会随着max的更新而更新
//然后就是简单的打擂台了,和max依次比较,如果没有比max大的了
//那么到最后max就是最大的,输出max即可;
if(slen > maxlen || slen >= maxlen && s >max)
{
max=s;
bh=i;//用来记总统的编号
}
}
cout << bh << endl;
cout << max ;
return 0;
}
代码和注释皆是原创,不懂的可以写在评论区。