PAT 1019. 数字黑洞

#include <stdio.h>                                                             
void sortNum(int* a, int* b, int* c, int* d);                                  
int main() {                                                                   
int N, a, b, c, d, max, min, num;                                                                                                                 
scanf("%d", &N);                                                                                                                        
while(1) {   
a = N / 1000;                                                              
b = N % 1000 / 100;                                                        
c = N % 100 / 10;                                                          
d = N % 10;                                                                  
if(a == b && b == c && c == d) {                                             
printf("%d%d%d%d - %d%d%d%d = 0000\n", a, a, a, a, a, a, a, a);                 
break;                                                                      
}                                                                            
sortNum(&a, &b, &c, &d);                                                     
max = 1000 * a + 100 * b + 10 * c + d;                                       
min = 1000 * d + 100 * c + 10 * b + a;                                       
num = max - min;                                                             
printf("%d%d%d%d - %d%d%d%d = ", a, b, c, d, d, c, b, a);                        
printf("%d%d%d%d\n", num/1000, num%1000/100, num%100/10, num%10);            
if(num == 6174) {                                                            
break;                                                                      

N = num;                                                               
}                                                                             
return 0;                                                                     
}                                                                              
void sortNum(int* a, int* b, int* c, int* d) {                                 
int num[4] = {                                                                
*a, *b, *c, *d                                                               
};                                                                            
int i, j, t;                                                                  
for(i = 2; i >= 0; i --) {                                                    
for(j = 0; j <= i; j ++) {                                                   
if(num[j] < num[j + 1]) {                                                   
t = num[j];                                                                
num[j] = num[j + 1];                                                       
num[j + 1] = t;                                                            
}                                                                           
}                                                                            
}                                                                             
*a = num[0];                                                                  
*b = num[1];                                                                  
*c = num[2];                                                                  
*d = num[3];                                                                  
}                                                                              
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值