标题:设计一个十进制转化为随意进制的程序。
只看楼主
罗少腾
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-11-15
结帖率:0
已结贴  问题点数:20 回复次数:3 
设计一个十进制转化为随意进制的程序。
编写一个能够 实现将一个十进制整数转化为制定进制的数;函数头为 void transform (int dec,int x)    (dec是输入的十进制数,x 是目标进制).....有没有大神能用递归方法和不用递归方法写出来啊。......求帮助。
搜索更多相关主题的帖子: 设计 十进制 进制 转化 int 
2017-11-15 09:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
你先说说十进制的 999999 转成 -1进制是什么,转成0进制是什么,转成2进制是什么,转成100进制是什么?

进制转化本身很简单,比如10进制就是逢10进1,n进制就是逢n进1,也就是不停的除以n,记录其商和余数
2017-11-15 09:38
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
得分:10 
想作100进制还得找个99用什么符号表示呢,题主可以尝试做个35进制以内的(●—●)
2017-11-16 07:30
nmdpkvs
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-12-7
得分:0 
==用堆栈可以吗==
#include<stdio.h>
#include<stdlib.h>
#define SIZE 20
#define MORE 10
typedef struct{
int *base;
int top;
int stacksize;
}SqStack;

void InitStack(SqStack &S)//构造一个空栈
{
 
S.base=(int *)malloc(SIZE*sizeof(int));
if(!S.base) return ;
S.top=0;
S.stacksize=SIZE;
}
int StackEmpty(SqStack &S)//判空 是返回1 否返回0
{

if(S.top==0) return 1;
else return 0;
}
void Push(SqStack &S,int e)//入栈
{

if(S.top>=S.stacksize)
{
S.base=(int *)realloc(S.base,(S.stacksize+MORE)*sizeof(int));
if(!S.base) exit(0);
S.stacksize+=MORE;
}
S.base[S.top++]=e;
}
void Pop(SqStack &S,int &e)//出栈
{

if(S.top==0) exit(0);
else
e=S.base[--S.top];
}
void GetTop(SqStack &S,int &e)//取栈顶元素
{

if(S.top==0)  exit(0);
else
e=S.base[S.top-1];
}
void Res(SqStack &S,int n,int d)//将10进制数n转换为d进制
{

InitStack(S);
while(n)
{
Push(S,n%d);
n=n/d;
}
}

int main()

{
    while (1)
    {
        int n, d, e;
        SqStack S;
        printf("******************************\n");
        printf("*    输入要转换的10进制数:  *\n");
        printf("******************************\n");
        scanf("%d", &n);
        printf("******************************\n");
        printf("*      请输入转换进制:      *\n");
        printf("******************************\n");
        printf("*  请选择一个你要转换的进制  *\n");
        printf("*         2-任意进制         *\n");
        printf("******************************\n");
        scanf("%d", &d);
        Res(S, n, d);
        printf("******************************\n");
        printf("*         输出结果:         *\n");
        printf("******************************\n");
        while (!StackEmpty(S))
        {
            Pop(S, e);
            printf("%d", e);
        }
        printf("\n");
        printf("******************************\n");
        printf("******************************\n");
        system("pause");
        printf("******************************\n");
    }
}
2017-12-07 20:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482509-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016746 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved