一、迴文數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
微信掃一掃
支付寶掃一掃