输入一个不多于5位的正整数,要求: (1)求出它的位数并输出; (2)分别输出每一位数字; (3)按逆序输出每一位数字,例如原数为321,则输出123。
时间: 2023-05-17 09:05:11 浏览: 62
好的,这是一个简单的数学问题,我可以回答。以下是代码实现:
```
#include <stdio.h>
int main() {
int num, digit, count = 0;
int arr[5];
printf("请输入一个不多于5位的正整数:");
scanf("%d", &num);
// 计算位数并输出
digit = num;
while (digit > 0) {
digit /= 10;
count++;
}
printf("该数的位数为:%d\n", count);
// 分别输出每一位数字
digit = num;
for (int i = count - 1; i >= 0; i--) {
arr[i] = digit % 10;
digit /= 10;
printf("第%d位数字为:%d\n", i + 1, arr[i]);
}
// 按逆序输出每一位数字
printf("按逆序输出每一位数字:");
for (int i = 0; i < count; i++) {
printf("%d", arr[i]);
}
printf("\n");
return 0;
}
```
输入一个不多于5位的正整数,程序会输出该数的位数,并分别输出每一位数字,最后按逆序输出每一位数字。
相关问题
C语言给一个不多于5位的正整数,要求: 1:求出它是几位数; 2:分别输出每一位数字;
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 求出整数的位数:
可以使用`log10`函数(或者`log`函数配合`L`进制标志)来得到整数的以10为底的对数,然后加1即可。因为`log10(10^n)`的结果就是n,所以对数结果减去1就是位数。
```c
#include <stdio.h>
#include <math.h>
int main() {
int num;
printf("请输入一个不超过5位的正整数: ");
scanf("%d", &num);
if (num <= 0) {
printf("输入错误! 数字必须是正整数.\n");
return 1;
}
int digits = floor(log10(num)) + 1;
printf("该数有%d位.\n", digits);
return 0;
}
```
2. 分别输出每一位数字:
对于每一位数字的获取,可以使用循环和取模运算 `%`。从最低位开始,每次用数字除以10并取余数,余数就是当前位的值。
```c
void print_digits(int num, int digits) {
for (int i = digits - 1; i >= 0; i--) {
int digit = num % 10;
printf("%d", digit);
num /= 10;
}
printf("\n");
}
// 调用上面的函数
int main() {
//...
print_digits(num, digits); // 输出每一位数字
return 0;
}
```
注意:此代码会先计算位数,再打印数字。如果需要直接从输入验证并逐位打印,可以在读入数字的同时进行操作。
4.7 给一个不多于5位的正整数,要求:①求出它是几位数; ②分别输出每一位数字;
输入一个不多于5位的正整数,可以先将其转换为字符串,然后利用字符串长度函数 len() 求出它是几位数,再用字符串切片或循环遍历字符串取出每一位数字。
示例代码:
```python
num = input("请输入一个不多于5位的正整数:")
length = len(num)
print("它是{}位数".format(length))
print("每一位数字分别为:")
for i in range(length):
print(num[i])
```
运行示例:
```
请输入一个不多于5位的正整数:1234
它是4位数
每一位数字分别为:
1
2
3
4
```
阅读全文