在C语言中,实现一个功能,即接收用户从键盘输入的一个int类型的整数,并准确计算出这个整数的总位数以及其中每个数字(0-9)出现的次数。此过程不仅涉及到基本的数学运算,如取模(%)和除法(/),还需要运用到数组来存储每个数字出现的频率。
例如,如果用户输入了整数16644,则程序应输出该整数共5位,其中包括1个1,2个6,2个4。
以下是程序的运行示例:
输入12226↙
输出:
12226: 5 bits
1: 1
2: 3
6: 1
对于负数的处理,程序同样适用。例如,当输入-12243时,输出为:
-12243: 5 bits
1: 1
2: 2
3: 1
4: 1
为了确保程序能够正确读取用户的输入,采用了标准的输入输出格式:“%d”。同时,为了提供更好的用户体验,程序开始时会显示提示信息:“Please enter the number:
”。随后,程序将按照预设的格式输出计算结果。
以下是实现这一功能的C语言代码片段:
#include
#include
int main() {
printf("Please enter the number:\n");
int num, digit, count = 0, digitsCount[10] = {0};
scanf("%d", &num);
int absNum = num <0 ? -num : num;
while (absNum > 0) {
digit = absNum % 10;
digitsCount[digit]++;
absNum /= 10;
count++;
}
printf("%d: %d bits\n", num, count);
for (int i = 0; i <10; i++) {
if (digitsCount[i] != 0)
printf("%d: %d\n", i, digitsCount[i]);
}
return 0;
}
本题目主要考察点包括:
1. 如何计算一个整数的位数。
2. 如何统计一个整数中每个数字出现的次数。
解决思路:
首先,通过取模操作(num % 10)获取当前整数的最低位数字,并将其计数增加。接着,通过整除10(num /= 10)去除已经处理过的最低位数字,继续处理下一位。重复上述步骤直到整个整数被处理完毕。在此过程中,使用一个大小为10的数组来记录每个数字(0-9)出现的次数。此外,还需特别注意对负数的处理,确保其绝对值被用于计算。