c语言 逆序数的拆分计算 从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算41000+3100+2*10+1 = 4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。
时间: 2024-02-09 21:12:04 浏览: 116
下面是一个实现上述功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int n, m, i, j, a[4], b[4], sum = 0, x, y;
printf("请输入一个4位数的整数:");
scanf("%d", &n);
n = abs(n); // 取绝对值
for (i = 0; i < 4; i++) {
a[i] = n % 10; // 取各位数字
n /= 10;
}
for (i = 0, j = 3; i < 4; i++, j--) {
b[i] = a[j]; // 得到逆序数
sum += b[i] * pow(10, j); // 计算逆序数的值
}
printf("逆序数为:%d\n", sum);
x = sum / 100; // 拆分成两个2位数
y = sum % 100;
printf("%d的平方加%d的平方等于%d\n", x, y, x * x + y * y); // 计算平方和
return 0;
}
```
代码的实现思路如下:
1. 首先从键盘输入一个4位数的整数n,并取其绝对值。
2. 然后依次取出n的各位数字,存储到数组a中。
3. 再从a中得到逆序数b,并计算逆序数的值sum。
4. 将sum拆分为两个2位数x和y。
5. 最后计算x和y的平方和并输出。
需要注意的是,本题中要求忽略整数前的正负号,因此需要先取绝对值再进行计算。
阅读全文