问题:如何用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 的方式,将一个正整数的各位数字求和输出;大家都学会了吗?
|