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则会正常运行,为什么呢?


