标题:数列换位
只看楼主
悠灵逃了...
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2008-1-11
 问题点数:0 回复次数:24 
数列换位
有一列数字是由M个奇数和N个偶数枸成的数列,且所有的奇数都排在偶数之前,如:1,3,5,7,9,11,13,17,19,2,4,6,8,10 要求:只用一个数组实现该数列的奇偶换位,且原各个奇数或偶数在奇数列或偶数列的相对位置不变。如上面的数列变为2,4,6,8,10,1,3,5,7,9,11,13,15,17,19
     谢谢大家帮忙了
搜索更多相关主题的帖子: 偶数 换位 奇数 数字 奇偶 
2008-02-15 12:24
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
试一试
#include <stdio.h>
#include<stdlib.h>
int main()
{
  int a[20]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10};
  int i=0,j;
  while(1)
  {
       if(i>9&&i<=14)
       {
               if(a[i]%2==0)           /*这行可以不要*/ /*因有序排列*/
                printf("%d ",a[i]);
       }
       else if(i>14)
       {
            for(j=0;j<=9;j++)
            {
                 printf("%d ",a[j]);
                 if(j>=9)exit(0);
            }
       }
       i++;
  }
  return 0;
}

[[it] 本帖最后由 xianshizhe111 于 2008-2-15 13:36 编辑 [/it]]
2008-02-15 13:11
悠灵逃了...
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2008-1-11
得分:0 
谢谢了,我来看一下
2008-02-15 14:35
悠灵逃了...
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2008-1-11
得分:0 
上面的好像只是输出结果是换位的,可是并没有完成数组元素的换位呀?恕我愚钝
2008-02-15 14:52
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
噢 看看再帮你做一下.
2008-02-15 15:05
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
你用两个数组就好了,上面的方法不变只是添一个赋值
2008-02-15 15:09
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include <stdio.h>
#include<stdlib.h>
int main()
{
  int a[20]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10};
  int b[20]={0};
  int i=0,j;
  int i1=0;
  while(a[i]!=0||a[i-1]!=0)
  {
       if(i>9&&i<=14)
       {
               if(a[i]%2==0)           /*这行可以不要*/ /*因有序排列*/
                printf("%d ",a[i]);
               b[i1++]=a[i];
       }
       else if(i>14)
       {
            for(j=0;j<=9;j++)
            {
                 printf("%d ",a[j]);
                 b[i1++]=a[j];
                 
            }
       }
       i++;
  }
  i=0;
  printf("\n");
  while(b[i]!=0) printf("%d ",b[i++]);
  return 0;
}
2008-02-15 15:25
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
/*这样可否满意 也可以用指针操作*/
#include <stdio.h>
#include<stdlib.h>
int main()
{
  int a[30]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10};
  int i=0,j;
  while(1)
  {
       if(i>9&&i<=14)
       {
                a[i+5]=a[i];
       }
       else if(i>14)
       {
            for(j=0;j<=9;j++)
            {
                 a[20+j]=a[j];
                 if(j==9) break;
            }
            break;
       }
       i++;
  }
  for(i=15;i<30;i++)
     a[i-15]=a[i];

  for(i=0;i<=14;i++)
     printf("%d ",a[i]);
  return 0;
}
2008-02-15 15:34
aprogram
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-2-15
得分:0 
好像不对啊
LZ要求的是只使用一个数组,也就是说不使用额外的空间,上面两位都使用了额外空间啊
2008-02-15 19:05
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
试着做了一下,经WIN-TC测试,正常运行,请众位高手再指点一番。

#include<stdio.h>

#define n 14

int zh(int x[n])
{
    int i,y;
    for(i=0;i<n/2;i++)
    {
        if(x[i]%2==0)
        {
            y=x[i];
            x[i]=x[i+n/2];
            x[i+n/2]=y;
        }

        else
        {
            y=x[i];
            x[i]=x[i+n/2];
            x[i+n/2]=y;
        }

   }
      return(x);
}

int main()
{
    int x[n];
    int i;
    printf("请输入要转换的数字,enter结束单个数字的输入。\n");
    for(i=0;i<n;i++)
        scanf("%d",&x[i]);
    printf("您要转换的数组为:\n");
    for(i=0;i<n;i++)
        printf("%3d",x[i]);
    puts(" ");
    printf("转换后为:\n");
    x[n]=zh(x);
   for(i=0;i<n;i++)
        printf("%3d",x[i]);
   puts(" ");


    getch();
}




晕~~又看了一下题,原来奇偶数并不是数量相同的,我按照相同的做的。

我的输入原意为1 3 5 7 9 11 13 2 4 6 8 10 12 14或为其反。

再重新改一下罢 。

[[it] 本帖最后由 广陵绝唱 于 2008-2-15 20:34 编辑 [/it]]
2008-02-15 20:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-199994-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097593 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved