编写一个程序,当用户输入一个整数时,统计并显示该数字中每个不同数字(0-9)出现的次数,按升序排列输出仅出现过的数字。注意,未出现的数字不应出现在输出结果中。c语言
时间: 2024-10-29 14:20:40 浏览: 25
简单的C语言程序示例,用于统计一个非负整数中每个位上的数字出现的次数.pdf
为了编写这个程序,你可以使用C语言的数组、循环以及一些简单的数据结构如哈希表(在这个场景下,可以简化为一维数组,因为范围限定在0-9)。以下是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_DIGITS 10
int count[10] = {0}; // 初始化计数数组,所有元素默认为0
void inputAndCount(int num) {
while (num > 0) {
int digit = num % 10; // 取余数得到当前位的数字
count[digit]++;
num /= 10; // 将数字右移一位
}
}
void displayCounts() {
for (int i = 0; i < MAX_DIGITS; i++) {
if (count[i] > 0) {
printf("%d appears %d times.\n", i, count[i]);
}
}
}
int main() {
int number;
printf("Enter an integer: ");
scanf("%d", &number);
inputAndCount(number);
displayCounts();
return 0;
}
```
这个程序首先通过`inputAndCount`函数获取用户输入的整数,并记录每个数字的出现次数。然后,`displayCounts`函数遍历数组,只打印那些出现过的数字及其对应的次数。
**相关问题--:**
1. 这段代码如何处理负数和非整数输入?
2. 如果我想优化存储空间,有没有更合适的数据结构?
3. 如果用户连续输入了相同的数字,计数会怎样?
阅读全文