题目意思很清楚,,理解也很清晰。就是被数据范围坑了,一种OLE,后来改的代码过了面目全非,勿喷
#include"stdio.h" #include"string.h" #include"stdlib.h" #define MAX_LEN 10 int com(const void * a,const void * b) { return (int)(*((char *)a) - *((char *)b)); } int com1(const void * a,const void * b) { return (int)(*((char *)b) - *((char *)a)); } int main(void) { char num[MAX_LEN],t[MAX_LEN]; int times,n,f,x; while((scanf("%d",&x)) == 1 && x != -1) { times = 0; printf("N=%d:\n",x); sprintf(num,"%d",x); if((num[0] == num[1] && num[2] == num[3] && num[0] == num[2]) || x > 10000 || x < 1000 ) { printf("No!!\n"); continue; } while(strcmp("0",num) != 0 && strcmp("6174",num) != 0) { strcpy(t,num); qsort(t,strlen(t),sizeof(char),com1); sscanf(t,"%d",&n); qsort(t,strlen(t),sizeof(char),com); sscanf(t,"%d",&f); sprintf(num,"%d",n - f); times ++; printf("%d-%d=%d\n",n,f,n - f); } printf("Ok!! %d times\n",times); } return 0; }