void addRecord() { if(studentCount==100) { printf("已达到最大学生数量,无法添加更多成绩!\n"); return; } struct Student newStudent; printf("请输入学生的学号:"); scanf("%d", &newStudent.id); printf("请输入学生的姓名:"); scanf("%s", newStudent.name); printf("请输入学生的三门课成绩,用空格分隔:"); scanf("%d %d %d",&newStudent.scores[0],&newStudent.scores[1],&newStudent.scores[2]); newStudent.average =(float)(newStudent.scores[0]+newStudent.scores[1]+newStudent.scores[2])/3; students[studentCount]=newStudent; studentCount++; printf("成绩添加成功!\n"); }的算法思想
时间: 2023-06-27 11:04:37 浏览: 102
该函数的算法思想为:
1. 判断学生数量是否达到上限100,如果达到,输出提示信息并结束函数。
2. 定义一个新的学生结构体变量newStudent。
3. 分别输入新学生的学号、姓名和三门课成绩(使用scanf函数)。
4. 计算新学生的平均成绩(三门课成绩之和除以3)。
5. 将新学生的信息添加到学生数组students中,并将学生数量studentCount加1。
6. 输出添加成功的提示信息。
该算法实现了添加学生的功能,通过输入学生的信息,将学生的信息存储在一个结构体数组中。
相关问题
创建一个c语言程序学生成绩管理系统包括添加学生成绩,查询学生成绩,更新学生成绩,统计学生成绩,输出学生成绩,退出系统
好的,以下是一个简单的 C 语言学生成绩管理系统的代码示例,包括添加学生成绩,查询学生成绩,更新学生成绩,统计学生成绩,输出学生成绩,退出系统等功能。
```
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[50];
int roll;
float marks;
} s;
void addRecord() {
FILE *fptr;
fptr = fopen("database.txt", "a");
printf("Enter name: ");
scanf("%s", s.name);
printf("Enter roll number: ");
scanf("%d", &s.roll);
printf("Enter marks: ");
scanf("%f", &s.marks);
fprintf(fptr, "%s %d %.2f\n", s.name, s.roll, s.marks);
fclose(fptr);
}
void searchRecord() {
FILE *fptr;
int r, flag = 0;
fptr = fopen("database.txt", "r");
printf("Enter roll number to search: ");
scanf("%d", &r);
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
if (s.roll == r) {
printf("Name: %s\nRoll number: %d\nMarks: %.2f\n", s.name, s.roll, s.marks);
flag = 1;
}
}
fclose(fptr);
if (flag == 0) {
printf("Record not found!\n");
}
}
void updateRecord() {
FILE *fptr, *fptr2;
int r, flag = 0;
fptr = fopen("database.txt", "r");
fptr2 = fopen("temp.txt", "w");
printf("Enter roll number to update: ");
scanf("%d", &r);
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
if (s.roll == r) {
printf("Enter new name: ");
scanf("%s", s.name);
printf("Enter new marks: ");
scanf("%f", &s.marks);
fprintf(fptr2, "%s %d %.2f\n", s.name, s.roll, s.marks);
flag = 1;
}
else {
fprintf(fptr2, "%s %d %.2f\n", s.name, s.roll, s.marks);
}
}
fclose(fptr);
fclose(fptr2);
remove("database.txt");
rename("temp.txt", "database.txt");
if (flag == 0) {
printf("Record not found!\n");
}
}
void countRecord() {
FILE *fptr;
int count = 0;
float total = 0, avg;
fptr = fopen("database.txt", "r");
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
count++;
total += s.marks;
}
fclose(fptr);
avg = total / count;
printf("Total students: %d\n", count);
printf("Average marks: %.2f\n", avg);
}
void displayRecord() {
FILE *fptr;
fptr = fopen("database.txt", "r");
printf("Name\tRoll\tMarks\n");
while (fscanf(fptr, "%s %d %f\n", s.name, &s.roll, &s.marks) != EOF) {
printf("%s\t%d\t%.2f\n", s.name, s.roll, s.marks);
}
fclose(fptr);
}
int main() {
int ch;
while (1) {
printf("\n1. Add record\n");
printf("2. Search record\n");
printf("3. Update record\n");
printf("4. Count record\n");
printf("5. Display record\n");
printf("6. Exit\n");
printf("Enter your choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
addRecord();
break;
case 2:
searchRecord();
break;
case 3:
updateRecord();
break;
case 4:
countRecord();
break;
case 5:
displayRecord();
break;
case 6:
exit(0);
default:
printf("Invalid choice!\n");
}
}
return 0;
}
```
注意:该程序只是一个简单的示例,实际应用中还需要进行错误处理、数据验证等工作。
用c语言写学生成绩单科管理系统
在C语言中编写一个学生成绩单科管理系统,可以分为以下几个步骤:
1. 定义数据结构:首先,我们需要创建一个数据结构来存储学生信息,如学号、姓名和各科成绩。可以使用结构体(struct)来定义这个模型。
```c
typedef struct {
int student_id;
char name[50];
float scores[5]; // 假设最多5门课程
} StudentRecord;
```
2. 输入与显示:设计函数来接收用户输入,包括学生的个人信息和各科成绩,并打印出完整的成绩单。
```c
void input(StudentRecord *record) {
printf("请输入学号:");
scanf("%d", &record->student_id);
printf("请输入姓名:");
fgets(record->name, sizeof(record->name), stdin); // 注意处理换行符
for (int i = 0; i < 5; i++) {
printf("请输入第%d门课的成绩:", i+1);
scanf("%f", &record->scores[i]);
}
}
void display(StudentRecord record) {
printf("学号:%d\n姓名:%s\n", record.student_id, record.name);
printf("各科成绩:\n");
for (int i = 0; i < 5; i++) {
printf("第%d门课:%f\n", i+1, record.scores[i]);
}
}
```
3. 管理功能:提供添加新记录、删除记录和查询成绩等功能。
```c
void addRecord(StudentRecord records[], int *size) {
if (*size >= MAX_SIZE) return; // 如果已达最大容量
records[*size] = input_getStudentRecord(); // 获取新记录并添加到数组
(*size)++;
}
// 其他类似功能...
```
4. 主程序循环:在主函数中不断接受用户的命令,调用相应的管理函数。
```c
int main() {
StudentRecord records[MAX_SIZE];
int size = 0;
while (true) {
printf("请选择操作:1. 添加记录 2. 查看记录 3. ... \n");
// 根据用户选择调用对应函数
// 退出条件或其它处理...
}
return 0;
}
```
注意:这只是一个简单的示例,实际项目中需要考虑更多的边界情况以及错误处理。此外,上述代码未涉及文件I/O,如果需要持久化存储数据,还需要结合文件操作。
阅读全文