建立一个学生信息结构体数组,包括学号num,姓名name[10],年龄age性别sex(F/M)。要求通过函数input输入4个数据记录,并且在main函数中输出这4个学生的信息。
时间: 2024-02-24 20:00:23 浏览: 37
好的,我可以帮你写这个程序。以下是代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[10];
int age;
char sex;
};
void input(struct student *s) {
printf("请输入学生的学号、姓名、年龄、性别(F/M):\n");
scanf("%d %s %d %c", &s->num, s->name, &s->age, &s->sex);
}
int main() {
struct student s[4];
for (int i = 0; i < 4; i++) {
input(&s[i]);
}
printf("学生信息如下:\n");
for (int i = 0; i < 4; i++) {
printf("%d %s %d %c\n", s[i].num, s[i].name, s[i].age, s[i].sex);
}
return 0;
}
```
程序运行时,会先调用 input 函数输入 4 个学生的信息,然后在 main 函数中输出这 4 个学生的信息。注意,我们在 input 函数中使用了指针来修改结构体数组的元素,这样可以避免在函数中复制整个结构体数组,从而提高程序的效率。
相关问题
用C语言建立一个学生信息结构体数组,包括学号num,姓名name[10],年龄age性别sex(F/M)。要求通过函数input输入4个数据记录,并且在main函数中输出这4个学生的信息。输入输出示例: 输入:01 abc 18 M 02 cde 19 F 03 fgh 19 M 04 ijk 17 F 输出:num name age sex 01 abc 18 M 02 cde 19 F 03 fgh 19 M 04 ijk 17 F
好的,这是一道简单的 C 语言题目,我可以帮你解答。
首先,我们需要定义一个结构体,来存储学生的信息:
```c
struct student {
int num;
char name[10];
int age;
char sex;
};
```
然后,我们可以在 main 函数中定义一个包含 4 个学生信息的数组:
```c
int main() {
struct student stu[4];
// ...
}
```
接下来,我们需要编写一个函数 input,用来输入 4 个学生信息:
```c
void input(struct student stu[]) {
int i;
for (i = 0; i < 4; i++) {
scanf("%d%s%d %c", &stu[i].num, stu[i].name, &stu[i].age, &stu[i].sex);
}
}
```
最后,我们在 main 函数中调用 input 函数,然后输出每个学生的信息:
```c
int main() {
struct student stu[4];
input(stu);
int i;
printf("num name age sex\n");
for (i = 0; i < 4; i++) {
printf("%02d %-10s %02d %c\n", stu[i].num, stu[i].name, stu[i].age, stu[i].sex);
}
return 0;
}
```
注意,我在输出时使用了 %02d 和 %-10s,这是为了让输出更加美观。%02d 表示输出一个 2 位的整数,不足 2 位时在前面补 0;%-10s 表示输出一个长度为 10 的字符串,不足 10 个字符时在后面补空格。
完整代码如下:
在VS中编写以下代码,定义一个学生(Student)结构体类型,学号num,姓名name,性别sex,年龄age,采用fputs和fgets函数将信息写入到student.dat文件中,然后读取文件在屏幕中显示出来。
好的,以下是代码实现:
```c
#include <stdio.h>
// 定义学生结构体类型
typedef struct {
int num;
char name[20];
char sex[5];
int age;
} Student;
int main() {
Student stu;
FILE *fp;
// 打开文件,写入学生信息
fp = fopen("student.dat", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
fputs("学号 姓名 性别 年龄\n", fp);
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &stu.num);
printf("姓名:");
scanf("%s", stu.name);
printf("性别:");
scanf("%s", stu.sex);
printf("年龄:");
scanf("%d", &stu.age);
fprintf(fp, "%d %s %s %d\n", stu.num, stu.name, stu.sex, stu.age);
fclose(fp);
// 打开文件,读取学生信息
fp = fopen("student.dat", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
printf("\n学生信息:\n");
while (fgets(stu.name, sizeof(stu), fp) != NULL) {
printf("%s", stu.name);
}
fclose(fp);
return 0;
}
```
代码解释:
1. 首先定义了一个学生结构体类型,包括学号、姓名、性别和年龄。
2. 然后在 `main` 函数中,先定义了一个 `Student` 类型的变量 `stu` 和一个文件指针 `fp`。
3. 接着打开文件 `student.dat`,以写入的方式将学生信息写入文件中,这里用到了 `fputs` 函数和 `fprintf` 函数。
4. 然后通过 `scanf` 函数从键盘上输入学生信息,并将其写入到文件中。
5. 再次打开文件 `student.dat`,以读取的方式将文件中的学生信息读取出来,这里用到了 `fgets` 函数。
6. 最后将学生信息输出到屏幕上。
注意事项:
1. 在使用 `fgets` 函数读取文件时,要注意每一行字符串的长度不能超过 `sizeof(stu)`。
2. 在读取文件时,要注意文件指针的位置,如果没有将文件指针指向文件开头,可能会读取不到数据。