我是编程的新手,尤其是涉及到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)
您无法在开关/案例中打印所有可能的组合,但您至少可以在“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 -by-char通过索引:
string input = Console.ReadLine();
foreach (char c in input)
{
int digit = Convert.ToInt32(c);
s += digit;
p *= digit;
}
此foreach将运行您的字符串char-by-char并将下一个字符存储在c
中。这个代码比你的div / mod版本更容易阅读。简单易懂的代码有助于理解。
当像这样更改时,您的开关将如下所示:
switch (input.Length)
{
case 0:
p = 0;
break;
default:
// the foreach loop from above
break;
}
希望这有助于,欢呼,格里斯