123456789,123456798,123456978,123459678.....912345678将9往前一位位的移动 算法怎么写 请教大神
------解决方案--------------------------------------------------------
我用数组做的。不知道是否满足你的要求。
#include<stdio.h>
main()
{
int num[]={1,2,3,4,5,6,7,8,9};
int i=8,j,t;
for(j=0;j<9;j++)
printf("%d",num[j]);
printf("\n");
while(i!=0)
{
t=num[i];
num[i]=num[i-1];
num[i-1]=t;
for(j=0;j<9;j++)
printf("%d",num[j]);
printf("\n");
i--;
}
}
------解决方案--------------------------------------------------------
int i = 10;
while (k >= i)
{
//得到当前位数字
int p = k / (i / 10) % 10;
//前一位数字
int t = k / i % 10;
//k - 原来二个位置的值 + 位置换后的值
k = k - p * (i / 10) - t * i + p * i + t * (i / 10);
printf("%d\n",k);
i *= 10;
}
------解决方案--------------------------------------------------------
#include <stdio.h>
#include <math.h>
int main() {
int x = 123456789;
for(int i = 0, c= 0; i< 8; ++i, ++c){
x += 9*(c+1)*(int)pow(10,c);
printf("%d\n",x);
}
return 0;
}