C语言回文数猜想.docxVIP

  • 50
  • 0
  • 约1.14千字
  • 约 3页
  • 2017-06-07 发布于重庆
  • 举报
C语言回文数猜想

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

文档评论(0)

1亿VIP精品文档

相关文档