题目如下:
请编程求不同位数数字的回文数个数。用户输入一个正整数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即可。
最后更新时间:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。