c语言用指针和结构体编写程序完成实例
时间: 2024-02-23 21:58:26 浏览: 26
好的,下面我来给您编写一个用指针和结构体实现的简单程序,该程序用于存储和打印学生的基本信息。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
typedef struct Student {
char name[20];
int age;
float score;
} Student;
int main() {
Student *students[MAX_STUDENTS];
int num_students = 0;
int i;
// 读入学生信息
while (num_students < MAX_STUDENTS) {
Student *s = (Student *) malloc(sizeof(Student));
printf("输入第 %d 个学生的姓名、年龄和成绩:", num_students + 1);
scanf("%s %d %f", s->name, &s->age, &s->score);
students[num_students++] = s;
printf("是否继续输入(Y/N):");
char c;
scanf(" %c", &c);
if (c == 'N' || c == 'n') {
break;
}
}
// 打印学生信息
printf("学生信息如下:\n");
for (i = 0; i < num_students; i++) {
printf("%s %d %.1f\n", students[i]->name, students[i]->age, students[i]->score);
}
// 释放内存
for (i = 0; i < num_students; i++) {
free(students[i]);
}
return 0;
}
```
在上面的程序中,我们定义了一个 `Student` 结构体,它包含了学生的姓名、年龄和成绩。
我们使用了指针数组 `students` 来存储所有学生的信息,同时使用一个变量 `num_students` 来记录学生数量。在程序中,我们通过 `malloc` 动态分配内存来保存每个学生的信息,然后将指向这个内存的指针存储到 `students` 数组中。
在读入学生信息时,我们使用了一个循环来连续读入学生信息,当 `num_students` 达到最大值或用户输入 `N/n` 时,跳出循环。
最后,我们使用循环打印所有学生的信息,并使用 `free` 释放之前动态分配的内存。
希望这个简单的例子可以帮助您理解如何使用指针和结构体来编写程序。