Hello,好久没更新啦,今天给大家讲解一下PTA平台上面的“个位数统计”这道题吧~
题目是要统计一个数字每个位上数字出现的次数。下面是一个解决方案的思路和相应的 C 语言代码:
思路:
- 初始化一个大小为10的数组,用于计数每个数字(0-9)出现的次数。
- 读取输入的数字N作为字符串,这样可以处理超长数字并逐个字符检查。
- 遍历字符串,将每个字符转换为整数索引,并在计数数组对应索引处递增。
- 遍历计数数组,按照题目要求的格式打印出现次数不为0的数字及其计数。
#include <stdio.h>
#include <string.h>
int main() {
char N[1001]; // 由于数字可能非常大,我们将其作为字符串读入
int count[10] = {0}; // 初始化计数数组
scanf("%s", N); // 读入数字字符串
// 遍历数字字符串
for (int i = 0; N[i] != '\0'; i++) {
count[N[i] - '0']++; // 更新计数数组,'0'-'0' = 0, '1'-'0' = 1, ... '9'-'0' = 9
}
// 输出每个数字及其出现的次数
for (int i = 0; i < 10; i++) {
if (count[i] > 0) { // 只有当某个数字出现次数大于0时才打印
printf("%d:%d\n", i, count[i]);
}
}
return 0;
}
上面的代码首先读取输入的整数N作为一个字符串。之所以用字符串而不是整数类型,是因为题目提到N可以非常大,超过普通整数类型的存储范围。然后代码中使用count
数组对每个出现的数字进行计数。最后,代码遍历count
数组并打印出现次数。
您可以使用这个代码,并根据您编程环境的需要进行必要的调整。然后编译并运行以检查它是否符合题目要求。希望能够帮助到小伙伴提供更多的解题思路哦,关注叶秋学长不迷路,学长带你们上高速💕