用C语言编写算法代码:输入一个5位数以内的正整数,完成以下操作: 1.判断它是一个几位数。 2.请按序输出其各位数字。 3.逆序输出其各位数字。
时间: 2024-10-14 08:14:06 浏览: 42
在C语言中,我们可以创建一个结构体来处理这个问题,包含输入的整数及其对应的长度和逆序的数组。以下是实现该功能的代码:
```c
#include <stdio.h>
#include <string.h> // 需要字符串库来处理数组
typedef struct {
int num;
int length;
char reversed_digits[6]; // 假设输入不超过5位数
} NumberInfo;
NumberInfo process_number(int input) {
NumberInfo info;
info.num = input;
info.length = (input == 0) ? 1 : (input < 10) ? 1 : __builtin_popcount(input); // 计算位数,0和1位数特殊处理
// 按顺序输出各位数字
char digits[6];
int index = 0;
while (input > 0) {
digits[index++] = input % 10 + '0'; // 加上'0'转换为字符
input /= 10;
}
digits[index] = '\0'; // 添加终止符
info.reversed_digits = digits;
// 逆序输出各位数字
reverse(info.reversed_digits, 0, index - 1);
return info;
}
void print_info(NumberInfo info) {
printf("输入的5位数是:%d\n", info.num);
printf("位数:%d\n", info.length);
printf("按序输出:");
for (char digit : info.reversed_digits) {
printf("%d", digit);
}
printf("\n");
printf("逆序输出:");
for (char digit : info.reversed_digits) {
printf("%d", digit);
}
printf("\n");
}
int main() {
int input;
printf("请输入一个5位数内的正整数:");
scanf("%d", &input);
NumberInfo result = process_number(input);
print_info(result);
return 0;
}
// 函数来反转字符串数组
void reverse(char* str, int start, int end) {
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
阅读全文