标题:数列换位
只看楼主
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
LS的LS兄弟代码不错不用精简.
2008-02-16 15:52
zhaoruiqi1975
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-1-23
得分:0 
#include <stdio.h>
#define M 50
move(a,m,n)
 int a[],m,n;
{int i,j,t[M];
 for(i=0;i<n;i++)
    t[i]=a[m+i];
 for(;i<m+n;i++)
    t[i]=a[i-n];
 for(i=0;i<m+n;i++)
    a[i]=t[i];
}
main()
{
  int m,n,i,a[M];
  printf("please input 'm' and 'n':");
  scanf("%d%d",&m,&n);
  for(i=0;i<m+n;i++)
      if(i<m)a[i]=2*i+1;
        else if(i==m) a[i]=2;
             else a[i]=a[i-1]+2;
  for(i=0;i<m+n;i++)
  printf("%3d",a[i]);
  move(a,m,n);
  printf("\n*******************************************************\n");
  for(i=0;i<m+n;i++)
  printf("%3d",a[i]);
2008-02-16 16:54
aprogram
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-2-15
得分:0 
贴上我的代码
我将LZ的问题修改了一下
1.将整数变成了字符
2.最后有几个字符也由用户自己决定输入
感觉这样才像一个函数,否则定死了就没什么用了

#include <stdio.h>
#include<string.h>

void testfunc(char *a, int step);

int main(void)
{
    char a[] = "abcdefghijkl";
    int i;

    printf("please input a num:");
    scanf("%d", &i);

    testfunc(a, i);
    printf("%s", a);
}

void testfunc(char *a, int step)
{
    int len;
    char temp1, temp2;
    int i = 0, j;

    len = strlen(a);
    if (step > len || step < 0)
    {
        printf("please input a right num"); /* 实际工程中这里应该返回一个错误类型由main函数处理 */
        return;
    }

    if (0 == len % step)
    {
        while (i < step)
        {
            j = i;
            temp1 = a[i];
            while (j< len)
            {
                temp2 = a[(j + step) % len];
                a[(j + step) % len] = temp1;
                temp1 = temp2;
                j += step;
            }
            i++;
        }
    }
    else
    {
        temp1 = a[0];
        while (i % len != 0 || i == 0)
        {
            temp2 = a[(i + step) % len];
            a[(i + step) % len] = temp1;
            temp1 = temp2;
            i += step;
        }
    }
}

学C语言多年,如今才知道一事无成
2008-02-16 17:37
飞影王子
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-3-30
得分:0 
这是我写的,
这是我花半天时间给写的,很简单,高手指点一下吧;
#include "stdio.h"
void print(int *);
 main()
 {
   int aa[20]={8,6,4,10,12,20,1,3,5,7,13,17},cc[20]={0};
   int i,j,*p1,*p2;
   p1=aa;
   p2=aa;
   
   if(aa[0]%2)//如果数组是以奇数开头
     {
       for(i=0;aa[i]%2&&aa[i];i++)
           p1++;
     
      for(i=0;*p1;p1++,i++)//偶数数据移入CC数组中
          cc[i]=*p1;
           
      for(;*p2%2;p2++)
       cc[i++]=*p2;
        print(cc);      
      }
   else
   {
     for(i=0;aa[i]%2==0&&aa[i];i++)
         p1++;
          for(i=0;*p1;p1++,i++)//奇数数据移入CC数组中
          cc[i]=*p1;
           
      for(;*p2%2==0;p2++)//偶数数据移入CC数组中
         cc[i++]=*p2;
      
        print(cc);//输出子函数      
            
   }
   
  
     
 }

void print(int *array)
  {
    int i=0;
   
    for(;*array;array++)
       printf("%d ",*array);
   getch();               
   }
2008-02-19 18:19
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
#include <stdio.h>

int main(void)
{
    int i, temp;
    int ar[15]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10};
   
    while(ar[0] % 2 != 0)
    {
        temp = ar[0];
        for(i = 1; i < 15; i++)
        {
            ar[i - 1] = ar[i];
        }
        ar[14] = temp;   /* 14 即数组的最后元素 */
    }

    for(i = 0; i < 15; i++)   /* 显示数组内容 */
        printf("%d ", ar[i]);

    getchar();
    return 0;
}
收到的鲜花
  • xianshizhe1112008-02-20 12:33 送鲜花  5朵   附言:我很赞同

—>〉Sun〈<—
2008-02-19 18:44



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




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

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