请大家帮我看下c++的程序题错在哪里

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:22:19
输入20个数字,使得奇数在前,偶数在后。我输入了1到20。但是为什么不输出来,错在哪里
#include <iostream.h>
void main()
{int i,m,j,k,z;
int a[20];
for (i=0;i<20;i++)
{cin>>a[i];}
for (j=19;j>0;j++)
for (m=0;m<j;m++)
if(a[m]%2==0 && a[m+1]%2==1)
{k=a[m];a[m]=a[m+1];a[m+1]=k;}
for (z=0;z<20;z++)
cout<<a[z]<<' ';
}

给你修改好了

#include <iostream.h>
void main()
{
int i,m,j,k,z;
int a[20];
for (i=0;i<20;i++)
{cin>>a[i];}

for (j=19;j>0;j--) /*修改的地方*/

for (m=0;m<j;m++)
if(a[m]%2==0 && a[m+1]%2==1)
{k=a[m];a[m]=a[m+1];a[m+1]=k;}

for(z=0;z<20;z++)
cout<<a[z]<<' ';
}

for (j=19;j>0;j++)
for (m=0;m<j;m++)
if(a[m]%2==0 && a[m+1]%2==1)
{k=a[m];a[m]=a[m+1];a[m+1]=k;}
其中这一部分有点乱了,第一次把偶数和奇数交换过来后,第二次又把偶数交换了,结果是两个奇数到了一起来,这就错了
可以改成这样的,
for (m=0;m<20;m+=2)
if(a[m]%2==0 && a[m+1]%2==1)
{k=a[m];a[m]=a[m+1];a[m+1]=k;}
这样就对了!

iostream.h=>iostream
再在后面加上using namespace std;
#include <iostream>
using namespace std;
void main()
{int i,m,j,k,z;
int a[20];
for (i=0;i<20;i++)
{cin>>a[i];}
for (j=19;j>0;j++)
for (m=0;m<j;m+