| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 540 人关注过本帖
标题:十进制数转化问题
只看楼主 加入收藏
勇敢向前冲
Rank: 2
等 级:论坛游民
帖 子:13
专家分:10
注 册:2009-11-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
十进制数转化问题
#include<stdio.h>
#include<malloc.h>

char *a;
int strlen(a);


char* conversion(int n,int d)
{
    char *s1;
    if(n>0)
    {
        if(n/d==0)
        printf("%d",n%d);
        else
        {
            s1=conversion(n/d,d);
            printf("%d",n%d);
        }
    }
    else if(n==0)
        printf("%d",n);
    else if(n<0)
    {
        n=-n;
        s1=conversion(n/d,d);
        printf("%d",~(n%d));
    }
    return s1;
   
}


void main()
{
    int n,d;
    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;n&ordm;&Iacute;d&micro;&Auml;&Ouml;&micro;&pound;&ordm;");
    printf("\n");
    scanf("%d,%d",&n,&d);
    conversion(n,d);
    printf("\n");
}

当n<0时,输出结果不对,请大家帮着改一下
小弟菜鸟,在这多谢了
搜索更多相关主题的帖子: 十进制 
2009-11-19 15:39
xiefeng122
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:126
专家分:139
注 册:2009-4-1
收藏
得分:5 
不是很清楚LZ的意思,如果纯粹只是求负数的表示,只需要在数位前加个1就是了
还有LZ的程序难道能通过编译?
还有不清楚
char *a;
int strlen(a);这几句是干什么
conversion 为什么要带个char *的返回值
2009-11-19 16:19
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:15 
程序代码:
#include<stdio.h>
#include<malloc.h>

char *a;
int strlen(a);


char* conversion(int n,int d)
{
    char *s1;
    if(n>0)
    {
        if(n/d==0)
        printf("%d",n%d);
        else
        {
            s1=conversion(n/d,d);
            printf("%d",n%d);
        }
    }
    else if(n==0)
        printf("%d",n);
    return s1;
    
}
void main()
{
    int n,d;
    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;n&ordm;&Iacute;d&micro;&Auml;&Ouml;&micro;&pound;&ordm;");
    printf("\n");
    scanf("%d%d",&n,&d);
    if(n<0)
        printf("-"),n=-n;   //  可以直接在这里或子函数先进行判断,先输出一个负号
    conversion(n,d);
    printf("\n");
}
LZ的代码有一个不好的地方就是如果进制数超过10的话,表示就错了···
下面是我以前写的一个类似的代码,LZ可以看一下····
程序代码:
#include<stdio.h>
int main(void)
{ 
  void jinzhi(int ,int ); //声明要调用的进制转换的函数
  int n,r;
  while(scanf("%d%d",&n,&r) == 2)
  {
      if(n<0)      //如果n是负数,则先输出一个负号并另其等于其相反数
       printf("-"),n=-n;
      jinzhi(n,r);   //调用进制转换函数
      printf("\n");
    }
  return 0;
}
void jinzhi(int n,int r)   //定义一个用来转换十进制为其它进制的函数
{
    if(n)      //用递归实现不断相除、取模、输出
        jinzhi(n/r,r),printf("%c",n%r>9?n%r-10+'A':n%r+'0');
}
如果对任意进制的转换有兴趣的话,可以看下这个贴···

https://bbs.bccn.net/thread-291008-1-7.html
2009-11-19 16:34
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
我给LZ一个计算任意进制的程序,只不过不能计算负数,LZ有兴趣可以改一下。我用的是链栈做的。
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

typedef struct liststack
{
    int data;
    struct liststack *next;
}LS;

LS *top;

LS *push(LS *,int);
LS *pop(LS *,int *);



main()
{
    int a,b,c;
    top=NULL;
    printf("你想转化成几进制:");
    scanf("%d",&a);
    printf("你想转化的数是:");
    scanf("%d",&b);
    printf("%d转化成%d进制后的数是:",b,a);
    while(b>0)
    {
        top=push(top,b%a);
        b/=a;
    }
    while(top!=NULL)
    {
        top=pop(top,&c);
        if(a==16)
        {
            if(c>=10)
            {
                printf("%c",55+c);
            }
            else
            {
                printf("%d",c);
            }
        }
        else
        {
            printf("%d",c);
        }
    }
    printf("\n");
    system("pause");
}


LS *push(LS *top,int x)
{
    LS *p;
    p=(LS *)malloc(sizeof(LS));
    p->data=x;
    p->next=top;
    top=p;
    return top;
}

LS *pop(LS *top,int *x)
{
    LS *p;
    p=top;
    *x=top->data;
    top=top->next;
    free(p);
    return top;
}
2009-11-19 16:58
勇敢向前冲
Rank: 2
等 级:论坛游民
帖 子:13
专家分:10
注 册:2009-11-18
收藏
得分:0 
回复 3楼 lijm1989
,多谢
2009-11-19 17:17
勇敢向前冲
Rank: 2
等 级:论坛游民
帖 子:13
专家分:10
注 册:2009-11-18
收藏
得分:0 
回复 4楼 小J
呵呵,多谢了
2009-11-19 17:18
快速回复:十进制数转化问题
数据加载中...
 
   



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

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