C++语言 输入一个正整数,判断它是否是回文数
输入一个正整数,判断它是否是回文数,所谓回文数就是从左往右读与从右往左读都一样的数,如“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流程控制:也是中断循环内的运行操作,并且从头开始运行。
办法很多,下面提供三种思路和实现方法。
(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;
}
#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");
}
#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;
}
2018-05-23
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;
}