gpt4 book ai didi

c++ - 小数到任何基数 <17 计算器 c++

转载 作者:行者123 更新时间:2023-11-30 00:51:55 25 4
gpt4 key购买 nike

我的任务是将十进制数转换为以 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 个正确答案的符号。为什么会发生这种情况,我该如何解决?

最佳答案

问题是您的 nn 字符串仍未终止。在 break 之前设置 nn[i+1]='\0' 将解决此问题:

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

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

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;
}
}

关于c++ - 小数到任何基数 <17 计算器 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com