可以运行,提交了说运行错误。。
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分,奇数部分降序排列输出,偶数部分升序输出。
例:
输入:
8 13 25 18 56 11 77 98
输出:
77 25 13 11 8 18 56 98
本人的代码:
#include<stdio.h>
#include<math.h>
int main()
{
char a[10];
int s=0,state=0,in=1,out=0,i=0,j=0,x,ou[100],ji[100],o=0,p=0;
while(1)
{
a[i]=getchar();
if(state==out&&(a[i]!=' '&&a[i]!='\n'))
{
state=in;
i++;
}
else if(state==in && (a[i]!=' '&&a[i]!='\n') )
i++;
else if(state==out&&a[i]=='\n')
break;
else if(state==in &&(a[i]==' '||a[i]=='\n'))
{
for(j=i-1;j>=0;j--)
s+=(a[j]-48)*pow(10,i-1-j);
if(s%2==0) {
ou[o]=s;
o++;
}
else {
ji[p]=s;
p++;
}
s=0;
if(a[i]=='\n')break;
state=out;
i=0;
}
else ;
}
for(i=0;i<o;i++)
for(j=i+1;j<o;j++)
if(ou[i]>ou[j]){
x=ou[i];
ou[i]=ou[j];
ou[j]=x;
}
for(i=0;i<p;i++)
for(j=i+1;j<p;j++)
if(ji[i]<ji[j]){
x=ji[i];
ji[i]=ji[j];
ji[j]=x;
}
for(i=0;i<p;i++){
printf("%d",ji[i]);
if(i<p-1)printf(" ");
}
if(o!=0)
{
if(p!=0)printf(" ");
for(i=0;i<o;i++){
printf("%d",ou[i]);
if(i<o-1)printf(" ");
}
}
return 0;
}