一、迴文數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("%d\n", 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("Yes\n"); else printf("No\n"); 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("Yes\n"); else printf("No\n"); 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("Yes\n"); else printf("No\n"); 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("%d\n", sum); return 0; }
原創文章,作者:ECNFG,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/369721.html