C++问题求助!!!

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:49:08
题目:输入一个5位数,判断是否是回文数!
#include<stdio.h>
void main()
{
long ge,shi,qian,wan,x;
printf("\n 请输入一个5位整数:");
scanf("%ld",&x);
wan=x/10000; //分解出万位数(这个例题是我找的,可是我不知道为什么其中的万位不用取模吗?还有//
qian=x%10000/1000;//分解出千位数 千位上取了模为什么还要除以1000?十位上为什么模了100还除以10, //
shi=x%100/10; //分解出十位数 位上为什么又只模10就可以了?!小弟不懂,请具体指教谢谢了!25分//
ge=x%10; //分解出个位数 拱手送上//
if(ge==wan && shi==qian)
printf("\n 这个数是回文数\n");
else
printf("\n 这个不是回文数\n");
}

楼主,你这是数学的问题,不是编程的问题。
万位是最高位,所以只需要除以10000,看有多少个10000就是万位上的数字了。但是后面的千位,十位,由于更高位上都有数字,所以要先把这些高位上的数字去掉才行,所以要先模10000,比如说12345,模了10000之后就只剩下一个4位数,2345,再用2345除以1000算有多少个1000不就是千位上的数字么?要得到十位上的数字也是同样的道理。个位是最低位,模10之后剩下的就只有个位,或者你非要再加一个/1看有多少个1也未尝不可,只不过没必要。

你记住a%b,如果b是10^n的话,你就从a的小数点开始(0开始数)往左数到第n位,然后把从这第n位开始往左的所有位数(包括这第n位)砍掉剩下的就是
a%b的值,比如说上面的12345%10^2,就把从3开始往左的全部砍掉剩下的45就是12345%100的值,你再用/10不就是有多少个10,也就是十位上的数字了。

千位取模是因为要除去万位上的数;例如12345;取了模后变成了2345;再除1000后就得到了2;后面的也是相同的意思;自己好好想想吧^_^

我也是菜鸟,不过一看你写的是C而不是C++啊,我下面有个C的判断回文的,编译运行都通过了你.你可以看看,不懂的话一起交流.

/**
A method judge wether the forward is the same as backward
*/
#include <string.h>
#include <stdio.h>

int palindrome(char *s)
{
int palindromic = 1;
size_t len = strlen(s);
if (len > 1)
{
for (unsigned i = 0; i < len / 2; ++i)
{
if (s[i] != s[len - 1 - i])
{