Ⅰ 使用c语言编程:从键盘输入一个5的正整数,判断它是不是回文数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidcheck(int*Hui)//这个函数用来检测是否是5位数
{
inti;
intcount=0;//计数变量
charlenth[10];
for(i=0;i<strlen(itoa(*Hui,lenth,10));i++){
count++;
}//这里for循环可以换成count=strlen(itoa(*Hui,lenth,10))
printf("这是%d位数",count);
if(count==5){
puts("goon..");
}
else{
puts("yourinputiserror!");
exit(0);
}
}
intmain()
{
int*Huiwenshu=NULL; //也可以用intHuiwenshu[6];,推荐前一种
intLast_digit;//末位数字
intFirst_digit;//首位数字
intThou_digit;//千位数字
intTen_digit;//十位数字
Huiwenshu=(int*)malloc(sizeof(int*));//申请int*大小的连续空间
puts("请输入一个5位数:");
scanf("%d",&*Huiwenshu);//获取5位数
check(Huiwenshu);//将5位数导入检查函数
/*将5位数分解,涉及"%"取余数的技巧*/
Last_digit=*Huiwenshu%10;//取末位
Ten_digit=((*Huiwenshu%100-(Last_digit))/10);//取十位
Thou_digit=((*Huiwenshu%10000-(*Huiwenshu%1000))/1000);//取千位
First_digit=((*Huiwenshu%100000-(*Huiwenshu%10000))/10000);//取首位
if(Last_digit==First_digit){ //判断回文数
if(Ten_digit==Thou_digit){
printf("%d是回文数!",*Huiwenshu);
}
else{
printf("%d不是回文数!",*Huiwenshu);
return0;
}
}
else{
}
free(Huiwenshu);//释放内存
return0;
}
代码里的注释很清晰,如果不懂再问噢。其实还有另一种方法,就是直接定义一个int型数组,然后通过取对应的位数进行比较,然后得出结果,不过这种方法通用性较低,但是也行。
Ⅱ 一个5位数,用c语言来判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同
简单的很,既然是回文,就先把数字转成字符串,指针p,q指向两头,
随便一个数都行
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
int num;
cout<<"input a num:"<<endl;
cin>>num;
char numstr[128]={0};
itoa(num,numstr,10);
char* p=numstr,*q=numstr+strlen(numstr)-1;
bool flag =true;
while(p<q)
if(*p++!=*q-- ){
flag=false;
break;
}
cout<<"it is "<<boolalpha <<flag<<endl;
return 0;
}
Ⅲ C语言怎么判断一个数是否是回文数
所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
以下是判断一个数是否为回文数的代码:
Ⅳ c语言:判断输入的整数是否是五位数,如果是,判断他是否是回文数,如12321是个回文数,即该数的个
#include<stdio.h>
intmain()
{
longintm;
inta,b,c,d,e;//代表个十百千万
printf("pleaseintputanumber: ");
scanf("%d",&m);
if(9999<m<1000000)
{
a=m/10000;//万位
b=m%10000/1000;//千位
c=m%10000%1000/100;//百位
d=m%10000%1000%100/10;//十位
e=m%10000%1000%100%10;//个位
}
elseprintf("你输入的数不是五位数 ");
if(a==e&&b==d)
printf("%d为回文 ",m);
return0;
}
Ⅳ 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。C语言编程
既然写了
那就写个通用一点的
给你一个可以随意判断各种位数的数是否为回文数的程序,
当然前提是输入不会超过int类型的表示范围哟
可能不是最好的算法
希望能够抛砖引玉
#include<stdio.h>
#include<math.h>
int
main()
{
int
number
=
0;
int
t
=
0;
/*保存number的位数*/
int
temp
=
0;
/*临时保存number的值*/
int
i;
/*循环变量*/
int
base;
/*临时变量*/
int
s;
/*临时变量*/
printf("请输入一个整数:
");
scanf("%d",
&number);
/*先求出输入整数的位数,一边控制后面的循环的次数*/
temp
=
number;
while(
temp
)
{
t++;
temp
/=
10;
}
temp
=
number;
/*循环对输入整数的各位进行首尾比较,
当确定为5位数时不需要前面的求位数部分,以及应该把t的值设为5*/
for(
i
=
0;
i
<
t;
i=i+2
)
/*这里因为每次都要比较首尾两位,所以循环变量应该加2*/
{
base
=
(int)pow(10,
t-i-1);
/*用base保存与temp位数相同的最小数,比如10,100,1000等*/
s
=
temp
/
base;
/*求temp的最高位的值*/
if(
(
temp
%
10
)
!=
s
)
/*比较s的值是否跟temp的最低位相等,如果不相等则立即停止循环,如果相等则继续循环比较其他位*/
{
break;
}
temp
-=
s
*
base;
/*去掉temp的最高位,因为前面已经比较过了*/
temp
/=
10;
/*去掉temp的最低位,因为前面已经比较过了*/
}
if(
temp
)
/*如果temp不为0,说明提前跳出了循环,因此不是回文数*/
{
printf("%d不是回文数\n",
number);
}
else
{
printf("%d是回文数\n",
number);
}
}