一、回文数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; }