ALIGROTHM reverseThreeDigitNumber INPUT: Integer n Begin units = n MOD 10 tens = (n/10) MOD 10 hundreds = n/10
OUTPUT units,tens,hundreds END
标准版伪代码
1 2 3 4 5 6 7 8 9 10
ALGORITHM reverseThreeDigitNumber INPUT: n (An integer) OUTPUT: Reversed integer BEGIN units <- n MOD 10 tens <- (n/10) MOD 10 hundreds <- n/10
OUTPUT units,tens,hundreds END
1.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<stdio.h>
intmain() { /********* Begin *********/ printf("input three number:"); int n; if (scanf("%d",&n)) { int units = n % 10; // 提取个位 int tens = (n / 10) % 10; // 提取十位 int hundreds = n / 100; // 提取百位 // 按照 321 的顺序输出,中间不加空格 printf("%d%d%d\n",units,tens,hundreds); } /********* End *********/ return0; }
2.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<iostream> usingnamespace std;
intmain() { /********* Begin *********/ std::cout << "input three number:"; int n; if (cin >> n) { int units = n % 10; // 提取个位 int tens = (n / 10) % 10; // 提取十位 int hundreds = n / 100; // 提取百位 // 按照 321 的顺序输出,中间不加空格 std::cout << units << tens << hundreds << std::endl; } /********* End *********/ return0; }
/********* Begin *********/ // 1. 输出提示文字 (对应 std::cout << "input three number:") rl.question("input three number: ", (answer) => { let n = parseInt(answer);
if (!isNaN(n)) { // 2. 核心逻辑:提取各位数字 // 注意:JS 除法结果带小数,必须用 Math.floor 取整 let units = n % 10; let tens = Math.floor(n / 10) % 10; let hundreds = Math.floor(n / 100);
/********* Begin *********/ // 1. 弹出输入框(对应 std::cout << "input three number:" 和 cin >> n) let answer = prompt("input three number:");
if (answer !== null) { let n = parseInt(answer); // 2. 核心逻辑:提取各位数字 // JS 必须用 Math.floor 处理整除,否则 123/10 会变成 12.3 let units = n % 10; let tens = Math.floor(n / 10) % 10; let hundreds = Math.floor(n / 100);
// 3. 按照 321 的顺序输出到控制台 console.log(`${units}${tens}${hundreds}`); } /********* End *********/
纯前端 HTML 交互版
如果你想做一个网页来实现它,逻辑是这样的:
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<script> // 逻辑部分 functionreverseNumber() { let n = parseInt(document.getElementById("numInput").value); let units = n % 10; let tens = Math.floor(n / 10) % 10; let hundreds = Math.floor(n / 100); document.getElementById("result").innerText = `${units}${tens}${hundreds}`; } </script>
<p>input three number:</p> <inputtype="number"id="numInput"oninput="reverseNumber()"> <p>Result: <spanid="result"></span></p>
/********* Begin *********/ printf("input three number:"); int n; // 使用标准 C 的输入输出,避免环境干扰 if (scanf("%d", &n) == 1) { int units = n % 10; int tens = (n / 10) % 10; int hundreds = n / 100; printf("%d%d%d\n", units, tens, hundreds); } /********* End *********/
Module Module1 Sub Main() ' 1. 打印输入提示 Console.Write("input three number:")
' 2. 读取输入 Dim input As String = Console.ReadLine() Dim n As Integer
' 3. 尝试解析输入(VB.NET 处理错误非常优雅) If Integer.TryParse(input, n) Then ' 4. 核心数学逻辑 ' 注意:VB 的 / 是浮点除法,\ 才是整数除法 Dim units As Integer = n Mod 10 Dim tens As Integer = (n \ 10) Mod 10 Dim hundreds As Integer = n \ 100
' 5. 输出结果 (无需空格,直接拼接) Console.WriteLine("{0}{1}{2}", units, tens, hundreds) End If
Sub ReverseNumber() ' 1. 定义变量 Dim n As Long Dim units As Integer, tens As Integer, hundreds As Integer ' 2. 从 Excel 单元格读取数据 (假设在第一行第一列) n = Cells(1, 1).Value ' 3. 核心数学逻辑 ' 注意:VBA 和 VB 一样,整除使用 \,取余使用 Mod units = n Mod 10 tens = (n \ 10) Mod 10 hundreds = n \ 100 ' 4. 将结果写回单元格 (第一行第二列) ' 我们用 & 连接符把它们拼成字符串,防止 321 变成数学加法 Cells(1, 2).Value = units & tens & hundreds ' 弹出提示框告知用户 MsgBox "逆序完成!" End Sub
3.windows版vbscript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
' 1. 定义变量 Dim n, result
' 2. 弹窗获取输入 n = InputBox("请输入一个三位数:", "三位数逆序器")
' 3. 核心逻辑 (VBS 中除法默认是浮点,需用 \ 整除) If IsNumeric(n) Then n = CInt(n) units = n Mod 10 tens = (n \ 10) Mod 10 hundreds = n \ 100 result = units & tens & hundreds ' 4. 弹窗输出 MsgBox "逆序结果是: " & result, vbInformation, "完成" EndIf
// 2. 读取输入并确保它不为空且是整数 iflet input =readLine(), let n =Int(input) { // 3. 核心数学逻辑 // Swift 是强类型语言,Int 之间的除法 / 自动执行整除 let units = n %10 let tens = (n /10) %10 let hundreds = n /100 // 4. 输出结果 // 使用 \(变量名) 进行字符串插值,这是 Swift 的特色 print("\(units)\(tens)\(hundreds)") }
graph TD A([开始]) --> B[/输入三位数 n/] B --> C{是否为有效数字?} C -- 否 --> D[/报错并退出/] C -- 是 --> E[提取个位: units = n % 10] E --> F[提取十位: tens = n / 10 % 10] F --> G[提取百位: hundreds = n / 100] G --> H[拼接输出: units, tens, hundreds] H --> I([结束])
Reverse Numbe Question(Any Length)
1.Pseudocode
通用逆序算法 (数学逻辑版)
这个版本通过不断地“剥离”最后一位并“拼装”到新数字中,解决了位数限制问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
ALGORITHM ReverseAnyNumber INPUT: Integer n BEGIN IF n == 0 THEN OUTPUT 0 RETURN END IF
reversedN = 0 // 当 n 还大于 0 时,循环继续 WHILE n > 0 DO digit = n MOD 10 // 取出当前最后一位 reversedN = (reversedN * 10) + digit // 将原有的值进位并加上新数字 n = n / 10 // 丢弃已处理的最后一位(整除) END WHILE
OUTPUT reversedN END
“字符串流”伪代码版 (适合前端处理)
如果希望保留前导零(比如 100 逆序变成 001),在伪代码中会使用字符串拼接:
1 2 3 4 5 6 7 8 9 10 11 12
ALGORITHM ReverseAsText INPUT: Integer n BEGIN strN = CONVERT n TO STRING resultStr = "" FOR i FROM (LENGTH of strN - 1) DOWN TO 0 DO resultStr = resultStr + CHARACTER at i IN strN END FOR OUTPUT resultStr END
ALGORITHM SecureReverseInteger INPUT: n (An integer) OUTPUT: Reversed integer or Error BEGIN // 1. 前置验证 (Validation) IF n is NULL THEN RETURN ERROR // 2. 处理特殊值 0 IF n == 0 THEN RETURN 0 // 3. 处理负数逻辑 (Sign Handling) isNegative <- FALSE IF n < 0 THEN isNegative <- TRUE n <- ABS(n) // 取绝对值,转为正数处理 END IF
reversedResult <- 0 // 4. 核心转换逻辑 WHILE n > 0 DO digit <- n MOD 10 reversedResult <- (reversedResult * 10) + digit n <- n / 10 END WHILE // 5. 符号还原 IF isNegative == TRUE THEN reversedResult <- reversedResult * -1 END IF RETURN reversedResult END
// 核心循环:只要 n 不为 0 就不停剥离末位 while (n > 0) { int digit = n % 10; std::cout << digit; // 直接输出,无需存储 n /= 10; } return0; }
3.Flow Control
1 2 3 4 5 6 7 8 9
graph TD A([开始]) --> B[result = 0] B --> C{n > 0?} C -- 是 --> D[digit = n % 10] D --> E[result = result * 10 + digit] E --> F[n = n / 10] F --> C C -- 否 --> G[/输出 result/] G --> H([结束])
/** * PROBLEM: Reverse an integer of any length (e.g., 12345 -> 54321) * STRATEGY: Iterative digit extraction and accumulation */
// Initialize the source number long long originalNumber = 123456789;
// This will store our final reversed result long long reversedResult = 0;
/* * START THE EXTRACTION LOOP * We don't know the length, so we loop until the number is exhausted (reaches 0) */ while (originalNumber > 0) {
// STEP 1: Extract the "Tail" // Use modulo 10 to grab the rightmost digit // Example: 123 % 10 = 3 int currentDigit = originalNumber % 10;
// STEP 2: Shift and Append // Multiply the current result by 10 to shift digits to the left (make a space) // Then add the extracted digit into that new space // Example: (4 * 10) + 3 = 43 reversedResult = (reversedResult * 10) + currentDigit;
// STEP 3: Truncate the Source // Use integer division to "chop off" the digit we just processed // Example: 123 / 10 = 12 originalNumber = originalNumber / 10;