用C语言编一个程序:给一个不多于5位的正整数,要求: (1)求出它是几位数; (2)分别输出每一位数字; 3)按送序输出各位数字,例如原数为321.应输出123
时间: 2024-11-18 14:04:35 浏览: 11
你可以使用C语言编写以下程序来实现这个功能:
```c
#include <stdio.h>
int main() {
int num, digit;
char digits[6]; // 存储每一位数字
printf("请输入一个不超过5位的正整数: ");
scanf("%d", &num);
if(num <= 0 || num >= pow(10, 5)) { // 检查输入是否合法
printf("错误: 输入的数超过范围!\n");
return 1;
}
int len = 0; // 记录数字位数
while(num > 0) {
digits[len] = num % 10; // 取余数得到最后一位
num /= 10; // 移除最后一位
len++; // 增加位数计数
}
digits[len] = '\0'; // 添加字符串结束符
printf("该数有%d位:\n", len);
for(int i = 0; i < len; i++) {
printf("%d", digits[i]); // 输出每一位数字
if(i != len - 1) printf(", "); // 非最后一个数字间用逗号隔开
}
// 按升序输出各位数字
int sorted[] = {digits[0], digits[1], digits[2], digits[3], digits[4]};
qsort(sorted, len, sizeof(int), compare_ints); // 使用快速排序算法
printf("\n按顺序输出为: ");
for(int i = 0; i < len; i++) {
printf("%d", sorted[i]);
if(i != len - 1) printf(", ");
}
return 0;
}
// 升序比较函数
int compare_ints(const void *a, const void *b) {
return (*(const int*)a - *(const int*)b);
}
```
在这个程序中,我们首先通过循环从输入的数中提取每一位数字并存储到数组`digits`中。然后,我们使用快速排序对数组进行排序,并输出结果。
阅读全文