【项目4-回文数】
(1)输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。
[参考解答]
#include <stdio.h> int main() { int n,m,k; scanf("%d", &n); k=n; m=0; //m将为n的反序数 while(k>0) { m=m*10+k%10; k=k/10; } if(m==n) //n等于其反序数,则为回文数 printf("Yes\n"); printf("\n"); return 0; }
(2)输出10000以内的所有回文数。
[参考解答]
解法1:
#include <stdio.h> int main() { int n,m,k; int count=0; for(n=1; n<10000; n++) { k=n; m=0; //m将为n的反序数 while(k>0) { m=m*10+k%10; k=k/10; } if(m==n) //n等于其反序数,则为回文数 { printf("%d\t", n); count++; if(count%8==0) printf("\n"); } } return 0; }
解法2:
#include <stdio.h> int main() { int m,n; //个位数全是回文数 for(m=1; m<=9; ++m) printf("%d\t", m); //下面凑出所有两位的回文数 for(m=1; m<=9; ++m) printf("%d\t", m*10+m); //下面凑是所有三位的回文数 for(m=1; m<=9; ++m) for(n=0; n<=9; ++n) printf("%d\t", m*100+n*10+m); //下面凑出所有四位的回文数 for(m=10; m<=99; ++m) { n=(m%10)*10+m/10; //n和m比,个位、十位恰互换 printf("%d\t", m*100+n); } printf("\n"); return 0; }
时间: 2024-10-04 09:36:55