用链表输入一个正整数n,再输入n 个学生的学号和数学,英语,C语言成绩,要求

如题所述

#include <stdio.h>
#include <stdlib.h>

/* 一个学生的信息 */
struct Student{
int id; // 学号
double m_grade; // 数学成绩
double E_grade; // 英语成绩
struct Student *next;
};

struct Student* create_st(){
struct Student* st = (struct Student*)malloc(sizeof(struct Student));
printf(" 请输入学号: ");
scanf("%d", &(st->id));
printf("请输入数学成绩: ");
scanf("%lf", &(st->m_grade));
printf("请输入英语成绩: ");
scanf("%lf", &(st->E_grade));

printf("一个学生信息输入完毕\n");
st->next = NULL;
return st;
}

/* 学生信息统计列表(单向链表) */
struct St_list{
struct Student *head; // 指向表头部的指针
struct Student *tail; // 指向表尾部的指针
int count; // 当前列表中一共有多少个学生信息

};
/* 初始化学生表 */
void init(struct St_list *sl){
sl->head = NULL;
sl->count = 0;
}
/* 向表中添加一个学生 */
void add_st(struct St_list *sl){
if(sl->head == NULL){
sl->head = create_st();
sl->tail = sl->head;
}else{
sl->tail->next = create_st();
sl->tail = sl->tail->next;
}
sl->count++;
}
/* 显示学生表的所有信息 */
void show(const struct St_list *sl){
struct Student* st = sl->head;
while(st){
printf("学号:%3d,数学成绩:%3.2f,英语成绩:%3.2f\n",st->id, st->m_grade, st->E_grade);
st = st->next;
}
printf("一个有%d人",sl->count);
}

int main(){
int n;
printf("要建立一个学生表,需要多少人数: ");
scanf("%d",&n);
struct St_list sl;
init(&sl);
while(n){
add_st(&sl);
n--;
}
show(&sl);
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言。输入n个学生的姓名,语文,数学,英语成绩,
include <stdio.h> float average;}stu[N],temp;void main()printf("请依次输入%d个学生的姓名、语文成绩、数学成绩、英语成绩:\\n",N);scanf("%s%d%d%d",&stu[i].name,&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);stu[i].average=(stu[i].yuwen+stu[i].shuxue+stu[i].yingyu...

c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添...
\/*用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,学号,姓名,成绩(实现添加,删除,查询,排序,平均)*\/ include <stdio.h> include <iostream> include <string.h> include <stdlib.h> using namespace std;const int n=5;\/ nodeEntry : 节点数据类型 nodeADT : 节...

C语言 用指针编程,输入N个学生的成绩,对成绩进行排序,并统计及格和不及...
exit(1); \/* terminate program if out of memory *\/ } scanf("%f",&(p1->score));p1->next=NULL;\/\/最近产生的节点下一节点指向空 p2->next=p1;} return head;} \/\/显示循环链表的成员 void DisplayLink(struct Student *head){ struct Student *p;p=head;do { printf("%.1f ", ...

求以下c语言编程:一个简单的学生成绩管理系统。其中每个学生信息包括学 ...
编写函数fun1(),检查录入时的学号冲突情况,具体功能为:在录入时如果已有学号相同的学生信息,需提示用户,并允许用户重新输入信息(即用新的数据覆盖原来数据)或不重新输入的选择。对于需要重新输入信息的结点,通过函数fun2()实现,其功能为:当出现学号相同的结点时,以新的数据代替原来的数据,实现数据的更新。4)通过函...

c语言 定义一个正整数n,再输入任意n个整数,计算并输出这n个整数的和...
int n,i,sum = 0;printf("先输入个数:");scanf("%d",&n); \/\/表示输入的数的个数 int *in = (int *)malloc(sizeof(int) * n);printf("输入数:");for(i = 0;i < n;i++){ scanf("%d",in+i);} for(i = 0;i < n;i++){ sum += *(in + i);} printf("...

...编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三...
\/ 用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩 \/ \/\/FileName: stuinfo.c include <stdio.h> include <stdlib.h> include <string.h> define SERIALLEN 20 define COURSENUM 3 typedef struct { char course[SERIALLEN];float score;}...

用链表编写一个C语言程序:输入多名学生的学号,姓名和两门课的成绩,并...
C语言编程语言 用链表编写一个C语言程序:输入多名学生的学号,姓名和两门课的成绩,并实现删除和查询功能数组,链表,指针可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。c语言程序链表学生成绩

c语言求助 输入n个学生的考试成绩,求出其中最高分、最低分以及超过平均...
你想输入多少输入多少,我就输入4个分数测试。include<stdio.h>#include<malloc.h>typedef struct stud{ int score; struct stud *next;}STD;STD *insertScore(STD *stdHead,STD *stdTail);\/\/录入成绩void printfSTD(STD *stdHead);\/\/打印链表数据int *tjSTD(STD *stdHead);\/\/统计 返回...

C语言 学生成绩排序 按学生的序号输入 n 名学生的成绩,按照分数由高...
\/\/打印学生信息。参数flag=0:正常打印链表信息。flag!=0:打印排序后的名次信息int main(){ STU *stuHead=(STU *)malloc(sizeof(STU)); stuHead->next=NULL; stuIndex=1; inputStuInfo(stuHead); printf("--打印原始输入的链表!--\\n"); printStuInfo(stuHead,0); ...

在c语言程序中 ,用链表形式输入和输出学生信息,求年龄平均值_百度知 ...
printf("第%d个学生的信息(包括学号、名字、年龄):\\n",i+1);scanf("%d %s %d",&p->num,p->name,&p->age);p->next=NULL;if(head==NULL)head=p;else q->next=p;} return head;} void average(struct student *head){ double agev=0.0;struct student *p=NULL;p=head;while(p!

相似回答