代码如下:
//013:由正整数产生回文数。回文数就是正、反读都相同的数,如:484;4884等等。 //根据回文数的计算方法,当进行30次加法后仍得不出回文数,则判定为overflow #include运行结果:int main() { int original,reverse,org;//original原始数、reverse翻转后的数 int m,n,t; char ch; do{ printf("请输入正整数:n"); scanf("%d",&n); t=0;//t计数,回文数计算次数 m=n;//m记录输入的正整数 do{ original=n; reverse=0; org=n; do{ reverse=reverse*10+org%10; org=org/10; }while(org!=0);//reverse变为original的逆序数 n=original+reverse;//n由两者相加 t++;//记录加法次数 }while(reverse!=original&&t<=30);//当reverse和original相同时则回文数已生成完毕,或者相加30次还未得到回文数,此时退出循环 if(reverse==original) {printf("由正整数%d产生的回文数是%dn",m,original);}//输出得到的回文数 else{printf("overflow!n");} printf("ncontinue? y/nn"); scanf(" %c",&ch); }while(ch!='N'&&ch!='n'); printf("ENDn"); return 0; }
请输入正整数: 275 由正整数275产生的回文数是44044 continue? y/n y 请输入正整数: 196 overflow! continue? y/n y 请输入正整数: 35687 由正整数35687产生的回文数是157751 continue? y/n N END 按任意键关闭终端。



