#include <stdio.h> #include <string.h> #include <stdlib.h> struct student{ char name[20]; char sex; float score; }; float avg_score(struct student *p,int n); void find_score(struct student stu[],int num,char name[]); int main(){ int n,i; printf("输入学生人数:"); scanf("%d",&n); struct student stu[n]; for(i=0;i<n;i++){ printf("\n输入第%d个学生姓名:",i+1); scanf("%s",&stu[i].name); printf("输入第%d个学生性别:",i+1); scanf(" %c",&stu[i].sex); printf("输入第%d个学生C语言成绩:",i+1); scanf("%f",&stu[i].score); } printf("平均分:%.2f\n",avg_score(stu,n)); char name[20]; printf("输入查询学生姓名:"); scanf("%s",name); find_score(stu,n,name); free(stu); return 0; } float avg_score(struct student *p,int n) { float sum = 0,avg; for (int i = 0; i < n; i++) { sum += p[i].score; } avg = sum/n; return avg; } void find_score(struct student stu[],int num,char name[]) { int i; for (i = 0; i < num; i++) { if (strcmp(name,stu[i].name) == 0) { printf("%s的C语言成绩是:%.2f\n",name,stu[i].score); break; } } if(i==num){ printf("找不到该学生\n"); } }
时间: 2023-06-17 16:08:45 浏览: 108
这是一个使用结构体的C语言程序,实现了以下两个功能:
1. 输入学生信息,包括姓名、性别和C语言成绩,计算平均分并输出。
2. 输入学生姓名,查询该学生的C语言成绩并输出。
程序中定义了一个名为student的结构体,包含了三个成员变量:姓名name、性别sex和C语言成绩score。在程序中,使用了动态内存分配来创建了一个大小为n的结构体数组stu,存储了n个学生的信息。
函数avg_score用于计算学生C语言成绩的平均分,接受一个指向结构体数组的指针p和数组大小n作为参数,返回一个float类型的平均分数。
函数find_score用于查询指定学生的成绩,接受一个结构体数组stu、数组大小num和一个char类型的字符串name作为参数,输出该学生的C语言成绩。
在程序执行完毕后,使用free函数释放了动态分配的内存。
相关问题
c语言的学生管理系统在此代码基础上写一个删除学生信息#include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> typedef struct _student{ int ID; char name[20]; char sex[5]; char Class[20]; char date[20]; char Tel[20]; char home[20]; }student; typedef struc
t _node{ student data; struct _node *next; }node; node *createList() { node *head,*p; head = p = (node*)malloc(sizeof(node)); p->next = NULL; return head; } void addStudent(node *head, student *newStu) { node *p, *q; p = head; while(p->next != NULL) { p = p->next; } q = (node*)malloc(sizeof(node)); q->data = *newStu; q->next = p->next; p->next = q; } void displayList(node *head) { node *p; p = head->next; while(p != NULL) { printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\n", p->data.ID, p->data.name, p->data.sex, p->data.Class, p->data.date, p->data.Tel, p->data.home); p = p->next; } } void deleteStudent(node *head, int ID) { node *p, *q; p = head->next; while(p != NULL && p->data.ID != ID) { q = p; p = p->next; } if(p == NULL) { printf("No student with ID %d exists.\n", ID); } else { q->next = p->next; free(p); printf("Student with ID %d has been deleted.\n", ID); } } int main() { node *head; student newStu; int choice, ID; char name[20], sex[5], Class[20], date[20], Tel[20], home[20]; head = createList(); do { printf("Menu:\n"); printf("1. Add student\n"); printf("2. Display all students\n"); printf("3. Delete student\n"); printf("4. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch(choice) { case 1: printf("Enter student ID: "); scanf("%d", &newStu.ID); printf("Enter student name: "); scanf("%s", &newStu.name); printf("Enter student sex: "); scanf("%s", &newStu.sex); printf("Enter student class: "); scanf("%s", &newStu.Class); printf("Enter student date of birth: "); scanf("%s", &newStu.date); printf("Enter student telephone number: "); scanf("%s", &newStu.Tel); printf("Enter student home address: "); scanf("%s", &newStu.home); addStudent(head, &newStu); break; case 2: displayList(head); break; case 3: printf("Enter student ID to delete: "); scanf("%d", &ID); deleteStudent(head, ID); break; case 4: printf("Exiting program...\n"); break; default: printf("Invalid choice. Please try again.\n"); break; } } while(choice != 4); return 0; }
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> struct information { int number;//学生序号 char gender[10];//学生性别 char name[10];//学生姓名 char id[20];//学生学号 char clas[40];//学生班级 }student[100]; void student_information_print(str
uct information stu[], int n) { //打印学生信息 printf("学生信息如下:\n"); printf("序号\t性别\t姓名\t学号\t\t班级\n"); for(int i=0;i<n;i++) { printf("%d\t%s\t%s\t%s\t%s\n",stu[i].number,stu[i].gender,stu[i].name,stu[i].id,stu[i].clas); } } int main() { int n;//学生人数 printf("请输入学生人数:"); scanf("%d",&n); for(int i=0;i<n;i++) { printf("请输入第%d个学生的信息:\n",i+1); printf("序号:"); scanf("%d",&student[i].number); printf("性别:"); scanf("%s",student[i].gender); printf("姓名:"); scanf("%s",student[i].name); printf("学号:"); scanf("%s",student[i].id); printf("班级:"); scanf("%s",student[i].clas); } student_information_print(student,n); return 0; }
这是一个简单的学生信息管理程序,通过结构体存储学生信息,并可以打印出所有学生信息。你可以把这段代码保存为一个 C 文件,然后使用 GCC 编译器编译运行即可。
阅读全文