user-0 提问: 关于整数分解打印以及整数千分位分解打印的问题

回复:
user: user-1
content: //以三位分组，你自己举一反三 int n=43546,m,k; while(n>0) { k=n;//暂存循环结束的原数 n=n/1000; m=k-n*1000;//每次的最低三位 }

user: user-2
content: 引用 6 楼 bupt2017211230 的回复:非常谢谢大家的回复，但其实我们考试时并不可以使用任何数组，子函数，递归等 只能用基础的迭代还有穷举算法。。。可能在我学了这些知识后就能更好的理解你们的程序了。 考试还能要求这些，那太死板了。解决问题，那种方法好就用那种方法呗。前提是自己能理解和运用

user: user-0
content: 非常谢谢大家的回复，但其实我们考试时并不可以使用任何数组，子函数，递归等 只能用基础的迭代还有穷举算法。。。可能在我学了这些知识后就能更好的理解你们的程序了。

user: user-3
content: 仅供参考：char * comma(__int64 num) {     static char commades[80];     static char commasrc[80];      sprintf(commasrc,"%I64d",num);     int L=strlen(commasrc);     register int j=0;     register int k=0;     for (int i=L-1;i>=0;i--) {         commades[j]=commasrc[i];         k++;         j++;         if ((k%3)==0 && i>0) {             commades[j]=',';             j++;         }     }     commades[j]=0;     strrev(commades);     return commades; }

user: user-2
content: #include <stdio.h> #include <math.h>  void show_digit(int num); void show_digit_as_bit(int num, int bit); int main(int argc, char** argv) { #if 1      int num;      while (scanf("%d", &num) > 0 && num > 0) {         show_digit(num);         printf("\n");         show_digit_as_bit(num, 3);         printf("\n");     }  #else     int i,longest,n,bn,t;     i,longest=0;     t=1;     scanf("%d",&bn);     n=bn;     while(n/10!=0)     {         n=n/10;         i++;     }     longest=i+1;     n=bn;     i=0;     while(n/10!=0)     {         while(i<longest-1)         {             n=n/10;             i++;             if(n/10==0)             {                 printf("%d ",n);             }         }         i=0;          while(i<longest-1)         {             t=10*t;             i=i+1;         }         longest=longest-1;         bn=bn%t;         n=bn;         i=0;         t=1;      }     printf("%d\n",n); #endif     return 0; }   void show_digit(int num) {     if (num > 0)         show_digit(num / 10);     if (num <= 0)         return;     printf("%d ", num % 10); }  void show_digit_as_bit(int num, int bit) {     printf("****%d\n", num);     int n = pow(10, bit);     if (num > 0)         show_digit_as_bit(num / n, bit);     if (num <= 0)         return;      printf("%d ", num % n); }  参考一下吧，其实用一个函数就可以实现你的两个功能；  void show_digit_as_bit(int num, int bit) {     printf("****%d\n", num);     int n = pow(10, bit);     if (num > 0)         show_digit_as_bit(num / n, bit);     if (num <= 0)         return;      printf("%d ", num % n); } 实现第一个功能，只需要调用函数是第二个参数传1，实现第二个功能传3；即  #include <stdio.h> #include <math.h>  void show_digit(int num); void show_digit_as_bit(int num, int bit); int main(int argc, char** argv) {     int num;      while (scanf("%d", &num) > 0 && num > 0) {         show_digit_as_bit(num, 1);         printf("\n");         show_digit_as_bit(num, 3);         printf("\n");     }     return 0; }   void show_digit(int num) {     if (num > 0)         show_digit(num / 10);     if (num <= 0)         return;     printf("%d ", num % 10); }  void show_digit_as_bit(int num, int bit) {     int n = pow(10, bit);     if (num > 0)         show_digit_as_bit(num / n, bit);     if (num <= 0)         return;      printf("%d ", num % n); } 参考一下吧，递归方法

user: user-4
content: 引用 1楼user-4 的回复:为什么提交不通过，时间太慢？没看怎么看你写的代码，1234567这个数，千分位分解，先%1000，得到567，再/1000得到1234，1234%1000，得到234，再/1000得到1，1%1000得到1，1/1000小于0退出循环。最后=0退出循环，打错了。

user: user-4
content: 为什么提交不通过，时间太慢？没看怎么看你写的代码，1234567这个数，千分位分解，先%1000，得到567，再/1000得到1234，1234%1000，得到234，再/1000得到1，1%1000得到1，1/1000小于0退出循环。

user: user-0
content: 引用 1 楼 user-4 的回复:为什么提交不通过，时间太慢？没看怎么看你写的代码，1234567这个数，千分位分解，先%1000，得到567，再/1000得到1234，1234%1000，得到234，再/1000得到1，1%1000得到1，1/1000小于0退出循环。 1.不是时间的问题 2.后来我又尝试了几个数例，发现数字中含有0就会使结果出现问题，我程序本身应该就某种情况没考虑到，或者根本有错误... 3.至于什么错误我还没来得及细看，要上课了先溜了，谢谢你啦