给出一个十进制正整数 n,按从大到小的顺序输出其中包含的所有数字 C语言
时间: 2024-03-22 10:42:25 浏览: 129
给定一个十进制正整数N,程序输出从1到N的所有整数中,“1”出现的个数。DMU
5星 · 资源好评率100%
可以按照以下步骤解决这个问题:
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);
```
阅读全文