题目:从左向右读和从右往左读是完全一样的,这样的数称为“回文数”。像数字在照镜子一样,现在试着求出1~n之间“回文数”的个数。
这一个题目我们可以这样做:
首先,我们来判断一个数是不是回文数。
while(n!=0){
s=n%10;//取出个位
sum = sum*10+s;//把这个数加上10倍sum存在sum里面。这样可以使以前的个位变成最高位。
n = n/10;//去掉个位
}
有了这一步,我们就可以写出程序来了。
我们用一个函数来打包这个代码。
bool huiwen(int n){
int t=n, sum=0, s;
while(n!=0){
s=n%10;
sum = sum*10+s;
n = n/10;
}
if(sum==t){
return 1;
}
else{
return 0;
}
}
原理:
先把n赋值给t,方便后续比较。然后创造一个倒序数存储变量sum。最后创造普通变量s。在还有没判断的数的情况一直循环刚才的操作,直到得出n的倒序数。然后判断,如果倒序数等于原来的数,那么返回1,否则返回0。文章来源:https://www.toymoban.com/news/detail-559860.html
再加上主函数main()里面的代码,用一个for循环里的循环变量来当作参数,用计数器计数,最后输出计数器即可。文章来源地址https://www.toymoban.com/news/detail-559860.html
#include <cstdio>
#include <iostream>
using namespace std;
bool huiwen(int n){
int t=n, sum=0, s;
while(n!=0){
s=n%10;
sum = sum*10+s;
n = n/10;
}
if(sum==t){
return 1;
}
else{
return 0;
}
}
int main(){
int a, cnt=0;
bool torf;
scanf("%d", &a);
for(int i=1; i<=a; i++){
torf = huiwen(i);
if(torf){
cnt++;
}
}
printf("%d", cnt);
return 0;
}
到了这里,关于c++回文数程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!