2020ECNU机试01 发表于 2020-05-15 | 分类于 2020ECNU | 评论数: | 热度: ℃ 本文字数: 6.9k | 阅读时长 ≈ 6 分钟 Code1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#include <iostream>using namespace std;int arr[100], arr1[100], arr2[100];int countz = 0, countf = 0, zeroIndx = -1;//正数升序void incr() { bool flag; for (int i = 0;i < countz;i++) { flag = false; for (int j = 0;j < countz - i - 1;j++) { if (arr1[j]> arr1[j+1]) { int temp = arr1[j]; arr1[j] = arr1[j + 1]; arr1[j + 1] = temp; flag = true; } } if (!flag) break; }}//负数降序void decr() { bool flag; for (int i = 0;i < countf;i++) { flag = false; for (int j = 0;j < countf - i - 1;j++) { if (arr2[j] < arr2[j + 1]) { int temp = arr2[j]; arr2[j] = arr2[j + 1]; arr2[j + 1] = temp; flag = true; } } if (!flag) break; }}int main() { int n,temp; scanf("%d",&n); for (int i = 0;i < n;i++) { //scanf("%d", &temp); cin >> temp; arr[i] = temp; if (temp > 0) { arr1[countz++] = temp; }else if (temp < 0) arr2[countf++] = temp; else zeroIndx = i; } incr();//对正数升序 decr();//对负数降序 int a = 0, b = 0; //正数升序,负数降序 for (int i = 0;i < n;i++) { if (arr[i] > 0) { arr[i] = arr1[a++]; } else if (arr[i] <0) { arr[i] = arr2[b++]; } } for (int i = 0;i < n;i++) { if(i==0)printf("%d",arr[i]); else printf(" %d",arr[i]); } return 0;} ----\(˙<>˙)/----赞赏一下吧~ 打赏 微信支付 支付宝 本文作者: wicherQAQ 本文链接: https://wicherqaq.github.io/2020/05/15/2020ECNU%E6%9C%BA%E8%AF%9501/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!