📄 计算回文.txt
字号:
#include<stdio.h>
#include<stdlib.h>
int conver(int m){//求一个整数的逆
int p=0,n=0;
while(m!=0){
p=m%10;
m=m/10;
n=n*10+p;
}
return n;
}
typedef struct Type{
int data;
struct Type *next;
struct Type *prior;
}Type;
int huiwen(int& m,int n){//判断是否为回文,是回文返回1,else 2;
int q=0,s=0,p=0;
Type *r=NULL,*h=NULL,*t=NULL;
q=m+n;
m=q;
h=(Type*)malloc(sizeof(Type));
h->prior=NULL;
h->next=NULL;
t=h;
while(q!=0){
s=q%10;
q=q/10;
r=(Type*)malloc(sizeof(Type));
r->data=s;
r->next=NULL;
r->prior=t;
t->next=r;
t=r;
p++;
}
r=h->next;
while((t!=r)&&(p%2==1)){//整数为奇数位
if(t->data==r->data){
r=r->next;
t=t->prior;
}
else return 0;
}
while(p%2==0){ //整数为偶数位
if(t->data==r->data){
if(r->next==t)return 1;
r=r->next;
t=t->prior;
}
else return 0;
}
return 1;
}
main(){
FILE *fp;
if((fp=fopen("D:\\yt\\yt11.txt","r"))==NULL){
printf("file open error\n");
exit(0);
}
int n=0,m=0,k=0;
int flag=0;//非回文
int num=0;//计数器
while(!feof(fp)){
n=0;
m=0;
flag=0;
fscanf(fp,"%d",&m);
k=m;
num=0;
if(n<0)continue;
printf("****************************************\n");
while(!flag){
n=conver(m);
printf("m=%d n=%d\n",m,n);
flag=huiwen(m,n);
num++;
if(flag==1)printf("m=%d \n",m);
}
printf("the numberm 0f %d sum to huiweng is: %d\n",k,num);
printf("****************************************\n\n");
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -