编写C语言程序,输入每个学生的学号和身高,保存在二进制文件中
时间: 2023-01-31 12:22:37 浏览: 161
下面是一个示例代码,可以帮助您编写 C 语言程序,输入每个学生的学号和身高,并将其保存在二进制文件中:
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
struct student
{
int id;
float height;
};
int main()
{
// 定义学生结构体数组,并初始化
struct student students[] = {
{1, 1.75},
{2, 1.80},
{3, 1.65}
};
// 打开二进制文件,并写入数据
FILE *fp = fopen("students.bin", "wb");
if (fp == NULL)
{
printf("Error opening file!\n");
exit(1);
}
fwrite(students, sizeof(struct student), 3, fp);
fclose(fp);
return 0;
}
在这个代码中,我们定义了一个学生结构体,并创建了一个学生结构体数组,其中包含三个学生的信息。然后,我们使用 fopen 函数打开了一个二进制文件,并使用 fwrite 函数将学生结构体数组写入文件中。最后,使用 fclose 函数关闭文件。
希望这能帮到您!
相关问题
编写C语言程序,输入每个学生的学号和身高,保存在二进制文件中,并统计每个身高的人数打印出来
### 回答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时,结束输入。然后我们关闭文件,并打印出每个身高的人数统计结果。
编写程序,输入输出自己学号,要求输出学号为二进制。变量常量,c语言
在C语言中,编写一个简单的程序来读取用户输入的学号,并将其转换为二进制形式,你可以使用`stdio.h`库处理输入输出,以及`bitset`库来进行二进制转换。如果没有`bitset`库,你需要自己手动编写转换函数。
以下是一个基本的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 引入stdlib库用于整数到字符串转换
// 自己定义一个函数,将十进制转为二进制字符串
char* decimal_to_binary(int num) {
char binary[32]; // 存储最多31位二进制数
int i = 0;
while (num > 0) {
binary[i++] = num % 2 + '0';
num /= 2;
}
binary[i] = '\0'; // 添加终止符
return binary; // 返回结果
}
int main() {
int student_id;
printf("请输入你的学号:");
scanf("%d", &student_id); // 从键盘获取输入
// 转换并打印学号的二进制表示
char *binary_str = decimal_to_binary(student_id);
printf("你的学号(二进制)为:%s\n", binary_str);
free(binary_str); // 释放动态内存
return 0;
}
```
阅读全文