787 字
4 分钟
C#实现3的倍数判断程序
完整代码
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; }}这个方法的功能是:
- 使用
Math.Abs()处理负数情况 - 将数字转换为字符串
- 使用LINQ的
Select方法将每个字符转换为数字 - 遍历数字数组,累加所有数字位
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; }}程序支持两种输入方式:
- 命令行参数
- 控制台交互输入
判断逻辑部分
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; } }}处理流程:
- 保存原始输入值(用于显示结果)
- 特殊处理0的情况(0是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的倍数
使用示例
- 命令行方式:
ifmultiple3.exe 123输出:123是3的倍数- 交互方式:
请输入数字123123是3的倍数程序特点
- 数学原理应用:巧妙利用数学原理,避免除法运算
- 多重输入支持:支持命令行参数和控制台输入
- 异常处理:包含基本的输入验证
- 负数处理:使用Math.Abs()处理负数
- 边界处理:特殊处理0的情况
部分信息可能已经过时