C语言回文数猜想.docx
C语言回文数猜想2.7.1.1 练习1 回文数的猜想 1 2 3 输入一个数 一个数,加上是这个数的倒序数,得出结果 判断是否为回文数,是就退出,否则返回第2步骤 回文数:1336331、9559 典型:输入1735 1753+3571=5324 5324+4235=9559 9559就是一个回文数 程序解答过程: 1 2 设计出各函数功能,便于调用 编码,解答 各函数功能: 输入数据:int input(void) 对数据取逆序:int reverse(int data) 判断回文数:int ispalin(int data) 溢出判断: int isover(int data /palin.c #include<stdio.h> int input(void) int data=-1;/防止赋值失败? for(;) return data; scanf("%d",&data); if(data>=10)/使得输入的数字不小于10 break; scanf("%*n");/取得除了换行n之外的所有字符,抛掉 scanf("%*c");/抛掉换行n int reverse(int data) int ispalin(int data) int isover(int data) int main int data=input; int i; for(i=0;!isover(data);data+=reverse(data) printf("Can not find Palin!n"); return 0; if(!ispalin(data) else printf("Palin:%dn",data); return 0; printf("%d:%d+%d=%dn",+i,data,reverse(data),data+reverse(data); return data<=0|reverse(data)<=0;/当data大小越界,即超过231-1,变成负数 return data=reverse(data); int res=0; for(;data>0;data=data/10)/取得data的的逆序 res=res*10+data%10;/data%10取得data最后一位数字 return res; 知识:unsigned int:232-1 int : 231-1 超过了最大值会越界,越界的数会变成负数 知识盲点: 1) scanf(“%*cn”); 2) scanf(“%*c”); %*c :读取出来,再扔掉,即是把缓冲区清除掉,c是格式控制符,控制把字符类型的输入清除 n 输入的字符除了换行n之外的集合 1的解析:将所有不等于n的字符扔掉 2的解析:将输入的一个字符去掉