天很蓝~ 2022-03-10 17:18 采纳率: 60%
浏览 37
已结题

十进制数m转化为任意进制数n,并将结果按位存入数组,使用数组进行输出

代码不采用数组可以得到正确结果,但采用数组不知道哪里表达不对,便会报错。请各位指正!
(每位的结果要依次存入数组,可以反序存,只需输出时结果为正序即可)

#include<stdio.h>
#include<math.h>

#define MAX 100
int main(){

/

    int a,n,base,i,j,num;
    int A[MAX];
    i = 0;
    base =1;
    A[0] = 0;
    printf("请输入待转换的十进制数:\n");
    scanf("%d",&a);
    printf("请输入要转换进制数:\n");
    scanf("%d",&n);

    while (a>0){
        A[i]= A[i] + base*(a%n);
        base = base*10;
        a = a/n;
        num = ++i;
    }
    
//   这样运行可以得到正确结果,但结果会只存在A[0]里,并非按位存储于数组中
//       while (a>0){
//        A[i]= A[i] + base*(a%n);
//        base = base*10;
//        a = a/n;
//    }
    
    
    for(j=num;j>=0;j--){
        printf("%d",A[j]);
    }
}


  • 写回答

2条回答 默认 最新

  • fuill 2022-03-10 19:05
    关注
    #include<stdio.h>
    #include<math.h>
     
    #define MAX 100
    int main(){
     
     
        int a,n,base,i,j,num=0;
        int A[MAX]={
            0
        };
        i = 0;
        base =1;
        A[0] = 0;
        printf("请输入待转换的十进制数:\n");
        scanf("%d",&a);
        printf("请输入要转换进制数:\n");
        scanf("%d",&n);
     
        while (a>0){
            A[i]= A[i] +(a%n);
            //base = base*10;
            a =a/n;
            num = ++i;
        }
        
    //   这样运行可以得到正确结果,但结果会只存在A[0]里,并非按位存储于数组中
    //       while (a>0){
    //        A[i]= A[i] + base*(a%n);
    //        base = base*10;
    //        a = a/n;
    //    }
        
        
        for(j=num-1;j>=0;j--){
            printf("%d",A[j]);
        }
    }
     
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日