输入20个整数,使用简单选择排序法进行排序,按照偶数从小到大,奇数从大到小的原则输出

如题所述

第1个回答  2011-01-02
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i,j,k,n,a[20]={0},b[20]={0};
void sort(int x[],int y);
i=0;j=0;
for(k=0;k<20;k++)
{scanf("%d",&n);
if(n%2==0)a[i++]=n;
else b[j++]=n;
}
sort(a,i);
sort(b,j);

system("PAUSE");
return 0;

}

void sort(int x[],int y)
{int i,j,f,t;
if((y>0)&&(x[0]%2==0))f=1;
if((y>0)&&(x[0]%2==1))f=0;
for(i=0;i<y-1;i++)
for(j=i+1;j<y;j++)
if((x[i]<x[j])&&(f==0)||(x[i]>x[j])&&(f==1))
{t=x[i];x[i]=x[j];x[j]=t;}
for(i=0;i<y;i++)printf("%d ",x[i]);
printf("\n");
}

...的正整数,将其中偶数从小到大输出,奇数从大到小输出
int cmp(const void *x, const void *y){ return *(int *)x - *(int *)y;} int main(){ int a[25];int i, j, k;for (i = 0; i < 20; i++)scanf("%d",&a[i]);qsort(a, 20, sizeof(a[0]), cmp);for (i = 0; i < 20;i++)if (a[i] % 2 == 0)pr...

编程输入20个不同的正整数,将其中的偶数按照由大到小的次序输出,奇数按...
static public void PaiXu(int[] nums){ \/\/此函数不改变数组的奇偶数在数组中的位置,因为问题中没有明确 \/\/使用时,将含20个整数的数组传入 \/\/只是为了演示,本函数未考虑算法性能 if (nums.Length == 0)return;int oddMin;\/\/每循环的最小奇数 int evenMax;\/\/每循环的最大偶数 for (int ...

c语言中输入20个数排列大小顺序
int a[20]; int i,j,t; printf("请输入20个数字,以回车间隔:"); for(i=0;i<20;i++) scanf("%d",&a[i]); printf("\\n"); for(j=0;j<20;j++) for(i=0;i<20-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a...

用C语言实现输入20个数偶数项按升序输出,奇数项不变,
int tmp, i, j;for(i=0; i<20; i+=2) \/\/i+=2即可。。同样如果认为a[1]是偶数项的话从a[0]开始 for(j=i; j<20; j+=2)if(arr[i]>arr[j])tmp =arr[i], arr[i]=arr[j], arr[j]=tmp;for(i=0; i<20; i++)printf("%d\\t", arr[i]);return 0;} \/\/ 可...

c语言随机产生20个整数然后排序 顺序 越简单越好(新新手)
k。如果不需要范围,可以去掉%kint k=100;for(i=0;i<20;i++)a[i]=rand()%k;\/\/排序a[20],从小到大for(i=0;i<19;i++){for(j=i+1;j<20;j++){if(a[i]>a[j]){n=a[i];a[i]=a[j];a[j]=n;}}}\/\/输出a[20]for(i=0;i<20;i++)printf("%d ",a[i]...

随机产生20个整数,用选择法对这些数按小到大进行排序。
define N 20 void main( void ){ int a[N],i,j,k;srand( (unsigned)time( NULL ) );puts("befor sort");for( i = 0; i < N;i++ ){ a[i]=rand();printf("%d,",a[i]);} for(i=0; i<N-1; i++){ k = i;for(j=i+1; j<N; j++)if(a[k] > a[j])k...

C语言:下面程序使用选择排序方法对20个整数进行排序,这20个数从键盘输 ...
#define MAXlen 20void select_sort(int *x, int n) { \/\/选择排序int i, j, min;int t;for (i = 0; i < n - 1; i++) { \/\/ 要选择的次数:0~n-2共n-1次 min = i; \/\/ 假设当前下标为i的数最小,比较后再调整 for (j = i + 1; j < n; j++) { \/\/循环找出最小的数的...

从键盘上输入20个整数,用选择法将它们按从小到大的顺序排列输出,要求...
static void Main(string[] args){ int min;int[] nums = new int[20];for (int i = 0; i < 20; i++){ int a= Convert.ToInt32(Console.ReadLine());nums[i] = a;} \/\/外层循环数组 for (int i = 0; i < nums.Length - 1; i++){ \/\/ 初始第一个值为最小值 min =...

C语言程序设计,实现输入20个整数数据,按从大到小排序,计算出平均值,输 ...
int main(){ int a[20],i,j,s;double sum=0,average;for(i=0;i<20;i++){ scanf("%d",&a[i]);sum+=a[i];} average=sum\/20;for(i=1;i<20;i++)for(j=0;j<20-i;j++)if(a[j]>a[j+1]){ s=a[j];a[j]=a[j+1];a[j+1]=s;} printf("平均值为:%f\\n",...

从键盘输入任意20个整数数序输出,然后由小到大排序后输出。
应该用起泡法做:include "stdio.h"void main(){ int i, j, t, N;int a[20];printf("请输入20个数字:\\n");for(i=0; i<20; i++)scanf("%d",&a[i]);for(i=1; i<=20; i++){ printf("%5d",a[i]);} for(j=1; j<20; j++)for (i=1; i<=20-j; i++){ if...

相似回答