回文数c语言程序编写(c语言判断回文数)

一、回文数c语言程序编写函数

回文数是指一个数字从左右两边读都是一样的,比如121、333等等。编写一个判断回文数的函数非常简单,只需要将数值转换为字符串,然后比较第i位和第n-i-1(n是位数)位字符是否相同即可。

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

int isPalindrome(int num){
    char s[12];
    sprintf(s, "%d", num);
    int len = strlen(s);
    for (int i = 0; i < len / 2; i++){
        if (s[i] != s[len-i-1]) return 0;
    }
    return 1;
}

int main(){
    int num = 12321;
    printf("%dn", isPalindrome(num)); // 输出 1
    return 0;
}

二、回文数c语言程序编写200到3000

下面是一个程序,用于输出200到3000之间的所有回文数字:

#include <stdio.h>

int isPalindrome(int num){
    // 略去 isPalindrome 函数代码
}

int main(){
    for (int i = 200; i <= 3000; i++){
        if (isPalindrome(i)) printf("%d ", i);
    }
    return 0;
}

三、回文数c语言程序编写思路

回文数的基本判断方法已经在第一部分介绍,这里介绍一下回文数的生成思路。由于回文数是从左往右和从右往左读是一样的,所以我们可以考虑生成回文数的一半,再将这一半数字翻转后拼接在一起。例如,我们要生成一个五位数的回文数。我们可以先生成前三位数字,然后将这三位数字翻转得到后三位数字,最后拼接在一起即可。

#include <stdio.h>

int main(){
    int n = 5;
    int half = n / 2;
    for (int i = 1; i < 10; i++){
        // 生成前一半数字
        int num = i;
        for (int j = 1; j < half; j++){
            num = num * 10 + i;
        }
        // 将前一半数字翻转
        int tmp = num;
        int reverse = 0;
        while (tmp){
            reverse = reverse * 10 + tmp % 10;
            tmp /= 10;
        }
        // 拼接成回文数
        if (n % 2 == 0){
            printf("%d%d ", num, reverse);
        } else{
            for (int k = 0; k < 10; k++){
                printf("%d%d%d ", num, k, reverse);
            }
        }
    }
    return 0;
}

四、五位回文数c语言程序编写

生成五位回文数的方法类似于上面介绍的生成N位回文数的方法,不同的是前一半数字的生成需要从10开始。

#include <stdio.h>

int main(){
    for (int i = 10; i < 100; i++){
        int num = i * 1000 + i / 10;
        if (num < 10000 && isPalindrome(num)) printf("%d ", num);
    }
    return 0;
}

五、判断回文数c语言程序

这是一个最简单的判断回文数的程序:

#include <stdio.h>

int main(){
    int num = 12321;
    int tmp = num;
    int reverse = 0;
    while (tmp){
        reverse = reverse * 10 + tmp % 10;
        tmp /= 10;
    }
    if (num == reverse) printf("Yesn");
    else printf("Non");
    return 0;
}

六、回文数c语言程序编写数组

可以使用数组存储多个回文数字:

#include <stdio.h>

int main(){
    int palindromes[] = {121, 232, 343, 454, 565, 676, 787, 898, 999};
    int len = sizeof(palindromes) / sizeof(palindromes[0]);
    for (int i = 0; i < len; i++){
        if (isPalindrome(palindromes[i])) printf("%d ", palindromes[i]);
    }
    return 0;
}

七、回文数c语言程序编写字符串

可以先将数字转化为字符串,再判断是否回文:

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

int main(){
    int num = 12321;
    char s[12];
    sprintf(s, "%d", num);
    int len = strlen(s);
    int isPalindromes = 1;
    for (int i = 0; i < len / 2; i++){
        if (s[i] != s[len-i-1]){
            isPalindromes = 0;
            break;
        }
    }
    if (isPalindromes) printf("Yesn");
    else printf("Non");
    return 0;
}

八、回文数c语言程序编写三位数

与五位回文数程序类似,生成三位回文数的规律是:回文数的百位和个位数字相同、十位数字任意。

#include <stdio.h>

int main(){
    for (int i = 1; i < 10; i++){
        int num = i * 101;
        if (isPalindrome(num)) printf("%d ", num);
    }
    return 0;
}

九、回文数c语言程序编写要用函数

上面的程序中已经多次使用了isPalindrome函数,下面是该函数的完整代码:

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

int isPalindrome(int num){
    char s[12];
    sprintf(s, "%d", num);
    int len = strlen(s);
    for (int i = 0; i < len / 2; i++){
        if (s[i] != s[len-i-1]) return 0;
    }
    return 1;
}

int main(){
    int num = 12321;
    if (isPalindrome(num)) printf("Yesn");
    else printf("Non");
    return 0;
}

十、回文数c语言程序编写while

这个程序使用while循环判断一组数值是否符合条件:

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

int isPalindrome(int num){
    // 略去 isPalindrome 函数代码
}

int main(){
    int num, sum = 0;
    while (scanf("%d", &num) != EOF){
        if (isPalindrome(num)) sum += num;
    }
    printf("%dn", sum);
    return 0;
}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注