回文数的判断C语言和C++版本
最近在准备蓝桥杯比赛,当时头脑一热就报名了,然做题哭死,基础算法,数论都很重要。
分享一下回文数的判断,基础知识了。
首先是C语言版本的
#include<stdio.h>
int main()
{
int x,newed,t,n;
while(scanf("%d",&x)!=EOF)//EOF是文件结束符
{
newed=0;
n=x;
do
{
newed=newed*10+x%10;
x/=10;
}while(x>0);//循环结束后,newed存的就是输入的数倒置过来的数。
if(n= =newed)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
C语言:主要思路就是把一个数每一位数都倒过来,例如12321,倒置12321
不变的就是回文数,这个小伙伴们可以自行百度。像是123,倒置321,这样的数就不是回文数。
然后是C++版本的
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
string num;
cin>>num;
int n=num.size();
int m;
m=n/2;
int flag=1;
for(int i=0,j=n-1;i<m;i++,j--)
{
if(num[i]!=num[j])
{
flag=0;
break;
}
}
if(flag==1)
cout<<"Yes"<<endl;
else cout<<"NO"<<endl;
}
C ++:主要思路是首先判读一下要进行几次比较,例如12321
有5位数,然后除以2,就是说要比较2次,假设把12321存放在数组中,a[0]对应的就是1,然后进行比较。12321比较前两位和后两位,如果不满足条件就break,跳出循环。我用的是string类,这样也可以比较回文字符串。