C程序设计. 给一个不多于5位的正整数 要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出各位数字,例如原数为321,应输出123。
时间: 2024-10-28 18:09:56 浏览: 55
C语言逻辑结构程序设计整理.pdf
在C程序设计中,要实现这个功能,你可以创建一个函数,接受一个整数作为输入,并通过一系列的条件判断和操作来完成所需的任务。以下是简单的步骤:
1. **确定位数**:
首先,你需要获取整数的长度(位数)。可以使用`sizeof`运算符配合`CHAR_BIT`常量来计算,因为每个字符通常有8位(ASCII码),所以除以8即可得到位数。
```c
#include <stdio.h>
#include <climits>
int getDigitCount(int num) {
return (int)(log10(num) + 1);
}
```
2. **输出每一位**:
使用循环结构遍历每一位。从最高位开始,每次对`num`取模10,然后输出结果。
```c
void printEachDigit(int num, int digit_count) {
for (int i = digit_count - 1; i >= 0; i--) {
printf("%d", num % 10);
num /= 10;
}
printf("\n");
}
```
3. **逆序输出**:
同样使用循环,但是这次是从最低位到最高位,将每位数字添加到字符串中,最后再打印出来。
```c
void reversePrint(int num, int digit_count) {
char reversed[10] = {0};
for (int i = 0; i < digit_count; i++) {
reversed[i] = (num % 10) + '0';
num /= 10;
}
// 将逆序的字符串转换回整数并输出
int reversed_num = 0;
for (int i = 0; i < digit_count; i++) {
reversed_num = reversed_num * 10 + reversed[i];
}
printf("Reversed: %d\n", reversed_num);
}
```
把这三个部分组合在一起:
```c
int main() {
int input;
printf("Enter a positive integer with at most 5 digits: ");
scanf("%d", &input);
if (input <= 0 || getDigitCount(input) > 5) {
printf("Invalid input! Please enter a positive number with up to 5 digits.\n");
return 0;
}
int digit_count = getDigitCount(input);
printEachDigit(input, digit_count);
reversePrint(input, digit_count);
return 0;
}
```
在这个程序中,用户需要输入一个不超过5位的正整数,程序会输出它的每一位、正常顺序下的每一位以及逆序的每一位。如果输入不符合要求,程序会给出错误提示。
阅读全文