所谓回文数,指一个正整数,从左往右依次输出各数位与从右往左依次输出各数位是相同的,例如:12321是一个回文数,而12320不是回文数 输入一个double型整数,如123454321,判断是否为回文数。 【输入形式】一行一个非负整数 【输出形式】YES 或 NO 【样例输入】12321 【样例输出】YES blob.png 【样例说明】12321是一个回文数 【评分标准】5组测试用例,每组2分,共计10分 #include <stdio.h> #include <math.h> int is_huiwen(long x){ int a[100],i=0,p;//此题请关注注意a[]数组的使用,x的数位将保留在数组中 while(x){ ;//将数位保存在数组,请注意下标的变化 x/=10; } for(p=0;p<(i-1)/2;p++) if( ) return 0;//判断数组元素是否相等 return 1; } int main(){ long x; scanf("%ld",&x); if(is_huiwen(x)) printf("YES"); else printf("NO"); return 0; }
时间: 2023-12-25 09:02:54 浏览: 41
这里给出一份代码,供参考:
```c
#include <stdio.h>
#include <string.h>
int main() {
double n;
scanf("%lf", &n);
char str[100];
sprintf(str, "%.0lf", n);
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
printf("NO");
return 0;
}
}
printf("YES");
return 0;
}
```
这个程序的思路是将输入的 double 类型的数转换为字符串,然后判断这个字符串是不是回文串。由于 double 类型的数可能很大,因此我们需要使用 `sprintf` 函数将其转换为字符串,然后再进行判断。
相关问题
所谓回文数,指一个正整数,从左往右依次输出各数位与从右往左依次输出各数位是相同的,例如:12321是一个回文数,而12320不是回文数 输入一个double型整数,如123454321,判断是否为回文数。 【输入形式】一行一个非负整数 【输出形式】YES 或 NO 【样例输入】12321 【样例输出】YES
好的,这是一道简单的回文数判断题目,我可以给你提供一个 C++ 的代码实现,你可以参考一下:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
double num;
cin >> num;
string s = to_string(num); // 将 num 转换为字符串
int len = s.length();
for (int i = 0; i < len / 2; i++) {
if (s[i] != s[len - i - 1]) { // 判断对称位置上的字符是否相等
cout << "NO" << endl;
return 0;
}
}
cout << "YES" << endl;
return 0;
}
```
这里使用了 `to_string()` 函数将输入的 `num` 转换为字符串,然后使用双指针法判断对称位置上的字符是否相等即可。
如何将一个大整数从右往左没两位分成一组
可以先将大整数转换为字符串,然后从字符串的右边开始每两位截取一次,直到字符串的最左边。具体实现可以使用循环和字符串切片操作。下面是一个 Python 代码示例:
```python
num = 1234567890
num_str = str(num)
group_list = []
for i in range(len(num_str)-1, -1, -2):
if i == 0:
group_list.append(num_str[i])
else:
group_list.append(num_str[i-1:i+1])
group_list.reverse()
print(group_list)
```
输出结果为:
```
['12', '34', '56', '78', '90']
```