编写C语言程序,输入每个学生的学号和身高,保存在二进制文件中,并统计每个身高的人数打印出来
时间: 2023-08-31 10:24:28 浏览: 136
用C语言实现的学生成绩管理程序
5星 · 资源好评率100%
### 回答1:
好的,以下是编写 C 语言程序的建议步骤:
1. 首先,包含必要的头文件,如 stdio.h 和 stdlib.h,并声明所需的函数:
```
#include <stdio.h>
#include <stdlib.h>
void saveToBinaryFile(int id, int height);
int countHeight(int height);
```
2. 然后,编写 main 函数,在其中提示用户输入学生的学号和身高,并调用 saveToBinaryFile 函数将信息保存到二进制文件中:
```
int main(void) {
int id, height;
printf("请输入学生的学号和身高:\n");
while (scanf("%d%d", &id, &height) == 2) {
saveToBinaryFile(id, height);
}
return 0;
}
```
3. 接下来,编写 saveToBinaryFile 函数,用于将学生的学号和身高保存到二进制文件中。首先,打开文件并使用 fwrite 函数将数据写入文件:
```
void saveToBinaryFile(int id, int height) {
FILE *fp = fopen("students.dat", "ab");
if (fp == NULL) {
perror("Error opening file");
return;
}
fwrite(&id, sizeof(int), 1, fp);
fwrite(&height, sizeof(int), 1, fp);
fclose(fp);
}
```
4. 最后,编写 countHeight 函数,用于统计身高为特定值的学生数量。首先,打开文件并使用 fread 函数读取文件中的数据,然后统计身高为特定值的学生数量并返回结果:
```
int countHeight(int height) {
int id, h, count = 0;
FILE *fp = fopen
### 回答2:
要编写一个C语言程序,用于输入每个学生的学号和身高,并将其保存在一个二进制文件中。同时,程序还需要统计每个身高的人数,并将结果打印出来。
程序的主要步骤如下所示:
1. 声明一个结构体来存储学生的学号和身高信息。结构体可以如下定义:
```c
typedef struct {
int 学号;
float 身高;
} 学生信息;
```
2. 在程序中,首先要初始化一个学生信息数组。这个数组大小可以根据需求设定。
```c
学生信息 学生[100];
```
3. 接着,使用循环结构,逐个输入学生的学号和身高,并将其保存在学生信息数组中。
```c
for(int i = 0; i < 100; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%d", &学生[i].学号);
printf("请输入第%d个学生的身高:", i+1);
scanf("%f", &学生[i].身高);
}
```
4. 将学生信息保存在二进制文件中。使用C标准库函数`fwrite()`可以很方便地实现。
```c
FILE *文件指针;
文件指针 = fopen("学生信息.dat", "wb");
fwrite(&学生, sizeof(学生信息), 100, 文件指针);
fclose(文件指针);
```
5. 接下来,需要统计每个身高的人数,并将结果打印出来。
```c
int 人数[100]; // 用于存储每个身高的人数
// 初始化人数数组
for(int i = 0; i < 100; i++) {
人数[i] = 0;
}
文件指针 = fopen("学生信息.dat", "rb");
if(文件指针 != NULL) {
fread(&学生, sizeof(学生信息), 100, 文件指针);
for(int i = 0; i < 100; i++) {
人数[学生[i].身高]++;
}
fclose(文件指针);
// 打印统计结果
for(int i = 0; i < 100; i++) {
if(人数[i] > 0) {
printf("身高为%.2f的人有%d个\n", i, 人数[i]);
}
}
}
```
以上就是编写C语言程序的步骤,可以通过这个程序输入每个学生的学号和身高,并将其保存在二进制文件中,并统计每个身高的人数并打印出来。
### 回答3:
编写C语言程序,输入每个学生的学号和身高,保存在二进制文件中,并统计每个身高的人数打印出来。
```c
#include <stdio.h>
struct Student {
int studentId;
float height;
};
int main() {
FILE *file;
struct Student student;
int count[101] = {0}; // 身高的人数计数,数组大小为最大身高数加1
// 打开文件
file = fopen("student_data.bin", "wb");
if (file == NULL) {
printf("文件打开失败\n");
return 1;
}
// 输入学生信息,并保存在文件中
while (1) {
printf("请输入学生的学号和身高(输入0结束输入):\n");
scanf("%d", &(student.studentId));
if (student.studentId == 0) {
break;
}
scanf("%f", &(student.height));
fwrite(&student, sizeof(struct Student), 1, file);
// 统计身高的人数
int heightIndex = (int)(student.height);
count[heightIndex]++;
}
// 关闭文件
fclose(file);
// 打印每个身高的人数
printf("\n每个身高的人数统计如下:\n");
for (int i = 1; i <= 100; i++) {
if (count[i] > 0) {
printf("身高为 %d 的人数为 %d\n", i, count[i]);
}
}
return 0;
}
```
这个程序中,我们首先定义了一个结构体 `Student` ,包括学生的学号和身高。在 `main` 函数中,我们使用 `FILE` 结构体指针打开一个二进制文件,并定义了一个数组 `count` 来统计每个身高的人数。
接下来,我们通过循环不断输入学生的学号和身高,将其保存在文件中。同时,我们还根据学生的身高,更新相应身高的人数计数。
当输入学号为0时,结束输入。然后我们关闭文件,并打印出每个身高的人数统计结果。
阅读全文