#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void check(int* Hui)//这个函数用来检测是否是5位数
{
int i;
int count=0;//计数变量
char lenth[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("go on..");
}
else{
puts("your input is error!");
exit(0);
}
}
int main()
{
int* Huiwenshu=NULL; //也可以用int Huiwenshu[6];,推荐前一种
int Last_digit;//末位数字
int First_digit;//首位数字
int Thou_digit;//千位数字
int Ten_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);
return 0;
}
}
else{
}
free(Huiwenshu);//释放内存
return 0;
}
代码里的注释很清晰,如果不懂再问噢。其实还有另一种方法,就是直接定义一个int型数组,然后通过取对应的位数进行比较,然后得出结果,不过这种方法通用性较低,但是也行。