在比赛中一些对数和数组的操作的应用(持续更新)

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];
	}
}

如果将来有一天,你听说世间有位武功盖世的绝顶剑客,不用怀疑,那一定就是我短短了!(来自雪中悍刀行,我超爱的。)

雪中悍刀行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值