C# 06.求正整数各位数字之和
Posted KonwHub知识加油站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 06.求正整数各位数字之和相关的知识,希望对你有一定的参考价值。
问题:
如何用C#求正整数各位数字之和?例如有数字:Num = 987456
,将各个位数分解求和:9+8+7+6+5+4 = 29
?
方法1(循环方式):
那么如何得到正整数的每一位数呢?我们可以对数字按10求余,即得到个位数字;接下来将原正整数,除以10,原来的十位降到个位,百位降到十位,千位降到百位...;然后再次求余,再次得到个位,将得到的这些个位依次相加即可;直到判断最后的数字小于0,即跳出循环
代码示例:
using System;
namespace Csharp
{
class Demo
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个正整数 : ");
int number = int.Parse(Console.ReadLine());
int sum = 0;
int reminder;
while (number > 0)
{
reminder = number % 10;
sum = sum + reminder;
number = number / 10;
}
Console.WriteLine($"这个正整数各位数字之和是 : {sum}");
Console.ReadKey();
}
}
}
// 输入:456789
// 输出:39
方法2(递归方式):
递归方式;即设置递归限制,如果正整数不满足递归限制,就将数字各位按:个位+十位+百位+千位...,依次展开
代码示例:
using System;
namespace Csharp
{
class Demo
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个正整数 : ");
int number = int.Parse(Console.ReadLine());
int sum = SumOfDigits(number);
Console.WriteLine($"这个正整数之和为 : {sum}");
Console.ReadKey();
}
//递归函数
static int SumOfDigits(int number)
{
if (number != 0)
{
return (number % 10 + SumOfDigits(number / 10));
}
else
{
return 0;
}
}
}
}
// 输入:4561233
// 输出:24
方法3(Linq方式):
linq是C#中的结构化查询库,我们可以将正整数按各位展开为一个数组,然后将这个数组的元素相加输出即可;我们需要引入linq命名空间using System.Linq;
示例代码:
using System;
using System.Linq;
namespace Csharp
{
class Demo
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个正整数 : ");
int number = int.Parse(Console.ReadLine());
int sum = number.ToString().Select(digit => int.Parse(digit.ToString())).ToArray().Sum();
Console.WriteLine($"这个正整数各位数字之和是 : {sum}");
Console.ReadKey();
}
}
}
// 输入:789456
// 输出:39
今天给大家分享如何在C#中,分别使用While循环
、递归
、Linq
的方式,将一个正整数的各位数字求和输出;大家都学会了吗?
以上是关于C# 06.求正整数各位数字之和的主要内容,如果未能解决你的问题,请参考以下文章
用C语言编程,输入一个正整数,计算并显示该数的各位数字之和。