C语言实现以下功能 有一个不多于5位的正整数,要求: ·求出它是几位数。 ·分别打印出每一位数字。 ·按逆序打印出各位数字,例如原数为321,应输出123。 ·输出四个整数,要求按大小顺序输出。
时间: 2024-12-06 07:23:42 浏览: 24
在C语言中,你可以通过以下步骤实现这个功能:
1. **求位数**:
```c
int num, digit, length = 0;
scanf("%d", &num); // 输入正整数
while (num != 0) {
digit = num % 10; // 取余数得到最后一位
length++;
num /= 10; // 除以10去掉最低位
}
printf("该数共有%d位。\n", length);
```
2. **打印每位数字**:
```c
for (int i = 0; i < length; i++) {
printf("%d", num % 10);
num /= 10;
if (i != length - 1) {
printf(", ");
}
}
printf("\n");
```
3. **逆序打印**:
```c
int reversed_num = 0;
for (int i = length - 1; i >= 0; i--) {
reversed_num = reversed_num * 10 + digit;
digit = num % 10;
num /= 10;
}
printf("逆序后为:%d\n", reversed_num);
```
4. **按大小顺序输出四个整数**:
这里假设有四个整数可以输入,如果没有限制,需要额外说明。如果有固定值,可以直接写出;如果不确定,可以让用户再次输入:
```c
// 假设已知四个整数a、b、c、d
int a, b, c, d;
// 输入四个数并排序
if (length >= 4) {
scanf("%d %d %d %d", &a, &b, &c, &d);
int temp[4];
temp[0] = a;
temp[1] = b;
temp[2] = c;
temp[3] = d;
qsort(temp, 4, sizeof(int), compare_ints);
printf("按大小顺序为:%d %d %d %d\n", temp[0], temp[1], temp[2], temp[3]);
}
// 比较函数
int compare_ints(const void* a, const void* b) {
return (*(const int*)a - *(const int*)b);
}
```
阅读全文