Sj中国智造 发表于 2017-10-31 19:48:53

一列数移位问题

#include <stdio.h>
#include <math.h>
int move(int value, int n)
{
    int length = 0;
    int cvalue = value;//储存value的副本。
    int a,b;
    if ( n == 0)return value;
    while (cvalue/10 != 0)
    {
      cvalue/= 10;
      length ++;
    }
    if ( n > 0){
      for(int n1 = n;n1 > 0;n1--){
            a = value%10;
            value =a*pow(10,length)+value/10;
      }
    }//在右移时先将最后那个数取掉,后加到其余数的最前面
        else
        {
                for(int n1 = n;n1 < 0;n1++){
                        b = value/pow(10,length);
                        value =(value-b*pow(10,length))*10+b;
                }
        }
    return value;
}

int main()
{
    int value,n;
    scanf("%d %d",&value,&n);
    printf("%d",move(value,n));

    return 0;
}

右移操作有问题,但不知道哪里错

BngThea 发表于 2017-10-31 21:41:57

然而我运行你的程序,并没有问题:
54321 -3
21543

54321 3
32154

Sj中国智造 发表于 2017-11-1 07:49:36

BngThea 发表于 2017-10-31 21:41
然而我运行你的程序,并没有问题:

我用vc也没问题,可用codeblocks就有问题了,求解

BngThea 发表于 2017-11-1 07:54:44

Sj中国智造 发表于 2017-11-1 07:49
我用vc也没问题,可用codeblocks就有问题了,求解

具体什么问题,给出问题提示

Sj中国智造 发表于 2017-11-1 08:05:58

BngThea 发表于 2017-11-1 07:54
具体什么问题,给出问题提示

就是我用codeblocks时右移后并不是我要的结果

hacker.jin 发表于 2017-11-2 00:56:33

本帖最后由 hacker.jin 于 2017-11-2 00:58 编辑

字符串超级精简版,请笑纳          ,            Code::Blocks+GCC


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

void move(char value[], int m)
{
    int len = strlen(value);
    for(int i = 0; i<len; i++)
      printf("%c",value[(len+i+m)%len]);
}

int main()
{
    char value = "";
    int m;
    scanf("%s %d",&value,&m);
    move(value,m);
    return 0;
}
页: [1]
查看完整版本: 一列数移位问题