用c语言编写【问题描述】 编写程序,输入一个三位数,分离出它的百位、十位和个位数,反转后输出该三位数。 【样例输入】 在一行中输入一个三位数。 【样例输出】 反转输出该三位数。 【样例输入】 127 【样例输出】 721
时间: 2024-10-16 16:02:31 浏览: 41
在 C 语言中,你可以使用结构体和数组来解决这个问题。首先定义一个结构体表示每一位数字,然后通过输入获取三位数,再分别取出每一位并存储在结构体数组中。接着对数组中的元素进行反转操作,并将结果拼接成新的字符串。最后打印出反转后的数字。
下面是一个简单的 C 语言代码示例:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体表示每一位数字
typedef struct {
int digit;
} Digit;
// 函数用于反转数组
void reverse(Digit digits[], int len) {
for (int i = 0; i < len / 2; i++) {
int temp = digits[i].digit;
digits[i].digit = digits[len - 1 - i].digit;
digits[len - 1 - i].digit = temp;
}
}
int main() {
char input[4]; // 存储输入的三位数字符串
scanf("%s", input); // 输入三位数
if (strlen(input) != 3 || input[0] < '0' || input[0] > '9' ||
input[1] < '0' || input[1] > '9' || input[2] < '0' || input[2] > '9') {
printf("输入错误,请输入一个三位数。\n");
return 1;
}
Digit digits[] = { { atoi(&input[0]) }, { atoi(&input[1]) }, { atoi(&input[2]) } };
int length = sizeof(digits) / sizeof(Digit);
reverse(digits, length);
// 输出反转后的数字
for (int i = 0; i < length; i++) {
printf("%d", digits[i].digit);
}
printf("\n");
return 0;
}
```
**相关问题--:**
1. 这段代码中的`atoi()`函数是用来做什么的?
2. 如果输入的是四位数,这段代码会怎样处理?
3. 如何优化这个程序以处理更大的数值范围?
阅读全文