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