FAFU 专业技能考核题目模拟题解析(仅供参考)

排序

FAFU 专业技能考核题目模拟题解析(仅供参考)
FAFU 专业技能考核题目模拟题解析(仅供参考)

思路:
直接做一次排序 然后特判一下即可
需要注意输出格式是在每个数前输出空格
排序推荐直接使用c++的sort函数
需要下面这两句引入

#include <algorithm>
using namespace std;

代码:

#include "stdio.h"
#include <algorithm>
using namespace std;

int main(){
	int a[1005],b[1005], n, i, j, k, m, t, aver=0;
	
	FILE *fp;
	if((fp=fopen("sort.in", "r")) != NULL ){
		fclose(fp);  //存在的话,要先把之前打开的文件关掉
		
		freopen("sort.in", "r", stdin);
		//freopen("sort.out", "w", stdout);
	}
	
	scanf("%d", &n);
	for( i=0; i<n; i++){
		scanf("%d", &a[i]);
		aver += a[i];
	}
	aver = (int)(1.0*aver/n + 0.5) ;
	//********************************************************

	//为a数组从小到大排序
	sort(a,a + n);
	
	k = 0;//记录到哪个位置 大于平均数
	
	for(i = 0; i < n; i++){
		if(a[i] <= aver){
			printf(" %d",a[i]);
		}
		else {  //此时大于平均数 要逆序输出 
			k = i;
			break;
		}
	} 

	//开始逆序输出
	for(i = n-1;i >= k;i--){
		printf(" %d",a[i]);
	} 
	
	//========================================================
	return 0;
}

上一篇:P1063 [NOIP2006 提高组] 能量项链


下一篇:移动零