用c语言给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别输出每一位数字; (3)按逆序输出各位数字,例如原数为321,应输出123。注意:用例中冒号为英文冒号,逗号为英文逗号。
时间: 2024-11-20 21:30:28 浏览: 35
在C语言中,你可以通过以下步骤实现这个功能:
1. **确定位数**:
使用`<string.h>`库中的`strlen()`函数计算字符串的长度,减去1就得到位数。因为我们要处理的是正整数,所以会将它转换成字符串。
```c
#include <stdio.h>
#include <string.h>
int getDigitCount(char num[]) {
int count = strlen(num);
return count > 5 ? -1 : count; // 如果超过5位返回-1表示错误
}
```
2. **输出每位数字**:
可以遍历字符串,每次取出一位字符并打印。
```c
void printDigits(char num[], int n) {
for (int i = 0; i < n; i++) {
printf("%d", num[i] - '0'); // 把字符转为数字
if (i != n - 1) { // 避免最后一个数字后的空格
printf(": ");
}
}
printf("\n");
}
```
3. **逆序输出各位数字**:
另外创建一个新的数组,从后向前遍历原始数组,并添加到新数组中。
```c
void reversePrintDigits(char num[], int n) {
char reversed[6]; // 确保足够存储5位及以下的数字
for (int i = n - 1; i >= 0; i--) {
reversed[i] = num[i];
}
printf("Reversed: ");
printDigits(reversed, n);
}
```
整合以上部分:
```c
int main() {
char num[6]; // 输入不超过5位的正整数
scanf("%s", num);
int digit_count = getDigitCount(num);
if (digit_count == -1) {
printf("Error: Number exceeds 5 digits.\n");
} else {
printf("Number of digits: %d\n", digit_count);
printDigits(num, digit_count);
reversePrintDigits(num, digit_count);
}
return 0;
}
```
阅读全文