1.整形数组的排序-sort函数(在比赛中如果比赛不卡时间的话可以节省不少时间)
sort(n+a,n+b);(n为你想要进行排序的整形数组);
#include<bits/stdc++.h>
using namespace std;
int main()
{int num[10]={1,23,232,213,112,123,342,42,121,12};cout<<"排序前:"<<endl;for(int i=0;i<10;i++){cout<<num[i]<<" ";}cout<<endl; sort(num,num+10);cout<<"排序后:"<<endl;for(int i=0;i<10;i++){cout<<num[i]<<" ";}cout<<endl;
}
运行结果:
sort函数默认是升序排列,如果想要设置降序或者别的排序规则就要自己重写第三个参数的函数了。
后续更新.
2.在比赛中一般比较常用的整数反转输出算法。
在比赛中好多时候会考察反转输出的应用,不论是整数亦或是字符串。多少还是要会一些这些东西的。简单的反转输出,我相信大家都是会的.
就是一个简单的while循环,每次取余输出个位数字,再进行除10,直至为零,这种的不需要应用到数组。
但是也不乏会出现有的题目出现一些比较坑的考法,比如说输出一个整数的反转输出,但是不输出首位的0,比如说500反转输出后输出5,这个时候就需要借用到一个数组了,或者整形的位数不够的话也可以用到字符串的反转输出。这里两种方法均进行给出。
a.整形数组的借用
这里以一个简单的最高10位的整数的反转输出为例,需要更大的位数自己调整最大数组的长度。
#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b;cin>>a>>b;int c=a*b;int n[10];int count=0;int begin;while(c!=0){ n[count]=c%10;c=c/10;count++;} for(int i=0;i<count;i++){if(n[i]!=0){begin=i;break;}}for(int i=begin;i<count;i++){cout<<n[i];}
}
b.string型的反转输出的借用。(这里使用到了c++中的string;流,不太熟练的话建议可以学一下,可以省好多事,因为我发现好多编译环境对to_string是不能编译的,stringstream这个时候绝对值得你选择。)
string这里对数位就没那么多限制了。
#include<bits/stdc++.h>
#include <sstream>
using namespace std;
int main()
{stringstream ss;string str;int a,b;int begin;cin>>a>>b;int c=a*b;ss<<c;ss>>str;reverse(str.begin(),str.end());for(int i=0;i<str.length();i++){if(str[i]!=0){begin=i;break;}}for(int i=begin;i<str.length();i++){cout<<str[i];}
}
如果将来有一天,你听说世间有位武功盖世的绝顶剑客,不用怀疑,那一定就是我短短了!(来自雪中悍刀行,我超爱的。)