787 字
4 分钟
C#实现3的倍数判断程序
2026-01-02

完整代码#

using System;
using System.Linq;
namespace ifmultiple3
{
class Program
{
static long input = 0;
static long ladd = 0;
static void Add()
{
string numberString = Math.Abs(input).ToString();
long[] numbers = numberString.Select(c => (long)char.GetNumericValue(c)).ToArray();
foreach (long num in numbers)
{
ladd += num;
}
}
static void Main(string[] args)
{
try
{
if (args.GetLength(0) > 0)
{
input = long.Parse(args[0]);
}
else
{
Console.WriteLine("请输入数字");
string s = Console.ReadLine();
if (s != "")
{
input = long.Parse(s);
}
else
{
Console.WriteLine("输入不能为空");
Console.ReadKey();
return;
}
}
long input1 = input;
while (true)
{
if (input == 0)
{
Console.WriteLine(input1 + "是3的倍数");
Console.ReadKey();
break;
}
Add();
if (ladd > 9)
{
input = ladd;
ladd = 0;
}
else
{
if (ladd == 3 || ladd == 6 || ladd == 9)
{
Console.WriteLine(input1 + "是3的倍数");
Console.ReadKey();
break;
}
else
{
Console.WriteLine(input1 + "不是3的倍数");
Console.ReadKey();
break;
}
}
}
}
catch
{
Console.WriteLine("输入的不是数字或输入的是小数");
Console.ReadKey();
}
}
}
}

代码解析#

1. 程序结构#

程序包含两个主要部分:

  • 静态变量:input(存储输入的数字)和ladd(用于累加数字的各位)
  • 两个主要方法:Add()Main()

2. Add()方法详解#

static void Add()
{
string numberString = Math.Abs(input).ToString();
long[] numbers = numberString.Select(c => (long)char.GetNumericValue(c)).ToArray();
foreach (long num in numbers)
{
ladd += num;
}
}

这个方法的功能是:

  1. 使用Math.Abs()处理负数情况
  2. 将数字转换为字符串
  3. 使用LINQ的Select方法将每个字符转换为数字
  4. 遍历数字数组,累加所有数字位

3. Main()方法详解#

输入处理部分#

if (args.GetLength(0) > 0)
{
input = long.Parse(args[0]);
}
else
{
Console.WriteLine("请输入数字");
string s = Console.ReadLine();
if (s != "")
{
input = long.Parse(s);
}
else
{
Console.WriteLine("输入不能为空");
Console.ReadKey();
return;
}
}

程序支持两种输入方式:

  1. 命令行参数
  2. 控制台交互输入

判断逻辑部分#

long input1 = input;
while (true)
{
if (input == 0)
{
Console.WriteLine(input1 + "是3的倍数");
Console.ReadKey();
break;
}
Add();
if (ladd > 9)
{
input = ladd;
ladd = 0;
}
else
{
if (ladd == 3 || ladd == 6 || ladd == 9)
{
Console.WriteLine(input1 + "是3的倍数");
Console.ReadKey();
break;
}
else
{
Console.WriteLine(input1 + "不是3的倍数");
Console.ReadKey();
break;
}
}
}

处理流程:

  1. 保存原始输入值(用于显示结果)
  2. 特殊处理0的情况(0是3的倍数)
  3. 循环处理:
    • 调用Add()计算各位数字之和
    • 如果和大于9,继续循环
    • 如果和是一位数,判断是否是3、6或9

异常处理#

catch
{
Console.WriteLine("输入的不是数字或输入的是小数");
Console.ReadKey();
}

程序原理#

程序基于数学原理:一个数是3的倍数,当且仅当它的各位数字之和是3的倍数

例如:

  • 123:1 + 2 + 3 = 6,6是3的倍数,所以123是3的倍数
  • 124:1 + 2 + 4 = 7,7不是3的倍数,所以124不是3的倍数

使用示例#

  1. 命令行方式:
Terminal window
ifmultiple3.exe 123
输出:123是3的倍数
  1. 交互方式:
请输入数字
123
123是3的倍数

程序特点#

  1. 数学原理应用:巧妙利用数学原理,避免除法运算
  2. 多重输入支持:支持命令行参数和控制台输入
  3. 异常处理:包含基本的输入验证
  4. 负数处理:使用Math.Abs()处理负数
  5. 边界处理:特殊处理0的情况
C#实现3的倍数判断程序
https://non266.top/posts/ifmultiple3/
作者
non_no266
发布于
2026-01-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00