我正在为C ++类分配游戏牛和牛。我已经创建了将输入的整数存储到数组中的代码,但是我不知道如何存储前导零(这是分配中的测试用例)。在此作业中,我完全不能使用字符串。
例如,如果生成的代码为0242,并且用户输入0242 我得到的数组是{2,4,2}
如果允许我们使用字符串,这种分配将很容易,但是,我们不允许在字符串库中使用任何东西。
#include <iostream>
using namespace std;
int main() {
//Get a guess from the user and store it in an array
cout << "Enter a " << num_digits << " digit code: ";
cin >> int_guess;
int guess_digits[5];
int new_guess[5];
int i = 0;
while (int_guess > 0)
{
guess_digits[i] = int_guess % 10;
int_guess /= 10;
i++;
}
for (int j = i - 1; j >= 0; j--)
{
new_guess[j] = guess_digits[j];
cout << new_guess[j];
}
}
答案 0 :(得分:0)
用户键入字符,不是整数。
这就是为什么,这样的代码:
int int_guess;
cin >> int_guess;
通常,一旦用户键入非整数的内容,就会出现问题。
虽然您可能无法使用字符串库,但是您可以自己轻松地将字符转换为数字。通过使用以下公式将数字转换为整数:
char c;
cin >> c;
int x = c - '0';
结果是“ x”是键入的字符的数字值。
您的输入循环可能看起来像这样。
char c;
int guess_digits[5];
int index = 0;
while (index < num_digits)
{
std::cin >> c;
if (!std::cin)
{
break;
}
// convert character to integer manually
if ((c >= '0') && (c <= '9'))
{
guess_digits[index] = c - '0';
index++;
}
else
{
// invalid input - show an error
}
}
该代码示例可能正在向后写数字到guess_digits数组中,但是我将保留该错误作为练习供您解决。