C语言 关于判断回文数的程序

#include<stdio.h>intmain(void){inta;scanf("%d",&a);intm;intsum=0;m=a;while(m){sum=sum... #include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
int m;
int sum = 0;
m = a;
while(m)
{
sum = sum*10 + m%10;
m /= 10; // m = m/10
}
if( sum == a)
printf("是回文数!\n");
else
printf("不是回文数\n");
return 0;
}

大神们给解释下这个程序,,流程能看懂,但是判断的思路不清楚。。
我看网上还有一些判断的程序,貌似比这个复杂些,能对比解释下更好了。
展开
 我来答
滟丽00
高粉答主

2019-07-19 · 繁杂信息太多,你要学会辨别
知道答主
回答量:1487
采纳率:0%
帮助的人:23.5万
展开全部

1、首先打开vc6.0,新建一个控制台项目,添加头文件

2、然后我们根据图示代码添加main主函数。

3、然后我们根据图示代码定义6个long型变量。

4、然后我们根据图示代码使用scanf给input赋值。

5、然后我们根据图示代码分解个位、百位、千位、万位。

6、然后我们根据图示代码使用if判断。

7、然后我们根据图示代码运行程序,看看结果无误。

问明6E
高粉答主

2019-11-20 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.6万
展开全部

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的。

首先,来判断一下一个数是否为回文数:

#include<;stdio.h>

void main(){

int num,s,y=0;

printf("Please input numbers:");

scanf("%d",&num);

s=num;

while(s>0){

y=y*10+s%10;

s=s/10;

}

if(y==num){

printf("%d是一个回文数!\n",num);

}else{

printf("%d不是一个回文数!\n",num);

}

}

判断一下一个字符串是否为回文数:

#include<stdio.h>

#include<string.h>//strlen函数的头文件

int main()

{

int j,i,n;

char a[999],b[999];

printf("Please input string:");

scanf("%s",a);//输入字符串

n=strlen(a);//用strlen函数读取字符串长度(长度到\0停止)

for(i=0,j=n-1;i<n;i++,j--)//循环将字符串a逆序赋值给b

b[j]=a<i>;

for(i=0;i<n;i++)

{

if(b<i>!=a<i>)

break;//判断是否回文

}

if(i==n)printf("是一个回文数!\n");//如果从第1位到n都相同则输出回文数

else printf("不是一个回文数!\n");

return 0;

}

扩展资料:

include用法:

#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。

插入头文件的内容

#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:

#include<math.h>//一些数学函数的原型,以及相关的类型和宏

如果需要包含针对程序所开发的源文件,则应该使用第二种格式。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhuhuaizhong
推荐于2018-04-12 · TA获得超过7276个赞
知道大有可为答主
回答量:3978
采纳率:63%
帮助的人:3572万
展开全部
原理:

任何一个数除以10的余数就是该数最后一位
任何一个数除以10的商就是排除掉最后一位后的数(因为 c++ 两个整数相除结果还是整数)

所以 ,一个数1234 就可以通过这种方法得到 123 和 4
接下来对 123 进行同样的操作,就得到 12 和 3
接下来得到 1 和 2
接下来得到 0 和 1

整个过程是个循环,当商不是 0 的时候就一直这么干

每次拿到一个余数,都用来构造新数,新数=新数*10+余数

所以经过四次循环后,我们得到新数 4321 ,如果是回文,那么新数应该等于原数,否则,说明不是回文。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龍__鳳
2013-05-07 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1395万
展开全部
你把每次循环中sum和m的值输出,你就懂了判断的思路。
比如你输入的数是12321:
循环开始前:m=12321,sum=0;
第1次循环结束:m=1232,sum=1;
第2次循环结束:m=123,sum=12;
第3次循环结束:m=12,sum=123;
第4次循环结束:m=1,sum=1232;
第5次循环结束:m=0,sum=12321。
输入的是几位数就循环几次。
判断的思路就是,通过循环依次把m的个位,十位,百位...上的数取出来,与sum*10相加。这样得到的数sum就是m颠倒之后的数,如果两者相等,那就是回文数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
止凝竹c
2013-05-07 · TA获得超过395个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:162万
展开全部
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);//举个例子a=1234
int m;
int sum = 0;
m = a;//m=1234
while(m)//m在第四次为0,循环的条件为m不等于0,所以循环四次结束
{
sum = sum*10 + m%10;//第一次等式为sum=0*10+1234%10(其实值就是4)=4,第二次等式为sum=4*10+123%10(其实值为3)=43,第三次等式为sum=43*10+12%10(其实值为2)=432,第四次sum=432*10+1%10(其实为1)=4321
m /= 10; // m = m/10,第一次等式为m=1234/10=123,第二次m=123/10=12,第三次m=12/10=1,第四次m=1/10=0;
}
if( sum == a)
printf("是回文数!\n");
else
printf("不是回文数\n");//1234!=4321所以不是回文数
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式