利用数组,实现回文数的判断

简介: 任务:利用数组,实现回文数的判断#include<iostream>using namespace std;bool isPalindrome(int);int main(){ int m,n; cout<<"求多少以内的回文数?"<<endl; cin>>m; for(n=1;n<=m;++n) if(isPali

任务:利用数组,实现回文数的判断

#include<iostream>
using namespace std;
bool isPalindrome(int);
int main()
{
	int m,n;
	cout<<"求多少以内的回文数?"<<endl;
	cin>>m;
	for(n=1;n<=m;++n)
		if(isPalindrome(n))
			cout<<n<<" ";
	return 0;
}

bool isPalindrome(int n)
{
	int a[20]; //用于存储n中的各位数
	int i=0;
	//下面的循环,使a数组中依次存放个、十、百……位数
	while(n>0)
	{
		a[i++]=n%10;
		n/=10;
	}
	//退出循环,可以知道n为i位数
	int j=0,k=i-1;
	while(a[j]==a[k]&&j<k)//只要两边的数相等,齐往中间“看”
		j++,k--;
	if(j>=k) 
		return true;  //前后两端对应的数字都比较过了,都相等,是回文数
	else 
		return false;
}

  拓展:利用上面的比较算法,可以判断一个字符串是否是回文(真正的文),典型的回文,如"level"。试编写这样的程序。本文最后还附一组古人的回文诗,值得欣赏。


  后记:写本文,源于有网友发来求助信让我看看下面的程序。其中用到了数组,是或以作为一种思路,再看到静态变量(并且还是全局的),尤其是goto语句,感觉到完全没有必要了。想去理出个头绪来,但如此难读,这种程序不读也罢,不管能不能完成任务,即使领着初学者读懂了,也是将人往沟里带的程序。交朋友要有选择,读程序也是这样。

  下面是原程序,粗读一下,当作反面材料好了。注意在实际工作中,静态变量、全局变量能不用就不用,而用高级语言编程,goto语句更是不要去用,有的是办法替代。

#include<iostream>
using namespace std;
int a[20]; //可以通过改变元素的多少来改变所求整数的范围
static int i=0;
void f(int);
void f(int n)
{
lp:for(n;n>=10;n--)
   {
	   int N=n;
	   for(i=0;i<10;i++) //用循环将一个整数的各位分离出来
	   {
		   if(N/10==0)
		   {
			   a[i]=N;
			   break;
		   }
		   else
		   {
			   a[i]=N;
			   N/=10;
		   }
	   }
	   int b=i;
	   for(i,b;i>=0;i--) //用来判断是否为回文数!
	   {
		   if(a[i]==a[b-i]) continue;
		   else
		   {
			   n--;
			   goto lp;
		   }
	   }
	   cout<<n<<endl;
   }
}
void main()
{
	int n=0;
	cout<<"求多少以内的回文数?"<<endl;
	cin>>n;
	f(n);
}

附:明末浙江才女吴绛雪《四时山水诗》,诗云: ——自http://baike.baidu.com/view/46546.htm

  莺啼岸柳弄春晴夜月明,
  香莲碧水动风凉夏日长,
  秋江楚雁宿沙洲浅水流,
  红炉透炭炙寒风御隆冬。
  这首十字回文诗,每句来回复读,可成一首七言绝句。四首绝句,也描写四时景色。
  春 景 诗
  莺啼岸柳弄春晴,柳弄春晴夜月明。
  明月夜晴春弄柳,晴春弄柳岸啼莺。
  夏 景 诗
  香莲碧水动风凉,水动风凉夏日长。
  长日夏凉风动水,凉风动水碧莲香。
  秋 景 诗
  秋江楚雁宿沙洲,雁宿沙洲浅水流。
  流水浅洲沙宿雁,洲沙宿雁楚江秋。
  冬 景 诗
  红炉透炭炙寒风,炭炙寒风御隆冬。
  冬隆御风寒炙炭,风寒炙炭透炉红。


目录
相关文章
|
13天前
判断一个数是否为回文数
【10月更文挑战第23天】判断一个数是否为回文数。
25 4
|
2月前
判断它是不是回文数
判断它是不是回文数。
40 6
|
1月前
判断一个数字是否为质数
判断一个数字是否为质数。
51 9
|
5月前
数组\判断是否能被已知且小于x的素数整除
数组\判断是否能被已知且小于x的素数整除
26 0
|
6月前
|
C语言
判断回文数
C 语言实例 - 判断回文数。
43 1
|
6月前
回文数的个数
回文数的个数
|
算法 Python
回文数的判断
回文数的判断
103 0
|
搜索推荐
每日一题——两数之和(返回下标和返回数值两种情况)
每日一题——两数之和(返回下标和返回数值两种情况)
|
算法 C语言
素数的判断方法
素数的判断方法
136 0