C Primer Plus第九章的第九题(关于将任意整数变为任意进制下数值)
											以下是我的代码 程序代码:
程序代码:#include<stdio.h>
void to_base_n(unsigned long n,int p);
int main(void)
{
   unsigned long number;
   int base;
   
   printf("Enter an integer and the style you want to transform(q to quit):");
   while(scanf("%d,%d",&number,&base)==2)
   {
      printf("result equivalent:");
      to_base_n(number,base);
      putchar('\n');
      printf("Enter an integer and the style you want to transform(q to quit):");
   }
   printf("Done.\n");
   getchar();
   getchar();
   return 0;
}
void to_base_n(unsigned long n,int p)
{
   int r;
   
   r=n%p;
   if(n>=2)
      to_base_n(n/p,p);
   putchar('0'+r);
   
   return;
}
有一个小问题就是我的number定义的是unsigned long,但是在scanf()读入的时候如果写成scanf("%ul,%d",&number,&base)==2那么就会不进入循环直接打印Done结束程序。
如果写成scanf("%d,%d",&number,&base)==2则会正常运行,为什么呢?

 
											





 
	    