蓝桥杯真题详解:C++编程求不同位数数字的回文数个数和包含数字99的回文数个数

题目如下:

请编程求不同位数数字的回文数个数。用户输入一个正整数M(2<M<7),M作为回文数的位数。要求输出M位的回文数共有几个及这些回文数中有几个包含数字99.

输入描述:输入一个正整数M

输出描述:第一行输出回文数的个数;第二行输出M位的回文数中包含数字99的有几个。

【样例输入】

3

【样例输出】

90

1

解答这道题我们就需要知道如何去判断一个数是否为回文数,在前一篇文章中我们有介绍回文数判断函数的定义,如需了解可点击查看《C++回文数判断函数,判断某个数是不是回文数

C++编程实现代码如下:

#include<iostream> #include<string>#include<math.h>using namespace std;//定义数字反转  int isHuiWenShu(int number)	{		int swap=0;		int m=number;		while(m)		{			swap=swap*10+m%10; //number的最低位变为swap的最高位 			m=m/10;		}		return swap;	};int main(){	int M,min,max,count_huiwenshu,count_99,is99;	cout<<"请输入一个正整数M(2<M<7)"<<endl;	cin>>M;	min=pow(10,M-1);	max=pow(10,M)-1;	count_huiwenshu=0;	count_99=0;	for(int i=min;i<=max;i++) 	{		if(i==isHuiWenShu(i))		{			count_huiwenshu++;			is99=to_string(i).find("99");  			if(is99!=-1)			{				cout<<to_string(i)<<endl;				count_99++;			}		}	}	cout<<min<<"和" <<max<<"中有回文数:"<<count_huiwenshu<<"个 包含99的个数为:"<<count_99<<endl;       return 0;	}

代码片段中的is99=to_string(i).find(“99”); 是将M位数用to_string()转换成字符串,然后再用字符串函数find()来查找是否包含99,如果包含会返回索引值,如果不包含会返回-1,所以通过判断 is99变量的值是否为-1即可。

最后更新时间:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

上一篇2022-10-13 13:59:57
下一篇 2022-10-14 11:01:49

相关推荐