给一个不多于5位的数,要求:用c/c++完成1、求出它是几位数;2、分别输出每一位数字;3、按逆序输出各位数字。
时间: 2024-10-29 10:16:43 浏览: 12
在C/C++中,你可以通过以下几个步骤来完成这个任务:
1. **确定位数**:
- 使用`strlen()`函数可以获取字符串长度,对于整数输入,需要先转换成字符数组,例如`char num[6] = {0}; scanf("%d", &num);`
- 计算并存储位数:`int digits = (strlen(num) == 0 ? 1 : strlen(num));`
2. **遍历每位数字**:
- 使用`for`循环从高位到低位遍历每一位:`for(int i = digits - 1; i >= 0; --i)`
- 获取当前位的数字:`int digit = num[i] - '0';`这里减去ASCII码'0'将字符转为整数
3. **输出每一位**:
- 可以使用`printf`或类似函数直接打印:`printf("第%d位数字:%d\n", i+1, digit);`
4. **逆序输出各位数字**:
- 另外一个`for`循环从低位到高位:`for(int j = 0; j < digits; ++j)`
- 使用类似上述的方式获取和打印数字:`printf("逆序第%d位数字:%d\n", j+1, num[j] - '0');`
下面是完整的代码示例:
```cpp
#include <stdio.h>
#include <string.h>
int main() {
char num[6];
int digits;
printf("请输入一个不超过5位的数:");
scanf("%d", num);
digits = (strlen(num) == 0 ? 1 : strlen(num));
for(int i = digits - 1; i >= 0; --i) {
int digit = num[i] - '0';
printf("第%d位数字:%d\n", i + 1, digit);
}
for(int j = 0; j < digits; ++j) {
int digit = num[j] - '0';
printf("逆序第%d位数字:%d\n", j + 1, digit);
}
return 0;
}
```
阅读全文