输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 8 2 4 6 8 10。(编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。
程序运行结果如下:
Input 10 numbers:
3 12 7 65 8 4 17 25 36 50↙
Output: 3,7,17,25,65,4,8,12,36,50
#include <stdio.h>
#include <stdlib.h>
void Input(int arr[],int n)
{
int i;
for(i=0;i<n;++i)
{
scanf("%d",&arr[i]);
}
}
int IsOddEven(int n)
{
if(n%2==0)
return 0;
else
return 1;
}
void Sort(int arr[],int Len)
{
int i, j, temp;
for (i = 0; i < Len - 1; i++)
for (j = 0; j < Len - 1 - i; j++)
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
void Output(int arr[],int n)
{
printf("Output: ");
int i;
for( i=0;i<n-1;++i)
{
printf("%d,",arr[i]);
}
printf("%d\n",arr[n-1]);
}
int main()
{
int InputArr[10]={0};
int OutputArr[10]={0};
printf("Input 10 numbers:\n");
Input(InputArr,10);
int Len=sizeof(InputArr)/sizeof(InputArr[0]);
Sort(InputArr,Len);
int i,j,count;
count=j=0;
for(i=0;i<Len;++i)
{
if(IsOddEven(InputArr[i])==1)
{
OutputArr[j]=InputArr[i];
InputArr[i]=0;
count++;
j++;
}
}
for(i=0;i<Len;++i)
{
if(InputArr[i]!=0)
{
OutputArr[count]=InputArr[i];
count++;
}
}
Output(OutputArr,Len);
return 0;
}