c語(yǔ)言怎么判斷是否為回文數(shù)

小億
314
2023-11-13 19:15:34

判斷一個(gè)數(shù)是否為回文數(shù),可以通過將該數(shù)轉(zhuǎn)化為字符串,然后比較字符串的前半部分和后半部分是否相同來實(shí)現(xiàn)。

具體步驟如下:

  1. 定義一個(gè)整型變量 num 存儲(chǔ)待判斷的數(shù)。
  2. 將 num 轉(zhuǎn)化為字符串 str。
  3. 定義兩個(gè)整型變量 start 和 end 分別指向字符串的開頭和結(jié)尾。
  4. 使用一個(gè)循環(huán),判斷 start 小于等于 end。
    • 如果 str[start] 不等于 str[end],則該數(shù)不是回文數(shù),返回 false。
    • 否則,將 start 加1,end 減1,繼續(xù)循環(huán)。
  5. 循環(huán)結(jié)束后,說明該數(shù)是回文數(shù),返回 true。

以下是一個(gè)示例代碼:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

bool isPalindrome(int num) {
    char str[20];
    sprintf(str, "%d", num);
    int start = 0;
    int end = strlen(str) - 1;
    while (start <= end) {
        if (str[start] != str[end]) {
            return false;
        }
        start++;
        end--;
    }
    return true;
}

int main() {
    int num;
    printf("請(qǐng)輸入一個(gè)整數(shù):");
    scanf("%d", &num);
    if (isPalindrome(num)) {
        printf("%d是回文數(shù)\n", num);
    } else {
        printf("%d不是回文數(shù)\n", num);
    }
    return 0;
}

注意,上述代碼中使用了 sprintf 函數(shù)將整數(shù)轉(zhuǎn)換為字符串,需要包含頭文件 string.h。另外,該示例中只能判斷正整數(shù)是否為回文數(shù),對(duì)于負(fù)數(shù)和含有0的數(shù),需要根據(jù)具體需要進(jìn)行調(diào)整。

0