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 "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++语言 输入一个正整数,判断它是不是是回文数的主要内容,如果未能解决你的问题,请参考以下文章