代码如下,大家指点一下
- #include <stdio.h>
- int main(int argc, const char * argv[]){
- int i,num,R,flag;
- char bitnum[100];
- printf("请输入一个十进制整数:\n");
- scanf("%d",&num);
- printf("请输入要转换的进制数(2-16之间):\n");
- scanf("%d",&R);
- //判断进制范围
- if(R<2||R>16){
- printf("输入数据错误");
- }else {
- //计算需要转换的进制数,先判断num的正负。
- if (num>0) {
- for (i=0;num!=0;i++){
- if (num % R >= 10) {
- bitnum[i]= 'A' + (num % R - 10);
- } else {
- bitnum[i]=num % R + '0';
- }
- num = num / R;
- }
-
-
- }else if (num<0){
- flag=1;
- num=-num;
- for ( i=0; num!=0; i++) {
- if (num % R >= 10) {
- bitnum[i]= 'A' + (num % R - 10);
- } else {
- bitnum[i]=num % R + '0';
- }
- num = num / R;
-
- }
- }
- }
- //逆向输出
- printf("转化进制后为:");
- if (flag==1) {
- printf("-") ;
- }
- while(i--){
-
- printf("%c",bitnum[i]);
- }
- return 0;
-
-
- }
复制代码 |
|