所以我有一个帮助。它是这样的。这有点复杂。
程序从用户读取3个数字。
如果这些数字中的任何一个都不能用3或者这些数字中的一个可以用3分割,则3个输入的数字保持不变。(例1)
如果这些数字中的两个可以分割为3,那么程序将获得具有较高值的数字,并为其添加+1。(情况2)。但如果这两个数字相等,那么第二个数字就会增加+1。(案例3)
如果所有数字都可以分为3,则第二个输入数字变为+1,第三个输入数字加上+2。(情况4):
案例1:输入:7 9 7 输出:7 7 7
案例2:输入:9 -5 6 输出:10 -5 6 案例3:输入:9 4 9 输出:9 4 10
案例4:输入:9 -6 6 输出:9 -5 8
这就是我所拥有的,但它不起作用。
class Program
{
static void Main(string[] args)
{
int a, b, c;
Console.WriteLine("Vnesite prvo stevilo: ");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vnesite drugo stevilo: ");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Vnesite tretje stevilo: ");
c = Convert.ToInt32(Console.ReadLine());
if (a % 3 != 0 && b % 3 != 0 && c % 3 != 0)
{
Console.WriteLine(" " + a + " " + b + " " + c);
Console.ReadKey();
}
else if (a % 3 == 0 && b % 3 != 0 && c % 3 != 0 || a % 3 != 0 && b % 3 == 0 && c % 3 != 0 || a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
{
Console.WriteLine(" " + a + " " + b + " " + c);
Console.ReadKey();
}
else if (a % 3 == 0 && b % 3 == 0 && c % 3 != 0 || a % 3 == 0 && b % 3 != 0 && c % 3 == 0 || a % 3 != 0 && b % 3 == 0 && c % 3 == 0)
{
if (a > b)
{
a = a + 1;
}
else if (b > a)
{
b = b + 1;
}
else if (b == a) ;
{
b = b + 1;
}
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.ReadKey();
}
else if (a % 3 == 0 && b % 3 == 0 && c % 3 == 0)
{
b = b + 1;
c = c + 1;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.ReadKey();
}
}
}
答案 0 :(得分:-1)
我将调试此代码的一部分,然后认为其他修复程序将以类似的方式完成。以上面代码的一部分为例来演示:
(a % 3 == 0 && b % 3 != 0 && c % 3 != 0 || a % 3 != 0 && b % 3 == 0 && c % 3 != 0 || a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
假设这正在检查三者中的一个是否可以被3整除,我可能会考虑以这种方式重写它:
((a % 3 == 0 && b % 3 != 0 && c % 3 != 0) || (a % 3 != 0 && b % 3 == 0 && c % 3 != 0) || (a % 3 != 0 && b % 3 != 0 && c % 3 == 0))
请注意,不仅添加了括号以便将事物组合在一起,而且最后一组3中包含&&
而不是||
。
放入括号的原因是您希望对事物进行一起评估。第一个代码行可能有一个问题,即如果a不能被3整除,则整个表达式被短路为假,因为假的AND将是假的,类似于乘以0将在常规数学中产生0。
这是我在你的逻辑中最初复制的一部分:
|| a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
我把它更改为:
|| (a % 3 != 0 && b % 3 != 0 && c % 3 == 0))
我用||
替换了几个&&
,因为这部分检查c可以被3整除,但a和b不是一个整体。