?? 計算回文.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 + -