注册 登录
编程论坛 C++教室

关于一维数组的问题,将十进制数转化为任意进制的数

咚呱咚呱 发布于 2010-05-06 20:27, 764 次点击
小弟初学,遇到问题如下。
题目:将用户输入的十进制数转换成任意进制的数。
  (算法分析:进制之间转化采用辗转相除法。由用户输入十进制数(用n表示),以及要转化的进制(用变量base表示),然后将转换的结果存储在一维数组num【32】中。)
题中所给程序如下:
#include<stdio.h>
void main()
{
    int i=0,base,num[32];
    long int n;   char c;
    printf("Input number:");
    scanf("%ld",&n);
    printf("Input base:");
    /*请将此处代码补充完整*/
}



小弟编写程序如下:(和题目中所给出的程序段有所不同)
#include <stdio.h>
void main()
{
    int i=0,base,num[32],j;
    long int n;
    printf("Input number:");
    scanf("%ld",&n);
    printf("Input base:");
    scanf("%d",&base);
    for(;num[i]!=0;i++)
    {
        num[i]=n%base;
        n=n/base;
    }
    for(j=i-1;j>=0;j--)
        printf("%d",num[j]);
}
C语言不报错,但在运行时总出现错误,望各位能帮忙留神一下,帮小弟解决发现问题,解决这个问题。您的指点将帮助小弟在变成之路上越走越远!谢谢!!!

[ 本帖最后由 咚呱咚呱 于 2010-5-6 20:58 编辑 ]
2 回复
#2
guowei37582010-05-06 20:45
#include<stdio.h>
void main()
{
    int i=0,base,num[32],j;
    long int n;
    printf("Input number:");
    scanf("%ld",&n);
    printf("Input base:");
    scanf("%d",&base);
    do
    {
        num[i]=n%base;
        n=n/base;
        i++;
    }while(n!=0);
    for(j=i-1;j>=0;j--)
        printf("%d",num[j]);
}
这样就可以了,希望楼主满意
#3
咚呱咚呱2010-05-06 21:04
回复 2楼 guowei3758
我明白了!循环条件因该是n!=0,而不是num!=0。太感谢了!!!!!!!!!
1