输入一个十进制数,统计出现的数字的次数并且由高到低输出
时间: 2024-02-13 11:02:34 浏览: 10
好的,我可以帮你实现这个功能。以下是 Python 代码实现:
```python
def count_digits(n):
# 将数字转换成字符串
str_n = str(n)
# 统计每个数字出现的次数
count = {}
for digit in str_n:
count[digit] = count.get(digit, 0) + 1
# 将统计结果按照出现次数从高到低排序
sorted_count = sorted(count.items(), key=lambda x: x[1], reverse=True)
# 输出结果
for item in sorted_count:
print("{}: {}".format(item[0], item[1]))
```
这个函数会接收一个十进制数作为参数,将它转换成字符串,并统计每个数字出现的次数。然后,将统计结果按照出现次数从高到低排序,并输出结果。
你可以这样调用这个函数:
```python
count_digits(123456789)
```
输出结果如下:
```
1: 1
2: 1
3: 1
4: 1
5: 1
6: 1
7: 1
8: 1
9: 1
```
可以看到,函数正确地统计了数字出现的次数,并且按照出现次数从高到低排序输出了结果。
相关问题
输入一个十进制整数,统计其中每个基数出现的次数,并按出现频次由高到低输出python
好的,以下是实现该功能的 Python 代码:
```python
num = int(input("请输入一个十进制整数: "))
digits = [0] * 10
# 统计每个基数出现的次数
while num > 0:
digits[num % 10] += 1
num //= 10
# 按出现频次由高到低输出
for i in range(9, -1, -1):
max_idx = 0
for j in range(1, 10):
if digits[j] > digits[max_idx]:
max_idx = j
if digits[max_idx] > 0:
print(f"{max_idx}: {digits[max_idx]}")
digits[max_idx] = 0
```
运行程序后,输入一个十进制整数,程序会输出每个基数出现的次数,按出现频次由高到低排序。例如,如果输入的整数为 123321,输出结果如下:
```
1: 2
3: 2
2: 2
```
这表示数字 1、3、2 分别出现了 2 次。
给出一个十进制正整数 n,按从大到小的顺序输出其中包含的所有数字 C语言
可以按照以下步骤解决这个问题:
1. 将数字 n 转换为字符串,可以使用 sprintf() 函数实现。
2. 遍历字符串,统计每个数字的出现次数,可以使用一个整型数组来存储。
3. 按照数字从大到小的顺序遍历整型数组,输出数字及其出现次数,可以使用 for 循环实现。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int num_count[10] = {0};
char str_num[100];
int i, len;
printf("请输入一个正整数:");
scanf("%s", str_num);
len = strlen(str_num);
for (i = 0; i < len; i++) {
num_count[str_num[i] - '0']++;
}
printf("该正整数中包含的数字及其出现次数为:\n");
for (i = 9; i >= 0; i--) {
if (num_count[i] > 0) {
printf("%d: %d\n", i, num_count[i]);
}
}
return 0;
}
```
注意,上述代码中需要输入一个正整数,如果需要从命令行参数中获取,可以将 scanf() 函数替换为 sscanf() 函数,如下所示:
```c
sscanf(argv[1], "%s", str_num);
```