首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

OJ題解:Reverse Number - 整數反轉含尾端零保留

     編輯:關於C語言

題目規則

  1. 正整數且不以0結尾 → 一般反轉 (12 → 21)
  2. 負整數 → 反轉後保持負號 (-12 → -21)
  3. 以0結尾 → 尾端零保留在反轉結果末尾 (1200 → 2100)

演算法策略

  1. 記錄正負號 flag,負數轉正處理
  2. 逐位取模10分解數字,同時計數尾端零個數 count
  3. 非零位存入陣列 array,遇到第一個非零位後 tab=0 停止計數尾端零
  4. 輸出:負號 → 陣列逆序 (實際為正序,因分解是從低位開始) → 補上尾端零

完整原始碼

#include <stdio.h>

int main() {
    int n, num, count, flag, tab, j, i;
    int array[100];
    scanf("%d", &n);
    while (n--) {
        scanf("%d", &num);
        j = 0; tab = 1; flag = 1; count = 0;
        if (num < 0) { flag = 0; num = -num; }
        while (num) {
            if (num % 10 == 0 && tab) count++;
            else { array[j++] = num % 10; tab = 0; }
            num /= 10;
        }
        if (!flag) printf("-");
        for (i = 0; i < j; i++) printf("%d", array[i]);
        for (i = 0; i < count; i++) printf("0");
        if (n > 0) printf("\n");
    }
    return 0;
}

範例追蹤

輸入: -1200
flag=0, num=1200
分解: 0(count=1) → 0(count=2) → 2(array[0]) → 1(array[1])
輸出: - + 21 + 00 = -2100 ✓

邊界情況

  • 輸入 0:題目隱含非零整數,若為0則while(num)不執行,無輸出
  • 32位整數範圍內,反轉後可能溢位,題目不要求處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved