编写一个C程序,将数组中的数字排列为一系列奇数和偶数

时间:2017-08-15 15:25:09

标签: c arrays sorting

我已尝试创建上述程序,但有一些错误。这是我的程序

#include <stdio.h>
#include <conio.h>

void main()
{
    int a[20],o[20],e[20],c[40],i,j,k,l,n;
    printf("enter size of array");
    scanf("%d",&n);
    printf("enter array");
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            for(k=1;k<=(n-j);k++)
            {
                if(a[i]%2==0)
                {
                    o[j]=a[i];
                    break;
                }
        else
        {
            e[k]=a[i];
        }
        }
        }
    }
    for(i=1;i<=j;i++)
    {
        c[l]=o[i];
    }
    for(i=1;i<=k;i++)
    {
        c[l+k]=e[k];
    }
    printf("The new array is");
    for(l=1;l<=(j+k);l++)
    {
        printf(" %d ",c[l]);
    }
    getch();
}

有人可以帮我纠正上述程序中的错误吗?有人也可以给我一些关于如何成为优秀C程序员的技巧吗?

1 个答案:

答案 0 :(得分:0)

问题可能是因为您从未初始化变量run。 使用未初始化的变量会产生未定义的行为(google that)。

此外,您的数组索引从1开始,例如:

test.wav

在C数组索引中从0开始,所以你应该写这个:

l

这适用于所有其他for (i = 1; i <= n; i++) 循环。

  • 但可能还有其他问题。
  • 你的程序看起来过于复杂
  • 使用for (i = 0; i < n; i++) 而不是forodd而不是o等变量名称可以让您的程序更容易阅读。
  • 您的程序格式不正确。正确的格式化对于可读性至关重要