各位帮我看看,有什么错误!!!!!!
题目是:将一列整数的奇数在前偶数在后并且有序的排列在一个数列中
#include<stdio.h>
int main()
{
int n=0,a[100],b[100],c[100],d[100],i,j1=0,j2=0,temp;//a为输入数列,b为最后输出数列,c为奇数列,d为偶数列
printf("请输入一组整数后,在输入0.1:");
for(i=0;;i++)
{
scanf("%d",&a[i]);
if(a[i]==0.1) break;
n++;
}
for(i=0;i<n;i++)
{
if(a[i]%2!=0)
{
c[j1]=a[i];
j1++;
}
else
{
d[j2]=a[i];
j2++;
}
}
for(i=0;i<j1;i++)
if(c[i]>c[i+1])
{
temp=c[i];
c[i]=c[i+1];
c[i+1]=temp;
}
for(i=0;i<j2;i++)
if(d[i]>d[i+1])
{
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
temp=n;
for(i=0;i<j1;i++)
b[i]=c[i];
for(i=0;i<j2;i++,n--)
b[n]=d[i];
for(i=0;i<temp;i++)
printf("%d",b[i]);
return 0;
}
[解决办法]
#include<stdio.h>
int main()
{
int n=0,a[100],b[100],c[100],d[100],i,j,j1=0,j2=0,temp;//a为输入数列,b为最后输出数列,c为奇数列,d为偶数列
printf("请输入一组整数后,在输入0.1:");
for(i=0;;i++)
{
scanf("%d",&a[i]);
if(a[i]==-999999999) break;//a是int数组。。怎么能输入0.1。。改为一个别的什么整数作为结束符。。
n++;
}
for(i=0;i<n;i++)
{
if(a[i]%2!=0)
{
c[j1]=a[i];
j1++;
}
else
{
d[j2]=a[i];
j2++;
}
}
for(i=0;i<j1;i++)//排序写错了。。
{
for(j = 0; j < j1 - i - 1; ++j)
{
if(c[i]>c[i+1])
{
temp=c[i];
c[i]=c[i+1];
c[i+1]=temp;
}
}
}
for(i=0;i<j2;i++)//排序错了。。
{
for(j = 0; j < j2 - i - 1; ++j)
{
if(d[i]>d[i+1])
{
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
}
}
temp=n;
--n;//这里n要减一。。否则越界。。
for(i=0;i<j1;i++)
b[i]=c[i];
for(i=0;i<j2;i++,n--)
b[n]=d[i];
for(i=0;i<temp;i++)
printf("%d",b[i]);
return 0;
}