总和,数字不等于0,位数产品...在C#开关
问题描述:
我新的节目,尤其是当它涉及到C#,但今年我学习它,我知道我做的喜欢它,真的想要理解它。但是,我们的老师让我们自己学习。好的,没有问题,互联网是如此惊人。总和,数字不等于0,位数产品...在C#开关
所以我有这个练习功课:
====计算的数字不等于0的整数的位数总和,产品====
。事情是,我只知道如何做到这一点,如果它完美地工作,但她希望我们也可以用SWITCH做到这一点,这是我失去了,因为我不知道如何建立案例(这是很好的案件是0,但我怎么写数字或n!= 0的情况?!)
我真的需要一些帮助,并会赞赏sosososo给予任何帮助!另外,你能否提供一个解释?非常感谢! :d
int n, s = 0, p = 1, d = 0, digit;
Console.Write("Number n : ");
n = Convert.ToInt32(Console.ReadLine());
if (n == 0)
p = 0;
do
{
digit = n % 10;
s += digit;
if (digit != 0)
p *= digit;
d++;
n /= 10;
} while (n != 0);
Console.WriteLine("The sum of the digits is: {0} ", s);
Console.WriteLine("The product of the digits not equal to 0 is : {0} ", p);
Console.WriteLine("The number of the digits is: {0}", d);
Console.ReadKey();
答
不能打印每一个可能的组合开关/箱,但你可以在“0”之间至少相差和“不为0”:
switch(n)
{
case 0: // n == 0
p = 0;
break;
default: // this runs in any case but zero
do
{
digit = n % 10;
s += digit;
if (digit != 0)
p *= digit;
d++;
n /= 10;
} while (n != 0);
break;
}
也许它这一点,你的老师想告诉你:default
开关的情况,这基本上意味着“其他”。
关于你对n的分析...当然你可以把它解析为一个int和那个divison/modulo的东西,但是因为你是编程新手,也许你不知道你可以读取一个字符串通过索引CHAR-由炭:
string input = Console.ReadLine();
foreach (char c in input)
{
int digit = Convert.ToInt32(c);
s += digit;
p *= digit;
}
这的foreach将通过您的字符串运行字符按char和下一个字符存储在c
。这个代码比你的div/mod版本更容易阅读。简单和干净的代码有助于理解。
当改变像这样,你的开关看起来像:
switch (input.Length)
{
case 0:
p = 0;
break;
default:
// the foreach loop from above
break;
}
希望这会有所帮助,欢呼声,格里斯
如果我们有办法赶上未在上市的情况下,开关构造... – Funk
有趣的是,这至少是第二个问题与相同的话题(数字乘积...)我今天读了...切换在这里解释:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch – Michael
说你的老师你想用Linq :)'string str =“12345”; var s = str.Sum(x => x - '0'); var p = str.Select(x => x - '0')。Aggregate((y,i)=> y * = i);' –