题目内容:
接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个整数按升序排列输出,并且奇数在前,偶数在后。
输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格
输入样例1:
10 9 8 7 6 5 4 3 2 1
输出样例1:
1 3 5 7 9 2 4 6 8 10 回车
输入样例2:
2 3 4 5 -1
输出样例2:
3 5 2 4 回车
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int a[10] = { 0 };
int b[10] = { 0 };
int c[10] = { 0 };
int d[10] = { 0 };
int e[10] = { 0 };
int f[10] = { 0 };
for (int i = 0;i<20; i++)
{
scanf_s(" %d", &a[i]);
if (a[i] < 0 || i>11)
{
b[i] = a[i];
break;
}
}
int len1=sizeof(a)/sizeof(a[0]);
for (int j = 0; j < len1; j++)
{
int k = a[j] % 2;
if (k == 1)
{
c[j] = a[j];
}
else
{
d[j] = a[j];
}
}
int len2= sizeof(c) / sizeof(c[0]);
int len3 = sizeof(d) / sizeof(d[0]);
for (int k = 0; k < len2; k++)
{
for (int m = 0; m < len2; m++)
if (c[k] < c[m + 1])
{
e[k] = c[k];
c[k] = c[m + 1];
c[m + 1] = e[k];
}
}
for (int k = 0; k < len3; k++)
{
for (int m = 0; m < len3; m++)
if (d[k] > d[m + 1])
{
f[k] = d[k];
d[k] = d[m + 1];
d[m + 1] = f[k];
}
for (int k = 0; k < len2; k++)
printf(" %d", c[k]);
for (int k = 0; k < len3; k++)
printf(" %d", d[k]);
}
system("pause");
return 0;
}