十个数奇数升序排列偶数降序排列,用C语言程序表示

如题所述

#include <stdio.h>void change(int num[],int a,int b,int n)
{
int *num1=new int[a];
int *num2=new int[b];
int i;
int j;
int temp;
a=b=0; for(i=0;i<n;i++)
{
if(num[i]%2==0)
{
num2[b]=num[i];//把偶数装进num2中
b++;
}
else
{
num1[a]=num[i];//把奇数装进num1中
a++;
}
} for(i=0;i<a-1;i++)//奇数升序排列
{
for(j=a-1;j>i;j--)
{
if(num1[j]<num1[j-1])
{
temp=num1[j];
num1[j]=num1[j-1];
num1[j-1]=temp;
}
}
} for(i=0;i<b-1;i++)//偶数降序排列
{
for(j=b-1;j>i;j--)
{
if(num2[j]>num2[j-1])
{
temp=num2[j];
num2[j]=num2[j-1];
num2[j-1]=temp;
}
}
} for(i=0;i<a;i++)//把num1装回num中
{
num[i]=num1[i];
}
for(i=0;i<b;i++)//把num2装回num中
{
num[i+a]=num2[i];
}
}void main()
{
int num[10];
int i;
int a=0,b=0;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
if(num[i]%2==0) b++;//计算偶数的个数
else a++;//计算奇数的个数
}
change(num,a,b,10);
for(i=0;i<10;i++)
{
printf("%d ",num[i]);
}
printf("\n");
}2.我写了另一种方法,看你自己喜欢#include <stdio.h>
void main()
{
int a[10],b[10],c[10];
int i,j,k=0,f=0,t;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)//输入10个数
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(j=0;j<10;j++)//判断是奇数还是偶数
{
if(a[j]%2==1)//奇数放入数组b中
{
b[k]=a[j];
k++;
}
else if(a[j]%2==0)//偶数放入数组c中
{
c[f]=a[j];
f++;

}
}
for(i=0;i<f-1;i++)//排序
{
for(j=0;j<f-1-i;j++)
{
if(c[j]>c[j+1])
{
t=c[j];c[j]=c[j+1];c[j+1]=t;
}
}
}
for(i=0;i<k-1;i++)//排序
{
for(j=0;j<k-1-i;j++)
{
if(b[j]<b[j+1])
{
t=b[j];b[j]=b[j+1];b[j+1]=t;
}
}
}
printf("偶数从小到大排序为:");//输出结果
for(j=0;j<k;j++)
{
printf("%d ",b[j]);
}
printf("\n");
printf("奇数从大到小排序为:");//输出结果
for(i=0;i<f;i++)
{
printf("%d ",c[i]);
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-09
这个很简单的!
第2个回答  2013-11-09
哈哈、是老师你教导有方啊、
第3个回答  2013-11-09
你也太有才了,能把我留的作业拿到这里问,等周三晚上我给你解答
相似回答