当前位置: 代码迷 >> C语言 >> 数目字排列
  详细解决方案

数目字排列

热度:9192   发布时间:2013-02-26 00:00:00.0
数字排列
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;
}
  相关解决方案