我的任务是编写一个用于反转二进制数字的程序。例如,13的二进制表示为1101,反转它给出1011,对应于数字11.其中输入包含一个整数为N的行,1≤N≤1000000000。
我必须通过8次测试,到目前为止我只通过了4/8。输入可以是13,其中预期为11。
13
11
澄清我没有得到测试的结果,只得到它们的结果。
有关如何更新代码的任何想法?
public class Reversebinary
{
public static void Main()
{
//Convert Decimal to binary
int num;
string binary, reversed;
//Read integer value from console
num = int.Parse(Console.ReadLine());
//Console.WriteLine(num);
if (num > 1 && num < 1000000000)
{
//Convert the integer value to string binary
binary = Convert.ToString(num, 2);
//reverse string binary
reversed = reverseString(binary);
//Console.WriteLine("binary: " + binary);
//Convert reversed string binary to int32 and print out
Console.WriteLine(Convert.ToInt32(reversed, 2));
}
else
Console.WriteLine("Number is not between 1 or 1000000000");
}
static string reverseString(string str)
{
return new string(str.Reverse().ToArray());
}
}
EDIT1:澄清测试。
EDIT2:请理解我只是希望你对代码有意见,所以我可以改用它来完成测试。我不是要求你提供代码。
EDIT3:问题解决了,我在包含更大/更小或等于运算符后通过了测试。感谢您的所有投入。
答案 0 :(得分:0)
至少,数字在1≤N≤1000000000,你不考虑1和1000000000。
Promise
此外,您可以使用if (num >= 1 && num <= 1000000000)
{
//Convert the integer value to string binary
binary = Convert.ToString(num, 2);
//reverse string binary
reversed = reverseString(binary);
//Console.WriteLine("binary: " + binary);
//Convert reversed string binary to int32 and print out
Console.WriteLine(Convert.ToInt32(reversed, 2));
}
代替int.TryParse
来避免例外。
因此,您的int.Parse
条件应如下所示
if
答案 1 :(得分:0)
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Reversebinary
{
class Reversebinary
{
static byte[] reverseBinary = new byte[] {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 };
static void Main(string[] args)
{
//Convert Decimal to binary
int num;
int reversed;
//Read integer value from console
num = int.Parse(Console.ReadLine());
if (num >= 0 && num <= 15)
{
//reverse string binary
reversed = reverseBinary[num];
Console.WriteLine(reversed.ToString("x2"));
}
else
Console.WriteLine("Number is not between 0 and 15");
}
}
}