C语言经典例题之回文数问题

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
下面这段程序为什么输入的数一直判断说不是回文数?求解?

#include
#include

int main()
{
char str[5];
printf("请输入五位数:");
scanf("%s",str);

if(str[0]==str[4]&&str[1]==str[3])
    printf("这是一个回文数。\n");
else
    printf("这不是回文数。\n");
return 0;

}

char str[5];小了,最少要str[6],字符串输入末尾有个'\0'
你输入的多少。如果只是输入一个5位整数,下面代码没问题哈。


#include <stdio.h>
#include<string.h>

int main()
{
char str[6];
printf("请输入五位数:");
scanf("%s",str);

if(str[0]==str[4]&&str[1]==str[3])
    printf("这是一个回文数。\n");
else
    printf("这不是回文数。\n");
return 0;
}

#include <iostream>
#include <string>
using namespace std;
int main()
{
    int i,n;
    string s;
    cout<<"请输入你要输入一个三位数数:"<<endl;
    cin>>s;
    n=s.length();
    for(i=0;i<n/2;i++)             //因为判断的是一对
    {
        if(s[i]-s[n-1-i]==NULL)    //因为相等所以相减为0;
        {
            cout<<"YES!"<<endl;
        }
        else
        {
            cout<<"NO"<<endl;
        }
    }
    return 0;
}
 

https://blog.csdn.net/weixin_64811333/article/details/124484446

供参考:

#include <stdio.h>
#include<string.h>
int main()
{
    int n ,k;
    char str[128];
    printf("请输入一个数:");
    scanf("%s",str);
    n = strlen(str) - 1;
    k = 0;
    while (str[k] == str[n] && k <= n){
        n--;  k++;
    }
    if(k > n)
        printf("这是一个回文数。\n");
    else
        printf("这不是回文数。\n");
    return 0;
}