C语言可以通过结构体和指针等基本语法来实现学生成绩管理系统。以下是一个简单的示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义最大学生人数
typedef struct {
char name[20];
int age;
float score;
} Student; // 学生结构体定义
int main() {
Student *students[MAX_SIZE]; // 指针数组,每个元素指向一个Student类型的结构体
int size = 0; // 学生人数
char command = '\0'; // 命令
while (command != 'q') {
printf("请输入命令:\n");
printf("a: 添加学生信息\n");
printf("s: 查询学生信息\n");
printf("d: 删除学生信息\n");
printf("u: 修改学生信息\n");
printf("q: 退出\n");
scanf(" %c", &command);
switch (command) {
case 'a':
if (size >= MAX_SIZE) {
printf("学生人数已满,无法继续添加!\n");
} else {
students[size] = (Student *)malloc(sizeof(Student)); // 动态分配内存
printf("请输入学生姓名、年龄和成绩,以空格分隔:\n");
scanf("%s%d%f", students[size]->name, &(students[size]->age), &(students[size]->score));
size++;
printf("添加成功!\n");
}
break;
case 's':
if (size == 0) {
printf("学生人数为0,无法查询!\n");
} else {
char name[20] = {'\0'};
printf("请输入要查询的学生姓名:\n");
scanf("%s", name);
int found = 0;
for (int i = 0; i < size; i++) {
if (strcmp(students[i]->name, name) == 0) { // 使用strcmp函数进行字符串比较
printf("姓名:%s,年龄:%d,成绩:%.2f\n", students[i]->name, students[i]->age, students[i]->score);
found = 1;
break;
}
}
if (!found) {
printf("未找到该学生信息!\n");
}
}
break;
case 'd':
if (size == 0) {
printf("学生人数为0,无法删除!\n");
} else {
char name[20] = {'\0'};
printf("请输入要删除的学生姓名:\n");
scanf("%s", name);
int found = 0;
for (int i = 0; i < size; i++) {
if (strcmp(students[i]->name, name) == 0) {
free(students[i]); // 释放内存
for (int j = i + 1; j < size; j++) {
students[j - 1] = students[j];
}
size--;
found = 1;
printf("删除成功!\n");
break;
}
}
if (!found) {
printf("未找到该学生信息!\n");
}
}
break;
case 'u':
if (size == 0) {
printf("学生人数为0,无法修改!\n");
} else {
char name[20] = {'\0'};
printf("请输入要修改的学生姓名:\n");
scanf("%s", name);
int found = 0;
for (int i = 0; i < size; i++) {
if (strcmp(students[i]->name, name) == 0) {
printf("请输入要修改的姓名、年龄和成绩,以空格分隔:\n");
scanf("%s%d%f", students[i]->name, &(students[i]->age), &(students[i]->score));
found = 1;
printf("修改成功!\n");
break;
}
}
if (!found) {
printf("未找到该学生信息!\n");
}
}
break;
case 'q':
printf("退出程序!\n");
break;
default:
printf("无效命令,请重新输入!\n");
break;
}
}
// 释放所有动态分配的内存
for (int i = 0; i < size; i++) {
free(students[i]);
}
return 0;
}
这个示例程序实现了添加、查询、删除、修改学生信息的功能。在程序中,使用了结构体和指针等C语言的基础语法,同时也涉及到了动态内存分配和释放等高级语法。总之,C语言作为计算机行业的核心语言,确实非常重要,无论是在操作系统、硬件驱动领域,还是在科学计算和前端开发等领域,都有广泛应用。