十进制到任何基数<17 calulator c ++

 早安丶晚安丶英语连_691 发布于 2023-02-13 12:49

我的任务是将十进制数转换为基数p.p由用户输入.到目前为止这是我的代码:

for(int i = 0; i < 100; i++)
{
    if(a % p == 0)  nn[i] = '0';
    if(a % p == 1)  nn[i] = '1';
    if(a % p == 2)  nn[i] = '2';
    if(a % p == 3)  nn[i] = '3';
    if(a % p == 4)  nn[i] = '4';
    if(a % p == 5)  nn[i] = '5';
    if(a % p == 6)  nn[i] = '6';
    if(a % p == 7)  nn[i] = '7';
    if(a % p == 8)  nn[i] = '8';
    if(a % p == 9)  nn[i] = '9';
    if(a % p == 10) nn[i] = 'A';
    if(a % p == 11) nn[i] = 'B';
    if(a % p == 12) nn[i] = 'C';
    if(a % p == 13) nn[i] = 'D';
    if(a % p == 14) nn[i] = 'E';
    if(a % p == 15) nn[i] = 'F';

    a = a / p;
    if(a == 0) break;
}


for(int qq = strlen(nn) - 1; qq >= 0; qq--)
    cout << nn[qq];

其中a是十进制数,char nn是输出的保存位置.我有这个问题:程序随机输出3个符号和正确的答案.为什么会发生这种情况,我该如何解决?

1 个回答
  • 问题是你的nn字符串仍然没有终止.nn[i+1]='\0'break此之前设置将解决此问题:

    if(a==0) {
        nn[i+1] = '\0';
        break;
    }
    

    请注意,您的程序相当不理想:if您可以使用字符串文字和索引,而不是设置大型的s 链,如下所示:

    char *digits = "0123456789ABCDEF";
    for(int i=0;i<100;i++) {
        nn[i]=digits[a%p];
        a=a/p;
        if(a==0) {
            nn[i+1] = '\0';
            break;
        }
    }
    

    2023-02-13 12:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有