沈阳seo网站推广优化,iis ip访问网站,游戏网站建设与策划书,广州专业网站实验八
题目描述
从键盘上输入任意一个整数#xff08;正负数皆可#xff09;#xff0c;判断该整数的绝对值是否为回文数。#xff3b;提示#xff1a;取数的绝对值#xff0c;然后使用用循环语句从该绝对值的末位开始至最高位#xff0c;重新构造一个数#xff0c;…实验八
题目描述
从键盘上输入任意一个整数正负数皆可判断该整数的绝对值是否为回文数。提示取数的绝对值然后使用用循环语句从该绝对值的末位开始至最高位重新构造一个数判断该数与原绝对值是否相等。
方法1 数字法
对于一个数逐个取出个位数在下次循环时一次乘10实现向左移动一位然后当变量为0结束时。
举个例子
input: a 323
variable: n 323 y 0
loop(0): t n % 10 3y y * 10 0y y t 3n n / 10 32
loop(1): t n % 10 2y y * 10 30y y t 32n n / 10 3
loop(2): t n % 10 3y y * 10 320y y t 323n 0end核心代码
while(n!0)
{t n % 10;y y * 10;y y t;n n/ 10;
}推荐简便一点
while( n!0 ){y y * 10 n % 10;n n / 10;}完整代码
#include stdio.hint main()
{int a,x,y,n;printf(输入一个整数);scanf(%d,a);x a0 ? a : -a;n x;y 0;while( n!0 ){y y * 10 n % 10;n n / 10;}if( x y )printf (%d的绝对值是回文数\n,a);elseprintf (%d的绝对值不是回文数\n,a);return 0;
}
方法2 字符串法
首尾相互判断两元素是否相等当元素相等时继续循环不相等时退出循环
// 核心代码while (i len/2) // 只需要判断到一半位置{if ( str[i] str[len-1-i] ) //数组最后一个元素的下标是 len-1i;else{printf (输入数的绝对值不是回文数.\n);return 0; // 直接结束循环}}完整代码
#includestdio.h
#includemath.h
#includestring.hint main ()
{int x, y, len, i;char str[100];printf (请输入一个整数:\n);scanf (%d, x);y abs(x);sprintf(str, %d, y);len strlen(str);i 0;while (i len/2){if ( str[i] str[len-1-i] ) //数组最后一个元素的下标是 len-1i;else{printf (输入数的绝对值不是回文数.\n);return 0;}}printf (输入数的绝对值是回文数.\n);return 0;
}