一列数移位问题
#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;
}
右移操作有问题,但不知道哪里错 然而我运行你的程序,并没有问题:
54321 -3
21543
54321 3
32154 BngThea 发表于 2017-10-31 21:41
然而我运行你的程序,并没有问题:
我用vc也没问题,可用codeblocks就有问题了,求解 Sj中国智造 发表于 2017-11-1 07:49
我用vc也没问题,可用codeblocks就有问题了,求解
具体什么问题,给出问题提示 BngThea 发表于 2017-11-1 07:54
具体什么问题,给出问题提示
就是我用codeblocks时右移后并不是我要的结果
本帖最后由 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]