c语言求自我拷贝数(一个自然数各个数字从大到小排列减去从小到大排列仍是他本身)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int i,a,b,c,d,t;
    int k,j,s;
    for(i=10;i<10000;i++)
    {
        if(i<100)
        {
         a=i/10;
         b=i%10;
         k=a*10+b;
         j=a+b*10;
         s=abs(k-j);
         if(s==i){printf("%d",s);
         break;}
        }
         if(i<1000&&i>=100)
            {a=i/100;
             b=i/10-a*10;
             c=i%10;
             if(a>b)
             {t=a;
              a=b;
              b=t;
             }
             if(a>c)
                {t=a;
                 a=c;
                 c=t;
                }
             if(b>c)
             {t=b;
              b=c;
              c=t;
             }
             k=a*100+b*10+c;
             j=c*100+b*10+a;
             s=abs(k-j);
             if(s==i){printf("%d",s);
             break;}
            }
          if(i>=1000)
            {a=i/1000;
             b=i/100-a*10;
             c=i/10-b*10-a*100;
             d=i%1000;
          if(a>b)
         {t=a;
       a=b;
       b=t;
         }
       if(a>c)
        {t=a;
      a=c;
      c=t;
        }
       if(a>d)
       {t=a;
     a=d;
     d=t;
       }
       if(b>c)
       {t=b;
     b=c;
     c=t;
       }
       if(b>d)
         {t=b;
    b=d;
    d=t;
      }
       if(c>d)
      {t=c;
    c=d;
    d=t;
      }
          k=a*1000+b*100+c*10+d;
          j=d*1000+c*100+d*10+a;
          s=abs(k-j);
             if(s==i){printf("%d",s);}
             break;}
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个使用c语言实现将三个数字从小到大排列的简单程序: ``` #include <stdio.h> int main() { int a, b, c, temp; printf("请输入三个数字:"); scanf("%d%d%d", &a, &b, &c); if (a > b) { temp = a; a = b; b = temp; } if (a > c) { temp = a; a = c; c = temp; } if (b > c) { temp = b; b = c; c = temp; } printf("从小到大排列为:%d %d %d\n", a, b, c); return 0; } ``` 上面的代码通过使用临时变量和if语句进行交换实现了从小到大排列。 ### 回答2: 以下是使用C语言编写的将三个数字从小到大排列的程序: ```c #include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void sort(int *arr) { if (arr[0] > arr[1]) swap(&arr[0], &arr[1]); if (arr[1] > arr[2]) { swap(&arr[1], &arr[2]); if (arr[0] > arr[1]) swap(&arr[0], &arr[1]); } } int main() { int arr[3]; printf("请输入三个数字:\n"); scanf("%d %d %d", &arr[0], &arr[1], &arr[2]); sort(arr); printf("从小到大排列为:\n"); printf("%d %d %d\n", arr[0], arr[1], arr[2]); return 0; } ``` 程序中使用了两个函数,`swap`函数用来交换两个数字的值,`sort`函数用来将数组中的数字从小到大排列。在`main`函数中,先获取用户输入的三个数字,然后调用`sort`函数对数组进行排序,最后将排序后的结果输出到屏幕上。 编译并运行该程序后,用户可以输入三个数字,程序将会按照从小到大的顺序输出这三个数字。例如,用户输入的数字为`3 1 2`,则程序输出`1 2 3`。 ### 回答3: 下面是一个使用C语言编写的程序,可以将输入的三个数字从小到大的顺序进行排列。 ```c #include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void sort(int *a, int *b, int *c) { if (*a > *b) { swap(a, b); } if (*b > *c) { swap(b, c); } if (*a > *b) { swap(a, b); } } int main() { int num1, num2, num3; printf("请输入三个数字:"); scanf("%d %d %d", &num1, &num2, &num3); sort(&num1, &num2, &num3); printf("从小到大排序后的结果为:%d %d %d\n", num1, num2, num3); return 0; } ``` 程序中的`sort`函数用于进行排序,使用了交换元素的辅助函数`swap`。在`main`函数中,首先要用户输入三个数字,然后将它们的地址传递给`sort`函数进行排序,最后输出排序后的结果。 程序的思想是通过两两比较和交换元素的方式,将最小的元素移到第一位,然后在剩余的两个元素中寻找较小的元素放在第二位,最后剩下最大的元素放在第三位。这样就能实现将三个数字从小到大排列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值