【发布时间】:2021-07-07 00:38:36
【问题描述】:
我认为我的 vs 代码中存在一些问题即使编写了正确的代码,它也会在我编写的几乎每一秒代码中给我错误的结果,但我对这个编码东西还是陌生的,我得到不确定的结果请各位帮我解决这个问题,请检查在你的机器上运行这段代码......
#include <iostream>
using namespace std;
int main()
{
char a[30];
cout << "enter the hexadecimal";
cin >> a;
int i = 0, c, digit, decimal = 0, p = 1;
while (a[i] != '\0') {
i++;
}
for (int j = i; j >= 0; j--) {
c = a[j];
if (c >= 48 && c <= 57) {
digit = c - 48;
}
else if (c >= 97 && c <= 112) {
digit = c - 87;
}
decimal += digit * p;
p *= 8;
}
cout << "\ndecimal is " << decimal;
return 0;
}
在输入十六进制时请只输入小字母,我没有考虑大写字母
要检查十六进制到十进制,请使用此站点https://www.rapidtables.com/convert/number/hex-to-decimal.html?x=146
【问题讨论】:
-
那么,在使用调试器逐行单步执行代码时,您观察到了什么?所有变量都按照您的预期变化吗?
-
失败的输入是什么?失败时的输出是什么?考虑使用
'0'、'9'、'a'、'z'等字符文字,以使您的代码更易于阅读,因为意图更清晰。 -
兄弟,我不知道该怎么做,但是在值发生变化的每个语句之后,我为该变量编写了一个 cout,每件事似乎都很完美,但最终结果出错了...
-
退休的忍者输入 1a5 它应该给 421 但它给出了一些非常错误的东西
-
我已将字符串转换为 ascii 代码并从那里使用整数值,因为 0-9 char 将给出 48-57 的 ascii 代码,所以我从结果中减去 48 以获得所需的数字
标签: c++ c++11 visual-c++ c++14 number-systems