求救整数奇偶排序

#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdio>
#include<climits>
#include<cstring>
#include<string>
#include<algorithm>
#include<functional>
#include<list>
using namespace std;

int main(){
	int integer[11],odd[11],even[11],a=1,b=1;
	for(int i=1;i<=10;i++){
		cin>>integer[i];
		if(integer[i]%2==0){
			even[a]=integer[i];
			a++;
		}
		else{
			odd[b]=integer[i];
			b++;
		}
	}
	sort(even+1,even+a);
	sort(odd+1,odd+b);
	for(int i=a;i>=1;i--){
		cout<<odd[i]<<" ";
	}
	for(int i=1;i<=a;i++){
		cout<<even[i]<<" ";
	}
	return 0;
}

不知道为什么会出现一些很大很离谱的数字。

首先

for(int i=a;i>=1;i--){
    cout<<even[i]<<" ";
}

这里应该是 b ,因为你的 odd 数组是用 b 进行记录的。

而且推荐你用 ++?,因为这样的话只要将 ? 初始化为 0 ,就可以直接用了,像for循环这样的可以直接用不用减1

2 个赞

sort 左闭右开,所以应写作 sort(a + 1, a + 1 + n);,其中 n 为数组长度。

好巧
我刚学

你是哪个老师教的?

关了