gpt4 book ai didi

c# - 简单乘法

转载 作者:行者123 更新时间:2023-11-30 13:50:44 24 4
gpt4 key购买 nike

让我们进入正题。我编写了以下代码来将两个数字相乘,它正在“吃掉”我的零!对于不涉及乘积 (p) 等于零的情况,它似乎工作得很好。在示例情况下,它只是打印“5”而不是所需的“500”。如果有人愿意解释发生了什么,我将非常感激。 :)

using System;
class Program
{
static void Main()
{
Console.WriteLine(smallNumBigNumProduct("5", "100"));
}

static string smallNumBigNumProduct(string s, string b)
{
int l = s.Length;
int f = int.Parse(s); // factor
int c = 0; // carry
string r = ""; // result
int p; // product

while(l-- > 0)
{
p = (Convert.ToInt32(b[l]) - 48) * f;
p += c;

if (p > 9)
{
r = Convert.ToString(p % 10) + r;
c = p / 10;
}

else
r = Convert.ToString(p) + r;
}

if (c > 0)
{
r = Convert.ToString(c) + r;
}

return r;
}
}

最佳答案

这是你的问题:

int l = s.Length;

...

while(l-- > 0)

您将 l 变量设置为 short 字符串的长度,然后在 while 循环中预先递减它。

简而言之,您的循环并没有按照您认为的那样执行。 l 变量不应该设置为 b 字符串的长度吗?

无论如何,这看起来是一种耗时且容易出错的方法。为什么不简单地将输入字符串转换为整数并直接返回产品?

关于c# - 简单乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691805/

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