1019. 数字黑洞 ( )

来源:互联网 发布:淘宝网外国小女孩模特 编辑:程序博客网 时间:2024/06/04 19:55

1.输出的简洁;

2.while的判断不要直接使用num,而是再使用一个变量temp来进行是否到6174的判断。

#include<stdio.h>#include<stdlib.h>    void haveMax(int *number){        int i ;        int j ;        for(i = 0 ; i < 4 ; ++i){            int temp = 0 ;            for(j = i ; j < 4 ; ++j){                if(number[j] > number[i]){                    temp = number[i] ;                    number[i] = number[j] ;                    number[j] = temp ;                }            }        }    }    void haveMin(int *number){        int i ;        int j ;        for(i = 0 ; i < 4 ; ++i){            int temp = 0 ;            for(j = i ; j < 4 ; ++j){                if(number[j] < number[i]){                    temp = number[i] ;                    number[i] = number[j] ;                    number[j] = temp ;                }            }        }    }int main(){        int i ,a,b;        int num ;        int numbers1[4];        int numbers2[4];        scanf("%d",&num);        int temp = -1;        while(temp != 6174 && num != 0){            a = b = 0 ;            for(i = 3 ; i >= 0 ; --i){                numbers1[i] = num % 10 ;                num = num / 10 ;            }            for(i = 0 ; i < 4 ; ++i){                numbers2[i] = numbers1[i];            }            haveMax(numbers1);            haveMin(numbers2);            for(i = 3 ; i >= 0 ; --i){                a = 10 * a + numbers1[i];                b = 10 * b + numbers2[i] ;            }            num= b - a ;            temp = num ;                        printf("%04d - %04d = %04d\n",b , a , num);        }        return 0 ;}