根据整数的长度来分段重新组合生成新数。输入多个偶数位数的整数m,将数平均分为两段:前半段为s,后半段为t,将前后半段交换,构成一个新的整数,并输出,不保留高位零。当输入数据为-1时结束。 输入:3025 输出:2530 输入:456089 输出:89456 c语言输出
时间: 2024-10-24 20:13:56 浏览: 24
2010三级网络技术南开100
在 C 语言中,你可以通过以下步骤实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数定义来处理输入并返回新的整数
int reverseAndCombine(int num) {
if (num == -1) { // 结束条件
return -1;
}
int len = snprintf(NULL, 0, "%d", num); // 计算数字的位数
char str[len + 1]; // 定义字符串来存储整数
snprintf(str, sizeof(str), "%d", num); // 将整数转换为字符串
// 分割字符串并反转后半部分
int half_len = len / 2;
char *first_half = str;
char *second_half = str + half_len;
while (*second_half != '\0') {
char temp = *second_half;
*second_half++ = *first_half++;
*first_half++ = temp;
}
// 重新组合并去掉多余的零
int new_num = strtol(first_half, NULL, 10);
// 如果新数的前导零不是最高位,则去掉它们
while (new_num && !*(str + 1)) {
new_num /= 10;
}
return new_num;
}
int main() {
int input;
while (scanf("%d", &input) == 1) {
printf("%d\n", reverseAndCombine(input));
}
return 0;
}
```
这段代码首先检查输入是否为-1,如果是则退出。然后计算输入整数的位数,将其转换为字符串形式。接着分割字符串,反转后半部分,再组合成新的整数。最后会去掉新数前面不必要的零。
运行此程序,它将按照要求处理每个输入的整数,并打印出结果。
阅读全文