C++语言 输入一个正整数,判断它是不是是回文数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++语言 输入一个正整数,判断它是不是是回文数相关的知识,希望对你有一定的参考价值。

使用 while dowhile的语句结构
输入一个正整数,判断它是否是回文数,所谓回文数就是从左往右读与从右往左读都一样的数,如“121”、“12321”

#include<stdio.h>

#include<stdlib.h>

int main()

int num,k,n=0;

printf("请输入一个数:");

scanf("%d",&num);

k=num;

while(k>0)

n=n*10+k%10;

k=k/10;

if(n==num)

printf("%d是回文数",n);

else

printf("No!它不是回文数!");

return0;

运行效果:

扩展资料:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

参考技术A

办法很多,下面提供三种思路和实现方法。

(1)将输入的正整数倒序构成一个新数,若新数与原数相等则是回文数,否则不是——

#include "stdio.h"
int main(int argc,char *argv[])
int n,m,i;
printf("Input n(int n>=0)...\\n");
if(scanf("%d",&n)!=1 || n<0)
printf("Input error, exit...\\n");
return 0;

printf("\\n%d:\\t",n);
for(m=0,i=n;i;(m*=10)+=i%10,i/=10);
printf(m==n ? "Yes.\\n" : "No.\\n");
return 0;

(2)将输入的正整数转换成字符串,检查前半栽和后半栽倒序对应字符,都相等则是回文数,否则不是——

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(int argc,char *argv[])
int n,i,j;
char s[11];
printf("Input n(int n>=0)...\\n");
if(scanf("%d",&n)!=1 || n<0)
printf("Input error, exit...\\n");
return 0;

printf("\\n%d:\\t",n);
for(j=strlen(itoa(n,s,10))-1,i=0;i<j;i++,j--)
if(s[i]-s[j])
break;
printf(i>=j ? "Yes.\\n" : "No.\\n");
return 0;

(3)直接分离最高位与最低位,次高位与次低位……依次比较,都相等时为回文数,否则不是——

#include "stdio.h"
int main(int argc,char *argv[])
int n,i,m;
printf("Input n(int n>=0)...\\n");
if(scanf("%d",&n)!=1 || n<0)
printf("Input error, exit...\\n");
return 0;

printf("\\n%d:\\t",n);
for(m=1,i=n;i>10;i/=10,m*=10);
for(i=1;i<m;i*=10,m/=10)
if(n/m%10-n/i%10)
break;
printf(i>=m ? "Yes.\\n" : "No.\\n");
return 0;

参考技术B #define  _CLANUAGE_

#ifndef  _CLANUAGE_
#define  _CLANUAGE_
#include <stdlib.h>
#include <stdio.h>
#endif

#ifndef  _CPP_
#define  _CPP_
#include <iostream>
using namespace std;
#endif


/*
    操作结果: 0-非回文,1是回文 
*/
int hws(int n)

int sum = 0, m;
m = n;

while (m)

sum = sum * 10 + m % 10;  // sum为反复取的个位数加上次的sum的10倍
m /= 10; // 反复缩小10倍


if (sum == n) return 1;

return 0;


void main(void)

if (hws(121)) cout<<"YES.\\n";
else cout<<"No.\\n";

system("pause");

参考技术C #include <iostream>
using namespace std;
void main()

int input;
int i;
int length;
char inputString[10];
char *p1, *p2;
cin >> input;
sprintf(inputString, "%d\\0", input);
i = 0;
while (inputString[i] != '\\0')

i++;

length = i;
p1 = inputString;
p2 = p1 + length - 1;
while (*p1 == *p2)

p1++;
p2--;
if (p1 >= p2)

cout << "yes!" <<endl;
return;


if (p1 < p2)
cout << "no!" << endl;

参考技术D #include<iostream>
using namespace std;
void main()

int a,m,n,k=0,l=0;
cout<<"n=";
cin>>n;
for(m=n;m>0;)

k=m%10;
m/=10;
l=l*10+k;

if(l==n)
cout<<"shi"<<endl;
else
cout<<"bu shi"<<endl;

JS判断输入值是不是为正整数

参考技术A JS输入值是否为判断正整数代码:<scripttype=”text/javascript”functiontest()varnum=document.getElementById(“num”).value;if(num==”")alert(‘请输入内容’);returnfalse;if(!(/(^[1-9]\d*$)/.test(num)))alert(‘输入的不是正整数’);returnfalse;elsealert(‘输入的是正整数’);</script<html<body<inputtype=”text”id=”num”/<inputtype=”button”value=”测试”onclick=”returntest()”/</body</html(附)判断数字、浮点的正则表达:”^\\d+$”  //非负整数(正整数 + 0)“^[0-9]*[1-9][0-9]*$”  //正整数“^((-\\d+)|(0+))$”  //非正整数(负整数 + 0)“^-[0-9]*[1-9][0-9]*$”  //负整数“^-?\\d+$”    //整数“^\\d+(\\.\\d+)?$”  //非负浮点数(正浮点数 + 0)“^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$”  //正浮点数“^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$”  //非正浮点数(负浮点数 + 0)“^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”  //负浮点数“^(-?\\d+)(\\.\\d+)?本回答被提问者采纳

以上是关于C++语言 输入一个正整数,判断它是不是是回文数的主要内容,如果未能解决你的问题,请参考以下文章

JS判断输入值是不是为正整数

C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。

java语言判断一个数字是否为回文数字

C++程序,判断一个数是不是为回文数

C++判断素数的代码

判断一个整数是否是回文数