C语言回文串 | 您所在的位置:网站首页 › 写回文句 › C语言回文串 |
回文数、回文字符串的判断
一、回文数,回文串的描述:
形如 ‘1 2 3 4 3 2 1’ 这样的数字,我们称为回文数。 形如 ‘ a s d 1 2 3 2 1 d s a ’ 这样的字符串,我们称为回文串。 注:即正着读和反着读可以得到同样的结果 二、回文字符串的判断(1).通过一维动态数组从键盘读入要判断的字符串。 a=(char*)malloc(sizeof(char)*len); for(int i=0;i char temp; for(int i=0;i for(int i=0;i for(int i=0;i printarray(array_record,len); printf(" is a palindrome number string!"); } else { printarray(array_record,len); printf(" is not a palindrome number string!"); } return 0; } 调试结果:例如:请输出1000~10000的回文数。 想想要是把每一个数都进行字符数组存储,然后转置,在进行判断是否为回文数,那么这个算法的复杂度就超出我们想象了。于是我们提出了逆数处理(就是把这个数反向表达,如123 转换为321,其实也是逆置的思想)下面来看看具体如何做吧~~~~~ 一、我们需要输入要求的范围:(如1000~10000) 二、算法设计: int re=0;//存放逆置的数 int j = i;//标记要判断的数 while(i>0) { re*=10;//将取出来的数(十位变百位) re+=i%10;//取出高位数字 i/=10;//这个数缩小10,进行下一个高位处理 } 三、源代码 #include #include int palindrome(int i) { int re=0;//存放逆置的数 int j = i;//标记要判断的数 while(i>0) { re*=10;//将取出来的数(十位变百位) re+=i%10;//取出高位数字 i/=10;//这个数缩小10,进行下一个高位处理 } if(re==j) return 1; else return -1; } int main() { int xia_xian,shang_xian,j; printf("please input the bound of number:"); fflush(stdout); scanf("%d %d",&xia_xian,&shang_xian); for(int i=xia_xian;i printf("%4d ",i); j++; } if(j==10) { printf("\n"); j=0; } } return 0; } 调试结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |