neuq 1105 坑爹的进制转换

题目描述:
以前我们做的进制转换大家都忽略了一点,就是进制一定是正整数;今天这道进制转换就坑爹的选择了,额,负整数来做进制。

输入:
输入由若干行组成,每行有两个整数n(-32765<=n<=32767)和R(-16<=R<=-2)。输入的最后一行只有一个‘#’号,表示输入结束。

输出:
对于每个输入行,输出n的R进制形式。出现的字母请用大写字母表示!

样例输入
30000 -2
-20000 -2
28800 -16
-25000 -16
#
样例输出
11011010101110000
1111011000100000
19180
7FB8

分析:对于负进制的转化和正进制规范基本相同,但是考虑到进制转化过程中的余数应该始终为整数,所以对于计算机中除以负数结果商或者余数为负的情况要格外处理。
验算得到,如果计算结果余数为负数,那么应该将负数加上进制的绝对值,商加1,这样就保证了进制转化后的数位都是正整数或者0.
注意到余数大于等于10之后用A、B、C…等字母表示。
注意到字符串结尾要以 ‘\0’结尾。
既可以用转置函数处理最后的字符串,也可以直接倒置输出。
main函数返回值一定是0!否则显示运行过程出错


#include"stdio.h"
#include"string.h"
#include"math.h"

void function(int n,int R);
//void reverse( char *s);
int R;
int n;
char a[10024];
int main()
{
    int i;
    while(scanf("%d%d",&n,&R))
    {   
        //memset(a,0,sizeof(a)) ;
        function(n,R);
        for(i = strlen(a)-1; i>=0; i--)
        {
            printf("%c",a[i]);
        }
        //reverse(a);
        //puts(a);
        printf("\n");


    }
    return 0;

}
/*void reverse( char *s)
{
    int len = strlen(s);
    for(int i = 0,j = len-1; i < j; i++, j--){
        char temp;
        temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }
}*/
void function(int n,int R)
{
    int yushu;
    int i = 0;
    if(n == 0)
      a[i++] = '0';
    while(n != 0)
    {
        yushu = n%R;
        n = n/R;

        if(yushu >= 0)
        {
            a[i] = yushu;
        }
        else 
        {
            a[i] = yushu +abs(R);

            n++;
        }
        if(a[i] >= 10)
        {
            a[i] = (a[i] - 10) +'A';
        }
        else
        {
            a[i] = a[i] +'0';
        }

        i++;
    }
    a[i] = '\0';

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[入门数据分析的第一堂课]这是一门为数据分析小白量身打造的课程,你从网络或者公众号收集到很多关于数据分析的知识,但是它们零散不成体系,所以第一堂课首要目标是为你介绍:Ø  什么是数据分析-知其然才知其所以然Ø  为什么要学数据分析-有目标才有动力Ø  数据分析的学习路线-有方向走得更快Ø  数据分析的模型-分析之道,快速形成分析思路Ø  应用案例及场景-分析之术,掌握分析方法[哪些同学适合学习这门课程]想要转行做数据分析师的,零基础亦可工作中需要数据分析技能的,例如运营、产品等对数据分析感兴趣,想要更多了解的[你的收获]n  会为你介绍数据分析的基本情况,为你展现数据分析的全貌。让你清楚知道自己该如何在数据分析地图上行走n  会为你介绍数据分析的分析方法和模型。这部分是讲数据分析的道,只有学会底层逻辑,能够在面对问题时有自己的想法,才能够下一步采取行动n  会为你介绍数据分析的数据处理和常用分析方法。这篇是讲数据分析的术,先有道,后而用术来实现你的想法,得出最终的结论。n  会为你介绍数据分析的应用。学到这里,你对数据分析已经有了初步的认识,并通过一些案例为你展现真实的应用。[专享增值服务]1:一对一答疑         关于课程问题可以通过微信直接询问老师,获得老师的一对一答疑2:转行问题解答         在转行的过程中的相关问题都可以询问老师,可获得一对一咨询机会3:打包资料分享         15本数据分析相关的电子书,一次获得终身学习

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值