c语言如何对一个数组进行分类统计
时间: 2023-06-07 08:07:34 浏览: 134
您可以使用计数排序(Counting Sort)算法对一个数组进行分类统计。具体步骤如下:
1. 找到数组中的最大值max和最小值min
2. 创建一个大小为(max-min+1)的计数数组count,将所有元素的计数初始化为0
3. 遍历数组,将每个元素的计数增加到对应的计数数组中
4. 遍历计数数组,将元素和元素出现的次数重新填回原数组。这里需要注意的是,如果有多个元素出现次数相等,则必须按照它们在原数组中的顺序填回去,以保证排序的稳定性。
经过上述步骤,您就可以得到一个按照元素值从小到大排列的数组。同时,您也可以根据计数数组的不同位置,得到不同元素值的个数、比例等统计信息。
相关问题
c语言如何对一个数组进行分类统计的代码
以下是针对数组进行分类统计的 C 语言代码:
```c
#include <stdio.h>
int main() {
int arr[10] = {1, 2, 3, 3, 3, 2, 4, 5, 5, 5}; // 定义一个长度为 10 的整型数组
int count[6] = {0}; // 定义一个长度为 6 的整型数组
for(int i = 0; i < 10; i++) {
count[arr[i]]++; // 数组中对应的位置自增
}
for(int i = 1; i <= 5; i++) {
printf("%d 出现的次数:%d\n", i, count[i]); // 输出每个数字出现的次数
}
return 0;
}
```
这个程序定义了一个长度为 10 的整型数组,然后用一个长度为 6 的整型数组对其进行分类统计。对于数组中的每个元素,将其对应的位置自增。最后依次输出每个数字出现的次数。
C语言写一个统计各个年龄阶段的人数
### 回答1:
好的,我可以回答您的问题。以下是C语言编写的统计各个年龄阶段的人数的代码:
```c
#include <stdio.h>
int main() {
int age, count_child = 0, count_youth = 0, count_middle = 0, count_old = 0;
printf("请输入一组数字,用空格隔开,代表每个人的年龄:\n");
while (scanf("%d", &age) != EOF) {
if (age < 18) {
count_child++;
} else if (age >= 18 && age < 40) {
count_youth++;
} else if (age >= 40 && age < 60) {
count_middle++;
} else {
count_old++;
}
}
printf("18岁以下的人有%d个\n", count_child);
printf("18岁到40岁之间的人有%d个\n", count_youth);
printf("40岁到60岁之间的人有%d个\n", count_middle);
printf("60岁及以上的人有%d个\n", count_old);
return 0;
}
```
您可以在程序中输入年龄,以空格隔开,程序将统计出年龄在不同阶段的人数并输出。希望能够帮到您。
### 回答2:
对于这个问题,我将使用C语言编写一个程序来统计不同年龄阶段的人数。以下是代码示例:
```c
#include <stdio.h>
int main() {
int age, count1=0, count2=0, count3=0, count4=0;
printf("请输入人数的年龄(以-1结束):\n");
while (1) {
printf("年龄:");
scanf("%d", &age);
if (age == -1) {
break;
}
if (age >= 0 && age <= 18) {
count1++;
}
else if (age >= 19 && age <= 35) {
count2++;
}
else if (age >= 36 && age <= 50) {
count3++;
}
else if (age >= 51) {
count4++;
}
}
printf("0-18岁的人数:%d\n", count1);
printf("19-35岁的人数:%d\n", count2);
printf("36-50岁的人数:%d\n", count3);
printf("51及以上岁的人数:%d\n", count4);
return 0;
}
```
这个程序首先会提示用户输入人数的年龄,并且以-1来表示输入结束。然后,通过一个while循环,不断读取用户输入的年龄,根据年龄的范围累加计数器的值。在循环结束后,程序会打印出不同年龄阶段的人数。
希望这个回答对你有帮助!
### 回答3:
要统计各个年龄阶段的人数,可以使用C语言编写一个程序来实现。具体步骤如下:
1. 定义一个结构体来存储每个人的信息,包括姓名和年龄。
```c
typedef struct {
char name[50];
int age;
} Person;
```
2. 声明一个数组来存储多个Person结构体,表示所有人的信息。
```c
Person people[100];
```
3. 声明一个整数数组来统计各个年龄阶段的人数。
```c
int count[5] = {0, 0, 0, 0, 0};
```
4. 通过用户输入来录入人员信息,直到输入结束为止。
```c
int i = 0;
while (1) {
printf("请输入姓名和年龄(以空格分隔): ");
scanf("%s %d", people[i].name, &people[i].age);
if (people[i].age == -1) {
break;
}
i++;
}
```
5. 根据每个人的年龄,将其分类到相应的年龄阶段里,并统计人数。
```c
for (int j = 0; j < i; j++) {
if (people[j].age >= 0 && people[j].age < 20) {
count[0]++;
} else if (people[j].age >= 20 && people[j].age < 30) {
count[1]++;
} else if (people[j].age >= 30 && people[j].age < 40) {
count[2]++;
} else if (people[j].age >= 40 && people[j].age < 50) {
count[3]++;
} else if (people[j].age >= 50) {
count[4]++;
}
}
```
6. 输出各个年龄阶段的人数。
```c
printf("0-20岁的人数:%d\n", count[0]);
printf("20-30岁的人数:%d\n", count[1]);
printf("30-40岁的人数:%d\n", count[2]);
printf("40-50岁的人数:%d\n", count[3]);
printf("50岁以上的人数:%d\n", count[4]);
```
通过以上步骤,就可以编写一个C语言程序来统计各个年龄阶段的人数。