gpt4 book ai didi

c - 二进制到十进制转换 C 代码 - 满足特定测试用例的问题

转载 作者:行者123 更新时间:2023-11-30 21:16:49 25 4
gpt4 key购买 nike

将输入的二进制数转换为十进制数的C程序

对于输入 10001000、101100,输出分别为 136 和 44,该代码可以正常工作,但对于以下情况则失败

我的代码:

#include <stdio.h>
#include<math.h>

int main() {
int t,i,s,r;
int b;
scanf("%d",&t);
while(t--)
{
scanf("%d",&b);
i=0;
s=0;
while(b!=0)
{
r=b%10;
s=s+r*pow(2,i);
b=b/10;
i++;
}
printf("%d\n",s);
}
return 0;
}

第一个测试用例满足如下:
对于输入:
2
10001000
101100
您的输出是:
136
44
以下测试用例不满足,错误如下:
输出错误:
错误的答案。 !!!错误答案
您的代码可能无法在多个测试用例 (TC) 中正常工作。
您的代码失败的第一个测试用例:

输入:
11111111111

其正确输出是:
2047

您的代码的输出是:
-3809
有人可以建议我进行必要的更改吗?

最佳答案

您的代码还存在其他几个问题 - 您试图将字符串“11111111111”(11 次“1”)解释为整数。但是,您的机器上的整数类型使用 4 个字节,它可以表示的最大数字是 2^31 - 1。数字 11,111,111,111 高于 2^33。所以 - 你得到 signed integer overflow行为。

尝试将您的输入解析为字符串,而不是一个巨大的数字......

但是 - 下次请:

  1. 使用正确的缩进。
  2. 使用有意义的变量名称(例如 number_of_conversions,而不是 t)。
  3. 使用一个最小示例。例如,我们不需要在 t 上进行外部循环 - 您只需一次转换就可以演示您的问题。
  4. 检查图书馆调用的结果! scanf() 可能会失败,你知道。

关于c - 二进制到十进制转换 C 代码 - 满足特定测试用例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55847963/

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