注册 登录
编程论坛 C++教室

编了一个程序:判断一个数是不是回文数。为什么我测试回文数12345654321的时候,测试结果是NO,求高手解答

liuyinuo2006 发布于 2017-07-30 22:06, 3128 次点击
编了一个程序:判断一个数是不是回文数。为什么我测试回文数12345654321的时候,测试结果是NO,求高手解答
#include<iostream>
#include<math.h>
using namespace std;
int judge(int x)
{
int i,a[200],n,k;
k=1;
while(x!=0)
{
    a[k]=x%10;
    x=x/10;
    k++;   
}
n=k-1;
for(i=1;i<=n/2;i++)
{
    if(a[i]!=a[n-i+1])
    {
        return 0;
    }
}
return 1;
}
int main( )
{
    int x;
    cin>>x;
    if(judge(x)==1)
    cout<<"Yes";
    else
    cout<<"No";
}
7 回复
#2
rjsp2017-07-31 08:19
int 能存得下 12345654321 吗?(我也不知道,因为C/C++并没有规定int的值范围)

BTW: 你的那些坏习惯是书上教的吗?比如 序号从1开始,比如 将所有变量都定义到开始处。

#3
liuyinuo20062017-07-31 09:18
回复 2楼 rjsp
我是暑假刚学一个月,变量定义的开始的地方我觉得容易识别啊,我也不知道什么样的是好习惯。能推荐一个初学者的书吗?
#4
tredy6t2017-07-31 17:54
程序代码:
#include<iostream>
#include<string>

int main()
{
    std::string str;
    getline(std::cin, str);
    unsigned len = str.length();
    size_t nSize = 0;
    for ( ;nSize < len / 2; ++nSize)
    {
        if (str[nSize] != str[len - nSize - 1])
            break;
    }
    if (nSize == len / 2)
        std::cout << "YES";
    else
        std::cout << "NO";
    return 0;
}
#5
liuyinuo20062017-07-31 22:38
回复 4楼 tredy6t
我测试了,完全正确,但我看不懂你写的程序,你学了多久了?
#6
lv1522017-08-02 09:10
你输入的这个数越界了,数的值太大了
#7
松鼠偷葡萄2017-08-26 18:13
我觉得你可以输一个字符串试着用另一种方法测试回文
#8
Elielieli2017-09-23 20:36
#include<iostream>
#include<string>
using namespace std;
string s;
long long len;
bool f;
int main(){
    cin>>s;
    len=s.size();
    f=true;
    for(int i=0;i<=len/2;i++){
        if(s[i]!=s[len-i-1]){
            f=false;
            break;
        }
    }
    if(f)cout<<'Yes'; else cout<<'No';
    return 0;
}
1