c语言算法设计:编程统计身高(单位为厘米)。统计分150-154;155-159;160-164;165-169;170-174;175-179及低于是150、高于是179共八档次进行。
时间: 2024-09-23 15:06:38 浏览: 41
华软C语言答案-实验8-数组 (2).doc
在C语言中,我们可以设计一个程序来统计一组学生的身高,并按照您提到的八档进行分类。这里是一个简单的例子,使用数组来存储数据并计算每个范围内的学生人数:
```c
#include <stdio.h>
#define MAX_STUDENTS 100 // 假设最多有100个学生
// 声明一个结构体来保存学生信息
typedef struct {
int height;
char grade[8]; // 分类数组,用于存放身高范围
} Student;
// 填充默认值的函数
void initStudent(Student* student, int height) {
student->height = height;
student->grade[0] = '\0'; // 初始分类为空
}
// 更新学生身高范围的函数
void updateGrade(Student* student, int newHeight) {
int range = (newHeight >= 170 && newHeight <= 179) ? 7 : // 最高层段
(newHeight >= 165 && newHeight <= 169) ? 6 :
(newHeight >= 160 && newHeight <= 164) ? 5 :
(newHeight >= 155 && newHeight <= 159) ? 4 :
(newHeight >= 150 && newHeight <= 154) ? 3 : // 中间层段
((newHeight > 150) ? 2 : 1); // 其他低于150或高于179的段
student->grade[range] = '1'; // 将1分配到对应位置表示已有学生
}
// 统计每个身高范围的学生人数
void countStudents(Student students[], int numStudents) {
for (int i = 0; i < numStudents; i++) {
updateGrade(&students[i], students[i].height);
}
}
// 打印统计结果
void printResults(Student students[]) {
for (int i = 0; i <= 7; i++) {
printf("150-%dcm: %c\n", (i+4)*5, students[i].grade[i]);
}
}
int main() {
Student students[MAX_STUDENTS];
int numStudents;
printf("请输入学生数量:");
scanf("%d", &numStudents);
for (int i = 0; i < numStudents; i++) {
int height;
printf("请输入学生%d的身高:", i+1);
scanf("%d", &height);
initStudent(&students[i], height);
}
countStudents(students, numStudents);
printResults(students);
return 0;
}
```
这个程序首先定义了学生的结构体,包括身高和一个用来存储身高范围分类的字符数组。`initStudent`函数初始化学生的信息,`updateGrade`函数更新学生的身高范围,`countStudents`函数遍历所有学生并更新分类,`printResults`函数展示最终的统计结果。
阅读全文