$$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Self-defined math definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math symbol commands \newcommand{\intd}{\,{\rm d}} % Symbol 'd' used in integration, such as 'dx' \newcommand{\diff}{{\rm d}} % Symbol 'd' used in differentiation ... $$

C语言:规则排序

题目

输入正整数 n,再输入 n 个正整数,先将其中的奇数从小到大排序,再将偶数从大到小排序。
 例如:
  输入:8 2 8 5 22 3 9 11 25
  输出:3 5 9 11 25 22 8 2

代码

  #include<stdio.h>
  #define swap(j,tmp) tmp=a[j];a[j]=a[j+1];a[j+1]=tmp

  int main(){
    int a[100] = {0};
    int n,i,j,tmp;
	
    scanf("%d",&n); 

    for(i=0;i<n;i++){
      scanf("%d",&tmp);
      a[i] = tmp;
    }
    for(i=0;i<n;i++){
      for(j=0;j<n-1;j++){
        if(a[j]%2==0&&a[j+1]%2==1){
          swap(j,tmp);
	}
        if((a[j]%2)+(a[j+1]%2)==0&&a[j]<a[j+1]){
          swap(j,tmp);
        }
        if((a[j]%2)+(a[j+1]%2)==2&&a[j]>a[j+1]){
          swap(j,tmp);
        }
      }
    }
    for(i=0;i<n;i++)printf("%d ",a[i]);
    return 0;
  }

posted @ 2022-11-18 11:46  Shin404  阅读(18)  评论(0)    收藏  举报