#include
#include
int main()
int main():这是C语言程序的入口函数,程序从这里开始执行。
int x;
int count[10];
int i;
int x;:声明了一个整数变量 x,用来存储用户输入的数字。
int count[10];:声明了一个长度为10的整数数组 count,用来统计每个数字(0到9)出现的次数。数组的索引 0 对应数字 0,索引 1 对应数字 1,以此类推。
int i;:声明了一个整数变量 i,通常用作循环中的计数器。
for (i = 0; i < 10; i++)
{
count[i] = 0;
}
这段代码通过一个 for 循环将数组 count 中的每个元素初始化为 0。即:
count[0] = 0;
count[1] = 0;
...
count[9] = 0;
目的是将所有数字的计数初始化为0,准备开始统计。
scanf("%d", &x);
while (x != -1)
{
if (x >= 0 && x <= 9)
{
count[x]++;
}
scanf("%d", &x);
}
scanf(“%d”, &x);:该行用于读取用户输入的数字,将其存储在 x 变量中。%d 表示输入的是一个整数。
while (x != -1):这是一个 while 循环,当 x 不等于-1时,循环会继续执行。-1是用来结束输入的标志,程序会在输入-1时终止。
if (x >= 0 && x <= 9):该条件判断确保只有数字 0 到 9 被统计。如果输入的数字不在0到9之间,它就不会影响数组 count。
如果输入的 x 是0到9之间的数字,就通过 count[x]++ 增加对应索引处的计数值。
比如,输入 3 时,count[3]++,就表示数字3出现了一次。
scanf(“%d”, &x);:再次读取输入的数字,直到用户输入 -1。
for (i = 0; i < 10; i++)
{
printf("%d:%d\n", i, count[i]);
}
for (i = 0; i < 10; i++):这个 for 循环遍历了数组 count 的每个元素。数组的索引从 0 到 9。
printf(“%d:%d\n”, i, count[i]);:在每次循环中,打印出数字 i 及其出现的次数 count[i]。例如:
如果数字 3 出现了5次,程序会输出 3:5。
return 0;
return 0;:主函数的返回值为 0,表示程序正常结束。
这段代码的功能是:
用户输入多个数字,程序统计每个数字(0到9)出现的次数。
用户输入 -1 时,程序停止输入并输出结果。
例如,假设用户输入的数字是:
1 2 3 3 4 4 4 5 6 6 7 -1
程序将输出:
0:0
1:1
2:1
3:2
4:3
5:1
6:2
7:1
8:0
9:0
1.初始化计数器:
使用一个整数数组 count[10] 来记录数字0到9出现的次数。数组的每个元素对应一个数字的出现次数,比如 count[0] 记录数字0的出现次数,count[1] 记录数字1的出现次数,依此类推。
在程序开始时,使用 for 循环将数组 count 初始化为0,因为一开始我们没有统计任何数字。
2.输入处理:
使用 scanf 读取用户输入的数字,并将其存入变量 x。
通过 while (x != -1) 循环,程序会持续读取输入,直到用户输入 -1,表示结束输入。
如果输入的数字在0到9之间(包括0和9),就增加对应数字的计数(count[x]++)。
通过条件判断 if (x >= 0 && x <= 9) 来确保只有数字0到9才会被统计,其他输入(如负数或者大于9的数字)不会影响统计结果。
3.输出统计结果:
输入结束后,使用一个 for 循环遍历数组 count,输出每个数字及其出现的次数。printf(“%d:%d\n”, i, count[i]); 打印出数字 i 和它在输入中出现的次数。
1.使用数组进行频率统计:
通过数组 count[10] 来保存每个数字的频率,这是非常简洁和高效的方法。数组的索引自然对应了数字0到9,因此可以很方便地用数组下标来统计和访问每个数字的出现次数。
这也避免了使用多个变量来分别存储每个数字的计数,代码更加整洁。
2.利用数组索引直接访问数字:
数字 x 被直接用作数组 count 的索引。比如,输入数字3时,count[3] 就对应了数字3的计数。这种巧妙的设计使得我们可以用一个简单的 count[x]++ 来完成计数操作,而不需要编写冗长的条件判断代码。
3.灵活的输入处理:
程序使用了 scanf(“%d”, &x); 来读取输入,且每次读取后立即判断是否是有效的数字(范围在0到9之间)。这种结构使得输入过程非常灵活,且简单易懂。通过这种方式,程序可以轻松处理多个输入。
4.快速终止输入:
输入的结束条件通过 x != -1 控制,-1 作为一个特殊标记,提示用户输入结束。用户只需输入 -1 即可结束输入,不需要额外的命令或提示。这个设计简化了用户交互的复杂度。
5.避免重复代码:
程序的核心功能只有几个关键步骤(初始化数组、处理输入、输出结果),而每个步骤的逻辑都很简洁。数组的使用避免了重复的代码,如不需要手动为每个数字写多个 if 判断,也没有复杂的循环结构。
6.简洁的输出格式:
输出的格式 printf(“%d:%d\n”, i, count[i]); 使得程序的输出结果清晰明了,每个数字及其出现次数都被一一列出。这里的 i 代表数字,count[i] 代表该数字的计数。输出结构简单,但能清楚地展示结果。
虽然这段代码完成了基本的统计任务,但在实际应用中,可以根据需求做一些扩展或改进:
1.输入验证:
当前程序只会处理有效的数字(0到9)。如果用户输入非数字(如字母、符号等),程序会读取失败。可以加入额外的输入验证来处理这些异常情况。
2.支持更大范围的数字:
目前程序只统计0到9之间的数字。如果想统计更大的数字,可以调整数组的大小,或者使用 哈希表(如 map 或 hash_map)来动态存储不同数字的频率,而不限制数组的大小。
3.支持负数输入:
如果希望支持负数输入并统计负数的出现次数,可以修改数组结构,将数组改为包含负数的范围,或者使用更灵活的数据结构来存储不同类型的数据。
4.处理多个用户输入:
如果要在多个不同的输入集合中分别统计,可以考虑将这个功能封装为一个函数,并对每次输入做独立的统计。